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

我需要将容器日志通过json结构上传到es中,方便日志分析,但fluent-bit无法解析log日志中json。

通过fluent-bit官网得知需要进行parser配置,但不知道ks中怎么配置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 为什么报错了?
                请问是哪里配置不对 ?