如何基于 kubernetes 元数据创建索引

How to create indices based on kubernetes metadata

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

output.elasticsearch:

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

Filebeat Kube 清单 link- https://github.com/anup1384/k8s-filebeat

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

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

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

logstash_prefix${记录['kubernetes']['pod_name']}

更多详情:

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

<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% 有效,只需更改您的标签和名称空间