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

Winlogbeat decode_json_fields无法将winlog字段迁移至根字段

Winlogbeat winlog字段上移根节点失效排查

失效根本原因

decode_json_fields处理器的设计用途是解析值为JSON格式字符串的字段,将其转换为结构化对象,但Winlogbeat采集生成的winlog字段本身就是原生结构化对象,并非JSON编码的字符串,因此无论将该处理器配置在全局级别还是模块内部,都无法识别处理目标,自然不会产生任何效果。

正确实现方案

要将winlog下的所有子字段迁移到事件根节点,需要使用script处理器直接操作事件对象完成字段迁移,配置时注意避免覆盖Winlogbeat自动生成的ECS标准字段,配置示例如下:

processors:
  - script:
      lang: painless
      source: |
        if (ctx.containsKey('winlog')) {
          // 遍历winlog字段下的所有键值对
          for (def item : ctx.winlog.entrySet()) {
            def fieldName = item.getKey();
            // 根节点无同名字段时才写入,避免覆盖默认生成的ECS合规字段
            if (!ctx.containsKey(fieldName)) {
              ctx[fieldName] = item.getValue();
            }
          }
          // 迁移完成后删除原嵌套winlog字段,如需保留原字段可删除下行
          ctx.remove('winlog');
        }

winlogbeat.event_logs:
  - name: Security

配置校验说明

  • 配置写入完成后,可执行winlogbeat test config -c winlogbeat.yml命令校验配置合法性,返回Config OK即可正常启动服务
  • 该配置生效后,原winlog下的channel、record_id、provider_guid、event_data、computer_name等字段会直接出现在事件根节点,无需额外从嵌套字段提取,输出结构与预期示例一致
  • 若需要调整字段覆盖逻辑,可修改脚本中判断同名字段的判断规则,按需覆盖或保留原有字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:21:34