gpt4 book ai didi

linux - Logstash-用grok解析数据

转载 作者:行者123 更新时间:2023-12-03 01:14:52 24 4
gpt4 key购买 nike

TL; DR在底部
我有一个自定义生成的日志文件,该文件列出了用户运行的命令(以及其他内容)。为此,我有一个grok脚本,可以成功地将消息解析为字段。当我被要求添加一些生成不同时间戳的非常老的服务器时,我开始遇到错误。
这是新服务器上的日志:

[2020-07-21 12:59:31] SERVER-DB-230 john:USER=root PWD=/root PID=[22714] CMD="echo test9" Exit=[0] CONNECTION=
[2020-07-21 12:59:33] SERVER-DB-230 john:USER=root PWD=/root PID=[22714] CMD="echo test10" Exit=[0] CONNECTION=
[2020-07-21 12:59:35] SERVER-DB-230 john:USER=root PWD=/root PID=[22714] CMD="clear" Exit=[0] CONNECTION=
这是旧服务器上的日志(不同的时间戳记):
Jul 21 13:02:53 SERVER-DEV-NEW-167 root: USER=root PWD=/root PID=[10638] CMD="echo 2" Exit=[0] CONNECTION=1.2.3.4
Jul 21 13:02:54 SERVER-DEV-NEW-167 root: USER=root PWD=/root PID=[10638] CMD="echo 3" Exit=[0] CONNECTION=1.2.3.4
Jul 21 13:02:56 SERVER-DEV-NEW-167 root: USER=root PWD=/root PID=[10638] CMD="echo 4" Exit=[0] CONNECTION=1.2.3.4
由于这些是我拥有的日志的语法,因此我认为最好有一个'if'语句,该语句表示-如果grok无法解析,请尝试使用此grok代码对其进行解析。事实是,即使它们非常相似,我也无法让grok解析这些数据。我正在尝试使其与grok调试器一起使用,但我无法使其正常工作。
这是我当前在logstash中的.conf: https://pastebin.com/QZv7zM1x
有谁知道如何将第二段代码解析为字段?以及如何仅在第一个失败时进行解析?谢谢你!
TL; DR:需要帮助来解析第二个日志块,并仅在失败时才由grok对其进行解析

最佳答案

这是第二个步骤的一个非常懒惰的解决方案。如果您需要提高效率,则可以使用LMK。(?<ts>%{SYSLOGTIMESTAMP}) (?<hname>(\b[\w\-]+\b)) (?<loggedas>%{WORD}): USER=(?<user>%{WORD}) PWD=(?<pwd>(\/[\w]+)) PID=(?<pid>(\[[\d]+\])) CMD="(?<cmd>[\s\S]+)" Exit=(?<exit>(\[[\d]+\])) CONNECTION=(?<connection>([\d]+\.[\d]+\.[\d]+\.[\d]+))正如另一个用户提到的那样,您可以让它尝试多种模式。
语法是grok { match => { "message" => [ "pattern1", "pattern2", "patternN" ] } }

关于linux - Logstash-用grok解析数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63015358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com