elasticsearch - 读取名称中包含日期的日志文件时出现问题

标签 elasticsearch logstash logstash-grok

我有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/

相关文章:

elasticsearch - Elasticsearch 查询所有字段,包括嵌套字段

ssl - Logstash 的 Icinga 输出插件导致 OpenSSL::SSL::SSLError:certificate verify failed 问题

logstash - 使用Grok跳过部分消息或日志

elasticsearch - 通过Logstash过滤器清理日志

java - apache-beam java 的 ElasticsearchIO 是否支持 Templating 和 ValueProvider 参数?调用模板时出错

Elasticsearch:使用关键字标记器但不使用停用词对字段进行索引

elasticsearch - Elasticsearch - 如何在两种类型之间连接数据?

logstash - 一日志中有多种模式

linux - 如何定期调用Logstash?

elasticsearch - ELK中的日期时间解析