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

如何从OUD纯文本日志提取字段用于Kibana分析?

解决方案

1. 用Grok+KV过滤器实现字段提取

你的OUD日志其实有固定结构:开头是统一格式的元数据,中间是[key: value]形式的键值对,最后是日志类型(BIND/SEARCH等)。可以通过Grok提取固定前缀+KV过滤器解析键值对的组合快速实现字段提取,无需写复杂的全量Grok模式。

具体配置示例(以Filebeat为例)

在filebeat.yml中添加日志解析规则:

filebeat.inputs:
- type: log
  paths:
    - /path/to/oud/logs/*.log
  processors:
    # 第一步:拆分固定前缀、键值对集合、日志类型
    - grok:
        match:
          message: '^\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{DATA:product}\] \[%{DATA:log_level}\] \[%{DATA:log_id}\] \[%{DATA:module}\] %{GREEDYDATA:kv_pairs} %{DATA:log_type}$'
        ignore_missing: true
    # 第二步:自动解析所有[key: value]格式的字段
    - kv:
        field: kv_pairs
        split_on: '\]\s*\['
        value_split: ': '
        trim_key: true
        trim_value: true
    # 第三步:将日志时间转为ES标准时间字段
    - date:
        field: timestamp
        target_field: '@timestamp'
        formats: [ISO8601]
        timezone: 'Europe/Paris' # 对应日志里的+02:00时区,可按需调整
    # 清理临时字段
    - drop_fields:
        fields: ['kv_pairs', 'timestamp']

关键说明

  • Grok仅处理最前面的固定结构,把所有动态键值对打包成kv_pairs,避免编写冗长的正则。
  • KV过滤器会自动识别所有[key: value]格式的内容,不管不同日志类型的字段差异,能提取出所有存在的键(比如BIND的bindType、SEARCH的base等)。

2. 无需手动写模式的工具

如果不想手动配置规则,可使用以下两种方式:

Kibana日志结构自动识别工具

进入Kibana的Stack Management > Ingest Pipelines > Create pipeline > Add a processor > Data Visualizer,上传你的OUD日志样本,Kibana会自动分析日志结构,生成对应的Grok或Dissect处理器配置,直接复制使用即可。

Dissect处理器(更简单的结构化拆分)

Dissect针对固定分隔符的日志设计,无需正则,语法更直观。针对OUD日志的配置示例:

- dissect:
    field: message
    pattern: '[%{timestamp}] [%{product}] [%{log_level}] [%{log_id}] [%{module}] %{kv_pairs} %{log_type}'

之后配合KV过滤器解析kv_pairs,效果与Grok方案一致,学习成本更低。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:55:03