logstash.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
file {
# 支持glob(不管Linux还是Windows一定要使用/,否则监控不到文件)
path => ["D:/WWW/api/storage/logs/*.log", "D:/WWW/api/storage/logs/master/*.log"]
# 从什么位置开始读取文件数据 beginning end
start_position => "beginning"
# 示了针对多久的文件进行监控,默认一天,单位为秒(开启这个参数=0就监控不到文件了,不知道为什么 别开就对了)
#ignore_older => 0
# 每隔多久去检查一次被监听的 path 下是否有新文件。默认值是 15 秒
discover_interval => 10
# 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒
stat_interval => 1
# 每隔多久写一次 sincedb 文件,默认是 15 秒
sincedb_write_interval => 10
# 通过这个配置定义 sincedb 文件到其他位置
#sincedb_path => "D:/elk/logstash-8.8.1/sincedb.txt"
# 设置新事件的标志
#delimiter => "\n"
# 定义类型
#type => "logs"
}
}
filter {
# 获取文件名称
ruby {
code => "
path = event.get('log')['file']['path']
#puts format('path = %<path>s', path: path)
if (!path.nil?) && (!path.empty?)
event.set('filename', path.split('/')[-1])
end
"
}
# 处理日志时间
if [filename] =~ "lumen" {
#mutate { replace => { type => "lumen" } }
ruby {
code => "
if match = event.get('message').match(/^\[([0-9\-: ]+)\]/i)
event.set('logtime', match[1])
end
"
}
} else if [filename] =~ "master" {
#mutate { replace => { type => "master" } }
ruby {
code => "
if match = event.get('message').match(/^{\"time\":\"(([0-9\-: ]+)\.(\d+))\"/i)
event.set('logtime', match[2])
event.set('logtime_u', match[1])
end
"
}
}
# 丢掉空行
if [message] =~ /^\s*$/ {
drop { }
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
#index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
index => "%{filename}"
#user => "elastic"
#password => "changeme"
}
#stdout { }
}
- Prev: golang excel
- Next: fix 商品超卖