2020-09-23 04:00:00 Local7.Info 10.0.1.22 Sep 23 04:00:19 src@Master-AD-9000-H-wit : [2020-09-23_04-00-19] NAT_LOG_DEL_ENTRY [udp]10.99.31.22:7335(113.57.168.162:7335) -> 39.65.223.170:41267(39.65.223.170:41267)
上面一行数据是我的log数据,我想把这条数据保存到es中,只保留指定数据,且数据保存到es中需要mapping
请问这种情况下 logstash怎么写配置文件
这是grok自带的正则地址:https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
写了个示例。正则挺耗资源的,注意你的写入速率哈。
input {
file {
path => ["/opt/test/test.log"]
start_position => beginning
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => previous
}
}
}
filter{
grok{
match => {"message" => ".*?\[%{YEAR:year}-%{MONTHNUM2:month}-%{MONTHDAY:day}_(?<time>(?:%{HOUR}-%{MINUTE}-%{SECOND}))\].*?%{IP:innerIp}:%{POSINT:innerPort}\(%{IP:natIp}:%{POSINT:natPort}\).*?%{IP:outIp}:%{POSINT:outPort}\(%{IP:outIp2}:%{POSINT:outPort2}\)"}
}
mutate {
remove_field => ["message"]
remove_field => ["path"]
remove_field => ["host"]
}
}
output {
stdout {}
# elasticsearch {
# hosts => ["http://192.168.0.153:9200"]
# index => "_test-%{+YYYY.MM.dd}"
# }
}
您好 我这样配置,在/opt/test/test.log里放入测试数据,并没有任何数据输出到stdout,不知道您那边测试有没输出!
@redhat_natwork: 开头空一行
@WMG-Eight:
您好,这是我当前配置 开头已经空了一行,测试还是没有输出。
@redhat_natwork:
1.检查下你logstash配置,logstash.yml或者你单独在pipeline.yml里配置的path.data路径,然后去对应路径下,正常里面会有/plugins/inputs/file,这里保存的是你读取文件的位置,比如你当前读取*。log,它会记录你读取到哪一行了,大概这个意思,你想让它每次从头读取文件,配置文件里写了start-position以外,需要注意把这个data下对应的删了,不然你上次读文件已经结束了,就算这个重启logstahs也不会从头读的。
2.你启动logstash不要后台启动,就直接在安装目录下执行./bin/logstash 看它打印出来的启动日志有没有问题。
@WMG-Eight: 已经可以了,谢谢大哥!
@redhat_natwork: 您好 可以加下您QQ么,或者您加我QQ641269996 谢谢!
非常感谢大哥的指导!
– redhat_natwork 3年前