我们在上一章说了收集log4j日志,我们说一下收集tomcat日志,和log4j差不多,也是使用Filebeat 7.12。下载安装看上一篇,这篇只说配置
配置filebeat
在配置文件中修改filebeat.input,此处我们收集了两种日志,一种log4j,一种是tomcat日志,所以我们配置了两个-type:log,注意前面一定要加“-”,而且这几项是有层级关系的,否则启动会报错
- type: log
# Change to true to enable this input configuration.
# enabled: false
# Paths that should be crawled and fetched. Glob based paths.
paths:
- C:\log\*
fields:
doc_type: log4j
#- c:\programdata\elasticsearch\logs\*
- type: log
paths:
- D:\work\TOMCAT\apache-tomcat-8.5.35-8080\logs\localhost*.log
fields:
doc_type: tomcat
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
fields: doc_type 区分了两种日志的索引
multiline的三个参数是用来收集tomcat控制台输出的异常日志的,也就是多行合并成一组的日志。
日志还是给logstash,filebeat就配置好了
配置logstash
input {
beats {
port => 9601 #注意要和filebeat的输出端口一致
}
}
filter {
if [fields][doc_type] == 'log4j' {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{JAVALOGMESSAGE:msg}" }
}
}
if [fields][doc_type] == 'tomcat' {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{JAVALOGMESSAGE:msg}" }
}
}
}
output {
if [fields][doc_type] == "log4j" {
elasticsearch {
hosts => [ "127.0.0.1:9200" ]
index => "log4j-%{+YYYY.MM.dd}"
}
}
if [fields][doc_type] == "tomcat" {
elasticsearch {
hosts => [ "127.0.0.1:9200" ]
index => "tomcat-%{+YYYY.MM.dd}"
}
}
#同时输出日志到控制台
stdout { codec => rubydebug }
}
logstash配置好了
Elasticsearch、Kibana、Logstash看第一篇文章
将Elasticsearch、Logstash、Kibana、Filebeat全部启动,Logstash命令框会输出已经有的log文件信息和tomcat信息
我们在Kibana中看一下http://localhost:5601/,索引名称是tomcat和log4j
在tomcat日志中可以看到我们的一个空指针的异常完全被记录
springMVC搭建ELK-收集tomcat日志完毕
不完美的就是没有把内容按每个字段都分解开。