我有2个Linux盒安装程序,其中1个盒包含一个组件,该组件生成日志并在其中安装logstash以传输日志。在其他框中,我有redis elasticsearch和logstash。在这里logstash将充当logstash索引器以读取数据。
现在我的问题是,在第一个框组件中,每天都会生成新的日志文件,但是日志文件名的唯一差异随日期而变化。
喜欢
柜台20151120-0.log
计数器20151121-0.log
计数器20151122-0.log
依此类推,我在logstash发货人conf文件中包含了以下类型的代码:
file {
path => "/opt/data/logs/counters-%{YEAR}%{MONTHNUM}%{MONTHDAY}*.log"
type => "rg_counters"
}
在我的logstash索引器中,我具有以下代码类型来捕获那些日志文件:
if [type] == "rg_counters" {
grok{
match => ["message", "%{YEAR}%{MONTHNUM}%{MONTHDAY}\s*%{HOUR}:%{MINUTE}:%{SECOND}\s*(?<counters_raw_data>[0-9\-A-Z]*)\s*(?<counters_operation_type>[\-A-Z]*)\s*%{GREEDYDATA:counters_extradata}"]
}
}
output {
elasticsearch { host => ["elastichost1","elastichost1" ] port => "9200" protocol => "http" }
stdout { codec => rubydebug }
}
请注意,此设置正在运行,并且其他类型的日志文件正在成功传输和处理,因此没有设置问题。
问题是如何处理此日志文件,该日志文件的文件名中包含日期。
这里有什么帮助吗?
提前致谢!!
最佳答案
根据评论...
而不是尝试在路径中使用正则表达式模式:
path => "/opt/data/logs/counters-%{YEAR}%{MONTHNUM}%{MONTHDAY}*.log"
只需使用glob模式:
path => "/opt/data/logs/counters-*.log"
logstash会记住以前查看过的文件(inodes)。
关于elasticsearch - 读取名称中包含日期的日志文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852970/