在fluentd中如何解析日志并根据键值创建字段

Posted

技术标签:

【中文标题】在fluentd中如何解析日志并根据键值创建字段【英文标题】:In fluentd how to parse logs and create fields based on key values 【发布时间】:2019-12-16 23:39:38 【问题描述】:

在 fluentd 中,我如何使用 grok 模式或 json 解析此日志并获取 ip、方法和严重性等字段

"log":"2019-08-09 06:54:36,774 INFO 10.2.1.200 [09/Aug/2019:06:54:36 +0000] \"GET / HTTP/1.1\" 200 205 \"-\" \"HCELB/2.0\"\n","stream":"stderr","time":"2019-08-09T06:54:36.77499244Z"

【问题讨论】:

欢迎来到***。这不是一个编码服务网站。在Minimal, Complete, and Verifiable example 中向我们展示您迄今为止所做的事情,您将获得帮助 【参考方案1】:

感谢@gehbiszumeis 你的宝贵帮助,我自己修复它。为了将来任何需要的人

      @type tail
      path /var/log/containers/container-name-*.log
      tag tag_name
      read_from_head true
      <parse>
        @type multi_format
        <pattern>
          format json
        </pattern>
      </parse>
    </source>
    <filter tag_name>
      @type parser
      key_name log
      reserve_data true
      time_key time
      time_format %Y-%m-%dT%H:%M:%S.%NZ
      <parse>
        @type grok
        grok_failure_key grokfailure
        <grok>
          pattern %TIMESTAMP_ISO8601:time %WORD:severity %GREEDYDATA:message
        </grok>
      </parse>
    </filter>
     <filter tag_name>
      @type record_transformer
      remove_keys log,stream
      <record>
        type tag_name
      </record>
    </filter>
    ```

【讨论】:

以上是关于在fluentd中如何解析日志并根据键值创建字段的主要内容,如果未能解决你的问题,请参考以下文章

fluentd解析日志部分json

在fluentd中解析nginx入口日志

如何在fluentd中用特定字符串替换键值字符串

fluentd 解析httpd日志

K8S 日志收集:在K8S创建fluentd的ds

EFK(elasticsearch + fluentd + kibana)日志系统