• 监控日志
  • 如何配置fluentbit-operator中的parser部分?

cyrpg520
这是一个一个默认的input插件:

kubectl -n kubesphere-logging-system get inputs.logging.kubesphere.io tail -oyaml
  tail:
    db: /fluent-bit/tail/pos.db
    dbSync: Normal
    excludePath: /var/log/containers/*_kubesphere-logging-system_events-exporter*.log,/var/log/containers/kube-auditing-webhook*_kubesphere-logging-system_kube-auditing-webhook*.log
    memBufLimit: 5MB
    parser: docker
    path: /var/log/containers/*.log
    refreshIntervalSeconds: 10
    skipLongLines: true
    tag: kube.*

    zhu733756 我的用默认的插件无法解析log中的json字符串,你的可以解析吗?传到es中是json

    zhu733756 fluent-bit官方说解析json需要用到这个参数,你发的链接是源代码,我想知道怎么在kubesphere中配置这个parser,在crd中没有找到相关配置

      cyrpg520
      你需要自己定义一个parser组件,你自定义的这个parser应该需要命名为docker,将默认的那个parser组件覆盖掉,fluent文档上使用的decoder parser。kubectl explain parsers.查看怎么配置。

        zhu733756 非常感谢,我按照你的方法在CRD中成功创建了parser,但配置文件中并没有看到更新,请问是哪里配置不对吗?相关的问题和文档少之又少


          cyrpg520 我还有一个设想,现在你这个parser是通过filter插件来实现的,也就是在filter阶段进行修改了,能否把自定义的parser改到input插件,也就是输入日志的时候就给解析成你需要的格式了?我想应该也是可以的,由于我这里没有你的日志环境,方便实践一下?

            7 天 后

            zhu733756 嗯,可以的,我测试一下。还有就是ingress访问日志问题,我目前不敢开启访问日志,因为这样日志量太大了,fluent-bit采集不过来。有没有什么优化解决方案?

              3 年 后

              apiVersion: logging.kubesphere.io/v1alpha2

              kind: Parser

              metadata:

              name: log4j-parser

              namespace: kubesphere-logging-system

              spec:

              decoders:

              #parser:

              name: log4j

              format: regex

              regex: ^\[(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\] (?<level>\w+) (?<thread>\w+) (?<logger>[^\s]+) - .*

              timeKey: time

              timeFormat: "%Y-%m-%d %H:%M:%S"

              我这样加一个Parser 为什么报错了?

              是哪里配置不对 ?

              apiVersion: logging.kubesphere.io/v1alpha2
              kind: Parser
              metadata:
              name: log4j-parser
              namespace: kubesphere-logging-system
              spec:
              decoders:
              #parser:
              name: log4j
              format: regex
              regex: ^\[(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\] (?<level>\w+) (?<thread>\w+) (?<logger>[^\s]+) - .*
              timeKey: time
              timeFormat: "%Y-%m-%d %H:%M:%S"

              我这样加一个Parser 为什么报错了?
              请问是哪里配置不对 ?