首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fluent Bit: Logstash_Prefix_Key与'es‘输出插件的工作方式不符合预期

Fluent Bit: Logstash_Prefix_Key与'es‘输出插件的工作方式不符合预期
EN

Stack Overflow用户
提问于 2020-09-21 16:47:38
回答 3查看 1.7K关注 0票数 3

我正在尝试从记录中查找一个键,并将其用作流畅位中的logstash前缀。但这并没有发生,即使指定的键存在于来自kubernetes过滤器的丰富日志中,Logstash_Prefix也不会被Logstash_Prefix_Key替换。

kubernetes filter的理想行为是通过input插件使用kubernetes数据(如pod名称、pod id、命名空间名称等)来丰富从输入路径读取的日志,并通过es输出插件将应用过滤器后的日志推送到输出源。我使用Logstash_Prefix_Key获取密钥kubernetes.pod_name,并将Logstash_Prefix作为pod_name。尽管我可以在Kibana中看到kubernetes.pod_name密钥,但日志存储在前缀pod_name中(这意味着在日志记录中找不到Logstash_Prefix_Key,所以它使用Logstash_Prefix)。

代码示例

代码语言:javascript
复制
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堆栈的新手,有人能帮我解决这个问题吗

EN

回答 3

Stack Overflow用户

发布于 2020-09-21 17:26:21

更新:现在支持了!https://github.com/fluent/fluent-bit/issues/421#issuecomment-766912018应该在Fluent Bit v1.7版本中!

FluentBit目前不支持动态ElasticSearch索引。这里有一个相关的问题:https://github.com/fluent/fluent-bit/issues/421。您只能指定字符串(硬编码)前缀。

解决方法是使用fluentd日志收集器,它支持动态索引:https://docs.fluentd.org/output/elasticsearch#index_name-optional。这里有一个社区图表:https://github.com/helm/charts/tree/master/stable/fluentd

更新:现在支持了!https://github.com/fluent/fluent-bit/issues/421#issuecomment-766912018应该在Fluent Bit v1.7版本中!

票数 2
EN

Stack Overflow用户

发布于 2021-02-04 09:58:28

我最近也在尝试做同样的事情,虽然Max Lobur上面所说的fluentbit在1.7版本之前没有对此提供支持,但这是真的。但是,我仍然能够使用nest过滤器在当前版本中实现这一点,请参阅https://docs.fluentbit.io/manual/pipeline/outputs/elasticsearch .under the Logstash_Prefix_Key it

包含

时:将查找属于该键的记录中的值,并覆盖Logstash_Prefix以生成索引。如果在记录中找不到键/值,则Logstash_Prefix选项将充当后备选项。不支持嵌套键(如果需要,可以使用嵌套筛选器插件删除嵌套)

最后一句话是关于不支持的嵌套键,但是如果您使用嵌套过滤器将它们提升到一个级别,您仍然可以使用它们。

在您的例子中,pod_name嵌套在kubernetes下,为了仍然能够使用它,您必须将其提升到该级别之外。参见nest example here

下面是如何让它在你的案例中工作:

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

[FILTER]
    Name                nest
    Match               *
    Operation           lift
    Nested_under        kubernetes
    Add_prefix          kubernetes_

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

我们在这里所做的是将kubernetes对象中的所有内容提升到一个级别,并在它们前面加上kubernetes_,这样您的pod_name就会变成kubernetes_pod_name。然后将kubernetes_pod_name传递给Logstash_prefix_key。然后,kubernetes_pod_name的值将用于索引生成,且仅当kubernetes_pod_name不存在键/值对时才返回到logstash_prefix

票数 1
EN

Stack Overflow用户

发布于 2021-05-15 00:12:01

您可以使用:

代码语言:javascript
复制
Logstash_Prefix_Key kubernetes['pod_name']

这可以在我的机器上使用docker镜像:fluent/fluent-bit:1.7

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63988955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档