如何基于 Kubernetes 元数据创建索引
Posted
技术标签:
【中文标题】如何基于 Kubernetes 元数据创建索引【英文标题】:How to create indices based on kubernetes metadata 【发布时间】: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
【问题讨论】:
【参考方案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% 有效,只需使用您的标签和命名空间进行更改
【讨论】:
以上是关于如何基于 Kubernetes 元数据创建索引的主要内容,如果未能解决你的问题,请参考以下文章