【问题标题】:Splunk need help in extracting ERROR messages from logsSplunk 需要帮助从日志中提取错误消息
【发布时间】:2022-08-02 20:20:00
【问题描述】:

有人可以帮助提取所有带有 \"level\": ERROR 的日志并将消息提取到另一个字段中。例如。消息:Example1.Example2:Example3:2 需要提取到 fied.TravellllgPeeele_INR

日志如下所示:

| \"level\":\"ERROR\",\"loggerName\":\"Log1.Log2LLogLog3\",\"message\":\"Example1.Example2: Example3: 2 need to extracted to fied.TravellllgPeeele_INR\",\"endOfBatch\":false

我可以使用以下 rex 提取所有错误,但无法提取消息。

| rex \"(?<Err>ERROR)\" 
| search Err=*

    标签: regex splunk


    【解决方案1】:

    你的第一次提取是正确的,只需做另一个类似的操作:

    | rex field=_raw "message[[:punct:]]+(?<message>[^\"]+)"
    

    这将抓取“message":"”之后的所有内容,直到它碰到另一个引号

    根据评论请求添加

    如果您只想提取 message 如果事件中存在“错误”,则正则表达式同样简单:

    | rex field=_raw "ERROR.+?message[[:punct:]]+(?<message>[^\"]+)"
    

    编辑

    如果你可以有任何标点符号领导消息,只需使用[[:punct:]]{3} 匹配":"

    | rex field=_raw "ERROR.+?message[[:punct:]]{3}(?<message>[^\"]+)"
    

    【讨论】:

    • 谢谢它可以提取消息,我使用逗号而不是 " like this rex "(?<Err>ERROR)" |rex field=_raw "message[[:punct:]]+(?<Dmsg>[^\ ,]+)"。但是您能否帮助仅提取带有 Dmsg 字段的记录,其中 ERROR 关键字出现在日志中
    • @Diksha - 见编辑
    • 上面的 rex 工作得很好,除非它在消息中遇到 '*':例如:"message":"****************************** *","endOfBatch":false,. 在这种情况下,它提取 endOfBatch\":false 作为消息,而它应该提取双引号和逗号内的任何内容,在这种情况下是 ******。你能请帮忙?
    • @Diksha - 见编辑
    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多