【问题标题】:add custom fields in Elasticsearch indices while pushing logs from Fluentd在从 Fluentd 推送日志时在 Elasticsearch 索引中添加自定义字段
【发布时间】:2021-02-25 07:48:36
【问题描述】:

我们正在使用 Fluentd 将 kubernetes 容器日志推送到 Elasticsearch。我们想在 Elasticsearch 上以 NAMESPACE_CONTAINERNAME 的格式创建索引。下面是我们的记录转换器和 Elasticsearch outPut 插件的配置。

      <filter kubernetes.**>
        @type record_transformer
        enable_ruby true
        <record>
          container_name ${record["kubernetes"]["container_name"]}
          namespace ${record["kubernetes"]["namespace_name"]}
          pod ${record["kubernetes"]["pod_name"]}
          host ${record["kubernetes"]["host"]}
          app ${record["kubernetes"]["labels"]["app"]}
        </record>
      </filter>

Elasticsearch 输出:

    <label @OUTPUT>
      <match **>
        @type elasticsearch
        host "elasticsearch-master.default.svc.cluster.local"
        port 9200
        logstash_format true
        logstash_prefix ${namespace}_${container_name}
      </match>
    </label>

但是当 Fluentd 将日志推送到 Elasticsearch 时,索引被创建为 ${namespace}_${container_name}-2021.02.25。 欢迎对此提出任何建议或指导。 :slightly_smiling_face:

【问题讨论】:

    标签: elasticsearch kubernetes fluentd


    【解决方案1】:

    能够通过添加缓冲区部分使其工作。

        <label @OUTPUT>
          <match **>
            @type elasticsearch
            host "#{ENV['FLUENT_ELASTICSEARCH_HOST']}"
            port "#{ENV['FLUENT_ELASTICSEARCH_PORT']}"
            logstash_format true
            logstash_prefix ${namespace}_${container_name}
            <buffer tag, container_name, namespace>
              @type file
              path /var/log/${container_name}/app.log
            </buffer>
          </match>
        </label>
    

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2022-07-07
      • 2021-01-05
      相关资源
      最近更新 更多