Expand code
### logstash
input {
# bole-nginx
redis {
data_type =>"list"
key =>"bole-nginx_logs"
host =>"redis"
port => 6379
password => "password"
db => 0
type => nginx_logs
}
# master-tomcat
redis {
data_type =>"list"
key =>"bole-tomcat_logs"
host =>"redis"
port => 6379
password => "password"
db => 0
type => tomcat_logs
}
}
filter {
if [type] in "nginx_logs" {
geoip {
#multiLang => "zh-CN"
target => "geoip"
source => "client_ip"
#database => "/opt/logstash-7.3.1/GeoLite2-City.mmdb"
database => "/usr/share/logstash/GeoLite2-City.mmdb"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
# 去掉显示 geoip 显示的多余信息
remove_field => ["[geoip][latitude]", "[geoip][longitude]", "[geoip][country_code]", "[geoip][country_code2]", "[geoip][country_code3]", "[geoip][timezone]", "[geoip][continent_code]", "[geoip][region_code]"]
}
mutate {
convert => [ "size", "integer" ]
convert => [ "status", "integer" ]
convert => [ "responsetime", "float" ]
convert => [ "upstreamtime", "float" ]
convert => [ "[geoip][coordinates]", "float" ]
# 过滤 filebeat 没用的字段,这里过滤的字段要考虑好输出到es的,否则过滤了就没法做判断
remove_field => [ "ecs","agent","host","cloud","@version","input","logs_type" ]
}
# 根据http_user_agent来自动处理区分用户客户端系统与版本
useragent {
source => "http_user_agent"
target => "ua"
# 过滤useragent没用的字段
remove_field => [ "[ua][minor]","[ua][major]","[ua][build]","[ua][patch]","[ua][os_minor]","[ua][os_major]" ]
}
}
if [type] in "tomcat_logs" {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:access_time}\s+\[(?<level>[\s\S]*)\]\s+\[%{DATA:exception_info}\](?<content>[\s\S]*)" }
}
date {
match => [ "access_time","MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]
}
mutate {
# 过滤 filebeat 没用的字段,这里过滤的字段要考虑好输出到es的,否则过滤了就没法做判断
remove_field => [ "ecs","agent","host","cloud","@version","message","input" ]
}
}
}
output {
# 收集服务器 nginx 日志
if [type] in "nginx_logs" {
elasticsearch {
hosts => "es-master"
user => "elastic"
password => "password"
index => "logstash-nginx-%{+YYYY.MM.dd}"
}
}
# 收集服务器 tomcat 日志
if [type] in "tomcat_logs" {
elasticsearch {
hosts => "es-master"
user => "elastic"
password => "password"
index => "logstash-tomcat-%{+YYYY.MM.dd}"
}
}
}