我目前正在尝试将日志从我的kubernetes集群获取到外部ElasticSearch / Kibana。到目前为止,我已经使用this守护程序部署来运行filebeat并将其传递给外部服务器,但是我无法弄清楚如何将索引设置为有意义的值。 This文档页面告诉我,我需要在output.elasticsearch部分中创建一个索引键,但是我不知道该在值中添加什么。
我想要的输出格式应类似于<cluster-name>-<namespace>-<pod name>
IE:devKube-frontend-publicAPI-123abc
前提:您已启用add_kubernetes_metadata: ~
。
然后您可以像这样在索引名称中使用该元数据:
add_kubernetes_metadata: ~
output.elasticsearch:
index: "%{[kubernetes.namespace]:filebeat}-%{[beat.version]}-%{+yyyy.MM.dd}"
:使用Kubernetes命名空间,或者如果没有,则退回到%{[kubernetes.namespace]:filebeat}
。filebeat
。这应该仅限于主要版本更改(如果有的话),但是使用此设置可以轻松避免此问题。%{[beat.version]}
甚至更好,将是%{+yyyy.MM.dd}
,具有均匀且适当大小的分片。PS:您在ILM policy中的字段中具有Pod名称和其他详细信息。我会注意不要将索引切成小块,因为每个分片都有一定的开销。 Filebeat ILM的默认策略是每个分片50GB-如果分片小于10GB,则很可能在某个时候遇到问题。将索引保留得更粗糙一些,只对特定的Pod使用过滤器即可。