fluent位:logstash\u prefix\u key与“es”输出插件的工作方式不符

vuktfyat  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(701)

我试图从一个记录中查找一个键,并将其用作fluent bit中的logstash前缀。但那没有发生而且 Logstash_Prefix 没有被替换为 Logstash_Prefix_Key 即使指定的密钥存在于 kubernetes 过滤器。
kubernetes过滤器的理想行为是通过 input 带有kubernetes数据的插件,如pod name、pod id、namespace name等,应用过滤器后的日志通过 es 输出插件。我曾经 Logstash_Prefix_Key 去拿钥匙 kubernetes.pod_name 并给予 Logstash_Prefix 作为 pod_name . 即使我能看见 kubernetes.pod_name 在kibana中,日志存储在前缀中 pod_name (这意味着 Logstash_Prefix_Key 找不到tn日志记录,因此它使用 Logstash_Prefix ).
代码示例

input-kubernetes.conf: |
    [INPUT]
        Name              tail
        Tag               kube.*
        Path              /var/log/containers/*.log
        Parser            docker
        DB                /var/log/flb_kube.db
        Mem_Buf_Limit     2GB
        Skip_Long_Lines   On
        Refresh_Interval  10

  filter-kubernetes.conf: |
    [FILTER]
        Name                kubernetes
        Match               kube.*
        Kube_URL            https://kubernetes.default.svc.cluster.local:443
        Merge_Log           Off
        K8S-Logging.Parser  On

  output-elasticsearch.conf: |
    [OUTPUT]
        Name            es
        Match           kube.*
        Host            ${FLUENT_ELASTICSEARCH_HOST}
        Port            ${FLUENT_ELASTICSEARCH_PORT}
        HTTP_User       ${FLUENT_ELASTICSEARCH_USER}
        HTTP_Passwd     ${FLUENT_ELASTICSEARCH_PASSWORD}
        Logstash_Format On
        Logstash_Prefix pod_name
        Logstash_Prefix_Key kubernetes.pod_name
        Retry_Limit     False

因为我是efk stack的新手,有人能帮我吗

hsgswve4

hsgswve41#

fluentbit目前不支持动态elasticsearch索引。下面是一个相关的问题:https://github.com/fluent/fluent-bit/issues/421. 只能指定字符串(硬编码)前缀。
解决方法是改用fluentd日志收集器,它支持动态索引:https://docs.fluentd.org/output/elasticsearch#index_name-可选。这里有一个社区图表:https://github.com/helm/charts/tree/master/stable/fluentd

相关问题