You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Logstash Grok中去除字段值中的\r字符

解决Winlogbeat日志Grok提取AlertName字段末尾带\r的问题

问题场景

通过Winlogbeat收集的日志格式如下:

AlertName=Wireless Access Point Alert
AlertStatus=Active
AlertActiveID=8618424
AlertDescription=
Severity=Critical

使用以下两种Grok模式提取AlertName字段时,值末尾始终带有\r字符:

AlertName=%{GREEDYDATA:AlertName}
AlertName=%{GREEDYDATA:AlertName}\s*

解决方法

  • Grok模式精准匹配
    利用正向预查匹配到\r前的内容,避免将\r纳入字段值:

    AlertName=%{DATA:AlertName}(?=\r)
    

    其中(?=\r)是正向断言,仅匹配\r之前的字符,不会捕获\r本身。

  • 使用mutate过滤器清除特殊字符
    如果Grok调整无效,可在数据处理环节添加gsub操作去除\r:

    • Logstash配置示例:
      mutate {
        gsub => ["AlertName", "\r", ""]
      }
      
    • Elasticsearch Ingest Pipeline配置示例:
      {
        "processors": [
          {
            "gsub": {
              "field": "AlertName",
              "pattern": "\\r",
              "replacement": ""
            }
          }
        ]
      }
      
  • Winlogbeat收集阶段预处理
    在Winlogbeat配置中添加处理器,提前清除日志中的\r:

    processors:
      - mutate:
          gsub:
            - field: message
              pattern: '\r'
              replacement: ''
    

内容的提问来源于stack exchange,提问作者Roopesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:42:37