【问题标题】:How to create indices based on kubernetes metadata如何基于 Kubernetes 元数据创建索引
【发布时间】:2020-03-23 01:59:07
【问题描述】:

我在 Kubernetes 中使用 filebeat 将日志发送到弹性搜索。 我想基于命名空间创建索引。我正在尝试为 Kubernetes 集群中的不同应用程序创建自定义索引,但这不起作用。 我在下面使用了conf:-

输出.elasticsearch:

  index: "%{[kubernetes.labels.app]:filebeat}-%{[beat.version]}-%{+yyyy.MM.dd}"

Filebeat Kube-manifest 链接-https://github.com/anup1384/k8s-filebeat

【问题讨论】:

    标签: elasticsearch logging kubernetes filebeat amazon-eks


    【解决方案1】:

    在 filebeat configmap 中使用下面给出的 elasticsearch 输出

    output.elasticsearch:
      index: "%{[kubernetes.namespace]:filebeat}-%{[beat.version]}-%{+yyyy.MM.dd}"
    

    【讨论】:

    • 这不起作用。我已经用过了。当我使用它时,我的 filebeat ds 显示错误。 2019-11-27T12:52:49.108Z INFO instance/beat.go:614 Beat ID: c164e219-3977-4b3a-b149-e793b2786aac 2019-11-27T12:52:49.108Z INFO instance/beat.go:366 filebeat 停止. 2019-11-27T12:52:49.108Z 错误 instance/beat.go:877 退出:setup.template.name 和 setup.template.pattern 如果索引名称被修改,则必须设置退出:setup.template.name 和 setup。如果修改了索引名称,则必须设置 template.pattern
    • 您有任何配置文件来设置 Kubernetes 上的日志记录吗?请在这里分享。
    • 这里是参考discuss.elastic.co/t/…
    • 验证 kubernetes.namespace 值是否被收集。在您的情况下,它可能是 data.kubernetes.namespace
    • 不走运,我使用相同的配置创建自定义索引,但仍然存在 filebeat 索引。您能否分享您的 Kube 清单以使用 filebeat 设置日志记录。
    【解决方案2】:

    使用 Kubernetes 元数据创建自定义索引。所以在这里我创建了一个基于 pod 名称元数据的索引。

    logstash_prefix ${record['kubernetes']['pod_name']}

    更多详情:

    https://medium.com/faun/how-to-create-custom-indices-based-on-kubernetes-metadata-using-fluentd-beed062faa5d

    【讨论】:

      【解决方案3】:
      <source>
            @type tail
            @id in_tail_docker_logs
            read_from_head true
            tag yourTag.*
            path /var/log/containers/**yournamespace**.log
            pos_file /var/log/file.log.pos
            <parse>
              @type multi_format
              <pattern>
                format json
                time_format '%Y-%m-%dT%H:%M:%S.%N%Z'
              </pattern>
              <pattern>
                format regexp
                expression /^(?<time>.+) (?<stream>stdout|stderr)( (?<logtag>.))? (?<log>.*)$/
                time_format '%Y-%m-%dT%H:%M:%S.%N%:z'
              </pattern>
            </parse>
          </source>
      
      
      <match yourTag_**>
            @type elasticsearch
            host "#{ENV['FLUENT_ELASTICSEARCH_HOST']}"
            port "#{ENV['FLUENT_ELASTICSEARCH_PORT']}"
            scheme "#{ENV['FLUENT_ELASTICSEARCH_SCHEME'] || 'https'}"
            user "#{ENV['FLUENT_ELASTICSEARCH_MDSA_USER']}"
            password "#{ENV['FLUENT_ELASTICSEARCH_MDSA_PASSWORD']}"
            ssl_verify "#{ENV['FLUENT_ELASTICSEARCH_SSL_VERIFY'] || 'false'}"
            suppress_type_name true
            index_name ocp_${tag[0]}_${$.kubernetes.labels.app}_%Y%m%d ### ==> **ocp_yourTag_appName_date**
      
            <buffer tag, time, $.kubernetes.labels.app>
              @type memory
              timekey 10s
              timekey_wait 0s
              flush_mode immediate
              flush_thread_count 4
            </buffer>
      

      这将 100% 有效,只需使用您的标签和命名空间进行更改

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-07
        • 1970-01-01
        • 2020-05-25
        • 2018-04-03
        • 1970-01-01
        • 2016-08-18
        • 2011-04-28
        相关资源
        最近更新 更多