logstash / grok 自定义字段

     2023-02-16     231

关键词:

【中文标题】logstash / grok 自定义字段【英文标题】:logstash / grok custom fileds 【发布时间】:2017-07-18 10:37:32 【问题描述】:

我是 ELK 堆栈的全新用户。我在从日志中过滤掉特定部分时遇到了一点问题。

示例日志:

[2017-05-30 13:58:09,336] INFO  [com.qwerty.test.core.services.impl.order.OrderEntryService] (OrderEntryService.java:5426) [http-/0.0.0.0:1111-111] CT,1496145487308IP,111.11.111.11JTX,1511059/176275501OBJT,goodsMovement.reportsUtils.ConsignmentStocksListOPT,SQPID,111111SS,SSCPLTMPRODPLTRT,SAP_LOGISTIC_REPORTUID,StudentSaSo-8: Saving order: K1010101

和我的 grok 过滤器:

grok 
    match =>  "message" => "(?<timestamp>%YEAR-%MONTHNUM2-%MONTHDAY %HOUR:%MINUTE:%SECOND,%NONNEGINT)\] %LOGLEVEL:loglevel * \[(?<logger>[A-Za-z0-9$_.]+)\] \(%JAVAFILE:class:%NONNEGINT:line\) \[%NOTSPACE:thread\] %GREEDYDATA:message_TEST"
    

所以我需要过滤掉“ID”、“PID”、IP 和“UID”,我不知道如何配置这个特定的自定义模式。 我尝试使用 https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns 的模式,但它对我不起作用

【问题讨论】:

【参考方案1】:

你的 grok 的开头很好。而不是最后一部分%GREEDYDATA:message_TEST,它只会将您的消息的其余部分保存到message_TEST,您应该实际执行对象的解析。这样的事情会将对象中的PIDIPUID 字段保存到各自的变量中(请记住,此模式依赖于字段顺序):

.*IP,%IPV4:IP(.*)3PID,%POSINT:PID(.*)2UID,%DATA:UID

现在稍微解释一下它的作用。外面的一对大括号是你的对象的限制。然后我们将处理对象内部由一对大括号限制的每个字段。

首先:打开大括号; 那么,第一个内部字段是 CT,1496145487308,我们对保存它不感兴趣 - 所以告诉 grok 有一些字符串被大括号限制:.*; 下一个字段是 IP,我们需要保存:IP,111.11.111.11。它以大括号和IP, 开头,后跟我们必须保存的 IP 地址(匹配中的最后一个 IP 是存储 IP 地址的变量的名称):IP,%IPV4:IP 现在我们有三组不需要保存的大括号括起来的字符串:JTX,1511059/176275501OBJT,goodsMovement.reportsUtils.ConsignmentStocksListOPT,SQ。对于 grok,它看起来像:(.*)3; 然后进入 PID 字段:PID,111111。因为 grok PID 只是一个正整数,类似于用大括号括起来的 IP,前面有 PID,PID,%POSINT:PID; 还有两个我们不想保存的组。与之前的类似跳过它们:(.*)2; 最后一个字段是:UID,StudentSaSo-8,这只是 grok 的一串数据。类似于 IP 和 PID 将其保存在各自的变量中:UID,%DATA:UID; 最后我们得到了右大括号:

最后,你最终的 grok 将如下所示:

(?<timestamp>%YEAR-%MONTHNUM-%MONTHDAY %HOUR:%MINUTE:%SECOND,%NONNEGINT)\] %LOGLEVEL:loglevel * \[(?<logger>[A-Za-z0-9$_.]+)\] \(%JAVAFILE:class:%NONNEGINT:line\) \[%NOTSPACE:thread\] %DATAIP,%IPV4:IP(.*)3PID,%POSINT:PID(.*)2UID,%DATA:UID

【讨论】:

感谢 alexK 的回复,但在您的发言之后,我的日志又出现了问题。他们不规律。有些行只有 IP 和 PID 或 JTX、PID 和 UID,而且它们混合在一起,我的意思是 IP、UID 等字段并不总是在同一个位置...:/ 我映射了整个日志,就像你写 CT, %DATA:ctIP,%IPV4:IPJTX,%NONNEGINT:jtxOBJT,%GREEDYDATA:objtOPT%GREEDYDATA:OPTPID,% POSINT:PIDSS,%GREEDYDATA:SSTRT,%GREEDYDATA:TRTUID,%DATA:UID%GREEDYDATA:log_message 有什么办法吗通过自动搜索给定字段或类似的东西?

grok自定义模式(代码片段)

我的logstash中有简单的消息:2018-09-3020:25:07.708INFO8013---[nio-8443-exec-3]c.e.demo.controller.UsuarioController:INICIOCHAMADA|311我想从此消息中删除以下字段。"311"答案你快到了。你只需要用反斜杠逃避管道|字符(否则它匹配801之后的INFO),如下... 查看详情

elasticsearch-logstash-kibana(三)配置优化

...,nginx日志格式往往使用的是自定义的格式,我们需要把logstash中的message结构化后再存储,方便kibana的搜索和统计,因此需要对message进行解析。本文采用grok过滤器,使用match正则表达式解析,根据自己的log_format定制。nginx日志格... 查看详情

