ELK需要收集多种类型日志,并且在kibana分开使用不同索引相关配置
logstash分别收集tomcat,nginx日志
input {
beats {
port => 5044
}
}
filter {
#根据type字段来区分日志,在filebeat配置字段为 document_type
if [type] == "nginx" {
grok {
patterns_dir => ["/etc/logstash/patterns"]
match => {
"message" => "%{NGINX_COMMONLOG}"
}
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
}
}
if [type] == "tomcat_access" {
grok {
patterns_dir => ["/etc/logstash/patterns"]
match => {
"message" => "%{COMMONAPACHELOG}"
}
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
}
}
}
output {
if [type] == "nginx" {
#判断nginx响应码,保存5XX,4XX的消息
if [response] =~ /^5\d\d/ or [response] =~ /^4\d\d/ {
elasticsearch {
hosts => ["127.0.0.1:9200"]
#指定索引名,在kibana创建索引使用 nginx-*
index=>"nginx-%{+YYYY.MM.dd}"
}
}
}
if [type] == "tomcat_access" {
elasticsearch {
hosts => ["127.0.0.1:9200"]
#指定索引名,在kibana创建索引使用 tomcat_access-*
index=>"tomcat_access-%{+YYYY.MM.dd}"
}
}
}
filebeat配置,配置不同的document_type字段来区分日志类型
filebeat.prospectors:
- input_type: log
#不同的日志配置不同的 document_type, 如果是tomcat日志可以配置为tomcat_access
document_type: nginx
paths:
- /data/logs/info.log
output.logstash:
hosts: ["18.18.18.18:5046"]
网友评论