parsing - Logstash/GROK:解析日志文件时创建自定义变量

标签 parsing elasticsearch logstash-grok grok

我是Grok的新手,尽管我设法创建了自定义正则表达式并在logstash配置文件中编写了GROK过滤器。我的问题如下:

来源字段-
我正在解析一个日志文件,其中每个事件都包含一个'source'字段,这是日志文件的名称,例如:

test.YYYYMMDD_HHMMSS.log

我想做的是:对于每个事件,其中“源”包含此文件名,请在Grok过滤器的新字段中以以下格式提取日期和时间:
DD/MM/YYYY HH:MM:SS

我知道如何在GROK中编写自定义正则表达式(RE),但是我无法编写将匹配数据并将其格式化的RE,然后再将其存储到变量中。这就是我的问题。

谁能帮忙吗?

非常感谢!

最佳答案

从文件名中提取日期应该可以。您应该能够使用grok过滤器匹配源字段中的日期部分,并添加一个新字段,如下所示:

filter { 
    grok {
        match => [
        "source", "test.%{YEAR:year}%{MONTHNUM2:month}%{DATA:day}_%{HOUR:hour}%{MINUTE:minute}%{SECOND:second}.log"
        ]
    }
    mutate { add_field => { "your_new_date_field" => "%{day}/%{month}/%{year} %{hour}:%{minute}:%{second}" } }
}

我目前无法测试,但希望您能理解。

该解决方案将创建许多其他字段,例如年,月,日等。如果要摆脱其他字段,可以使用metadata fields

关于parsing - Logstash/GROK:解析日志文件时创建自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46319944/

相关文章:

python - 从 PDF 中搜索文本的脚本

c++ - 路径验证的 spirit 语法

java - 在java中解析TLV数据的问题,如何获取值,长度

php - 如何从laravel Controller 传递搜索查询到elasticsearch?

logstash - 多个Grok过滤器未存储第一个过滤器匹配记录

regex - 仅给定索引,如何使用正则表达式提取子字符串?

android - 在 android 中使用 Jackson Parser 解析 Json?

spring-boot - 如何在Spring Boot中编写以下 Elasticsearch 通配符查询?

elasticsearch - 查询获取平均速度

logstash - 使用 Grok Debugger 测试 Logstash 过滤器的 Apache 错误