Logstash实践
#下载地址
https://mirrors.huaweicloud.com/logstash/
#在线gork正则的地址:http://grokdebug.herokuapp.com/
#Logstash基础正则地址:https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
input {
file {
#path => "D:/123.log"
#监听文件的多个路径
path => ["D:/123.log"]
#排除不想监听的文件
exclude => "1.log"
type => "file_monitor"
#添加自定义的字段
add_field => {"test"=>"test"}
#增加标签
tags => ["有用的","标识用的"]
#设置新事件的标志
#delimiter => "aaa"
#设置多长时间扫描目录,发现新文件
discover_interval => 15
#设置多长时间检测文件是否修改
stat_interval => 1
#监听文件的起始位置,默认是end
start_position => beginning
#监听文件读取信息记录的位置
sincedb_path => "D:/1234.log"
#设置多长时间会写入读取的位置信息
sincedb_write_interval => 15
#codec => multiline {
#pattern => "^\d"
#negate => true
#what => "previous"
#}
}
}
filter{
#从message中提取字段;172.16.213.132 [07/Feb/2018:16:24:19 +0800]"GET /HTTP/1.1" 403 5039
grok{
match => {
"message" => "%{IPV4:ip}\ \[%{HTTPDATE:timestamp}\]"
}
}
#@timestamp默认取系统当前时间;date插件用来转换日志记录中的时间字符串,变成Logstash::Timestamp对象,然后转存到@timestamp字段里面
date{
match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
}
}
output {
file {
path => "D:/123.txt"
#codec => line { format => "%{message}"}
#codec => "rubydebug"
}
}
eg1:
11-18 13:01:40.032 INFO [DefaultQuartzScheduler_Worker-1] - com.hh.aic.artistic.timing.UrlDumpJob |43 :
(?<logDate>%{MONTHNUM}[/-]%{MONTHDAY} (?:%{TIME}))\s*%{LOGLEVEL:logLevel}\s*\[%{USERNAME:threadName}\] - %{USERNAME:className}\s*\|%{BASE10NUM:classLine}\s*: