编辑:尝试观看Magento报告日志。每次发生异常时,Magento都会将其崩溃报告写入新文件。
根据Logstash官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html 选项dicover_interval表示"我们在路径选项中扩展文件名模式的频率(以秒为单位),以发现要观看的新文件。"
问题:每次发生新异常时,我都有一个系统将其日志写入新文件(文件名是例外号码)。但是,Logstash在启动时开始观看现有文件,但我无法让Logstash读取新文件。
我的conf文件:
input {
file {
type => "error-report-log"
path => "/srv/www/var/report"
#start_position => "beginning"
ignore_older => 30
close_older => 30
discover_interval => 5
codec => multiline {
pattern => "."
what => "previous"
}
}
}
正如您所看到的,我尝试过discover_interval而没有运气。新文件没有被监视。
我错过了什么或者Logstash根本不支持这种行为吗?
提前致谢。
答案 0 :(得分:1)
我猜你错过了file
中的sincedb_path。如果你有这样的输入怎么办:
input {
file {
type => "error-report-log"
path => "/srv/www/var/report"
sincedb_path => "/dev/null" <-- add this line
start_position => "beginning" <-- uncomment this
ignore_older => 0 <-- change it to zero
codec => multiline {
pattern => "."
what => "previous"
}
}
获得后,logstash应该选择正在添加的任何新行或新文件。
答案 1 :(得分:0)
解决方案:使用 Filebeat 并通过Logstash传递日志是一种更好的方法:
filebeat:
prospectors:
-
input_type: log
scan_frequency: 5s
paths:
- /srv/www/var/report/*
fields:
app_id: "${APP_ID}"
type: error-report-log
multiline:
pattern: '^\$'
negate: true
match: after
output:
logstash:
enabled: true
hosts: ["my.logstash.com:5044"]
此解决方案已使用 Magento 2 进行测试。
Magento 2每次都将其异常/崩溃报告写入新文件。
答案 2 :(得分:0)
感谢@kaßta提供模板!
我做了一些改进,因此不会一次ignore_older
和scan_frequency
一起重新提取文件。另外,close_eof
会将处理资源保持在最低水平。
filebeat.prospectors:
- input_type: log
close_eof: true
ignore_older: 1m
scan_frequency: 1m
paths:
- "/srv/www/var/report/*"
fields:
project: shop
app: magento
env: development
multiline:
pattern: '^\$'
negate: true
match: after
output.logstash:
hosts: ['logstash:5044']