前两天把Nginx日志收集,感觉效果不错

虽然还有更多可以玩的但先这样

这回是收集Java的日志,我们使用的是Tomcat

Tomcat一启动就会向catalina.out中不停的写入日志

因为之前没收集过,网上找了下文档

思路就是使用multiline,使他去匹配

匹配到在写入Elasticsearch集群中

这个没什么好说的,直接上Logstash中java.conf配置文件

所有Logstash的文件在

/etc/logstash

收集日志的单独配置文件写在

/etc/logstash/conf.d/下

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
input {
file {
path => "/usr/local/tomcat/logs/catalina.out" Tomcat日志位置
type => "javalog" 类型
start_position => "beginning"
stat_interval => "2"
codec => multiline {
pattern => "^2018" 这块是匹配日志开头的内容,匹配到传到es中
negate => true
what => "previous"
}
}
}

output {
if [type] == "javalog" {
elasticsearch {
hosts => ["192.168.10.159:9200"]
index => "java-log-%{+YYYY.MM.dd}"
}}

}

中间碰到的坑

  • 有一篇文档input中codec写成了code,看了10多分钟日志才发现
  • 另外一个就是匹配哪里,大多数文档写的 ^[ 因为他们的日志都是[开头的,我写的时候修改后但加入了 \ 会报错取消掉就没问题
  • 另外这只是普通的日志,项目中还有错误日志
  • 错误日志问了相关人员,直接匹配java开头即可 (根据个人去修改吧)

先这样,暂时够用的