Logstash - grok 使用消息以外的字段

】Logstash-grok使用消息以外的字段【英文标题】:Logstash-grokuseafieldotherthanmessage【发布时间】:2014-09-1505:55:01【问题描述】:我正在使用Logstash转发器从远程服务器接收Log4j生成的日志文件。日志事件的字段包括一个名为“文件”... 查看详情

logstash:使用自定义正则表达式模式(代码片段)

有时LogstashGrok没有我们需要的模式。幸运的是我们有正则表达式库:Oniguruma。在很多时候,如果Logstash所提供的正则表达不能满足我们的需求,我们选用定制自己的表达式。定义Logstash是一种服务器端数据处理管道ÿ... 查看详情

Logstash,grok 过滤器不适用于固定长度字段

】Logstash,grok过滤器不适用于固定长度字段【英文标题】:Logstash,grokfilternotworkingforfixedlengthfields【发布时间】:2015-11-1315:08:37【问题描述】:我是logstash的新手,我有一个带有固定长度字段的输入文件和一个使用正则表达式配置... 查看详情

Logstash Grok 解析器

】LogstashGrok解析器【英文标题】:LogstashGrokparser【发布时间】:2015-12-0217:10:00【问题描述】:我是log-stash和grok的新手,我需要解析非常自定义的日志文件。我在任何地方都找不到一个很好的教程来完成这项工作。尝试了syslog示... 查看详情

未找到 logstash grok 过滤器模式

】未找到logstashgrok过滤器模式【英文标题】:logstashgrokfilterpatternnotfound【发布时间】:2015-04-1419:46:12【问题描述】:我一直在尝试为logstash创建一些自定义的grok模式。他们中的大多数工作正常,但有一个让我难过。模式是:WINUSE... 查看详情

干货|logstash自定义正则表达式etl实战

0、题记本文建立在干货|LogstashGrok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式。有时Logstash没有我们需要的模式。幸运的是,我们有正则表达式库:Oniguruma。Oniguruma是一个灵活的正则表达式库。它包含多种语言... 查看详情

logstash笔记-----grok插件的正则表达式来解析日志

(一)简介:   丰富的过滤器插件的存在是logstash威力如此强大的重要因素。名为过滤器,其实提供的不单单是过滤的功能,它们扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的logs... 查看详情

logstash:日志解析的grok模式示例(代码片段)

...和分析工具中解析日志数据。在这里查看我的Grok教程“Logstash:Grokfilter入门”。但是用Grok解析日志可能会很棘手。本博客将研究一些Grok模式示例,这些示例可以帮助你了解如何解析日志数据。什么是grok?最初的术语实际... 查看详情

logstash grok 过滤器忽略消息的某些部分

】logstashgrok过滤器忽略消息的某些部分【英文标题】:logstashgrokfilterignorecertainpartsofmessage【发布时间】:2015-02-2614:27:01【问题描述】:我有一个以syslog开头的drupal看门狗日志文件,例如时间戳等,然后有一个管道分隔的我登录看... 查看详情

如何在自定义 grok 模式中引用正则表达式组?

】如何在自定义grok模式中引用正则表达式组?【英文标题】:HowdoIrefertoaregexgroupinsideacustomgrokpattern?【发布时间】:2017-08-0222:01:06【问题描述】:我想在我的日志行中添加特定URI参数的字段这是一个示例日志行:2017-03-1221:34:36W3SV... 查看详情

logstash:日志解析的grok模式示例(代码片段)

如果没有日志解析,搜索和可视化日志几乎是不可能的,一个被低估的技能记录器需要读取他们的数据。解析结构化你的传入(非结构化)日志,以便用户可以在调查期间或设置仪表板时搜索清晰的字段和值... 查看详情

logstash:grok模式示例(代码片段)

Logstash可以轻松解析CSV和JSON文件,因为这些格式的数据组织得很好,可以进行Elasticsearch分析。但是,有时我们需要处理非结构化数据,例如纯文本日志。在这些情况下,我们需要使用LogstashGrok或其他第三方服... 查看详情

eflk-logstash安装配置

参考技术ALogstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。作为ELK中的L,之前采用的是EFK,其中F是Filebeat,比Logstash更加轻量,但... 查看详情

在 Kibana 仪表板中创建单独部分的 Grok 模式

...0-03-0716:34:04【问题描述】:长期以来,我一直在尝试使用logstash从我的自定义日志中提取和标记数据,但没有得到任何结果,我有一个自定义的haproxy日志,如下所示:Feb2221:17:32aphaproxy[1235]:10 查看详情

grok 解析数据的重复字段值

...er中运行的uwsgi应用程序捕获日志的filebeat。数据被发送到logstash,它解析它并转发到elasticsearch。这里是logstashconf文件:inputbeatsport=>5044filtergrokma 查看详情

Grok 用于日志文件 Logstash

】Grok用于日志文件Logstash【英文标题】:GrokforlogfilesLogstash【发布时间】:2020-04-2212:03:00【问题描述】:我需要编写一个grok模式来检索“****”中的内容-----Startofscriptforserversitboap1at**FriApr1714:24:19**HKT2020---------**user11**8775110Apr16?00:00... 查看详情