我试图从一个记录中查找一个键,并将其用作fluent bit中的logstash前缀。但那没有发生而且 Logstash_Prefix
没有被替换为 Logstash_Prefix_Key
即使指定的密钥存在于 kubernetes
过滤器。
kubernetes过滤器的理想行为是通过 input
带有kubernetes数据的插件,如pod name、pod id、namespace name等,应用过滤器后的日志通过 es
输出插件。我曾经 Logstash_Prefix_Key
去拿钥匙 kubernetes.pod_name
并给予 Logstash_Prefix
作为 pod_name
. 即使我能看见 kubernetes.pod_name
在kibana中,日志存储在前缀中 pod_name
(这意味着 Logstash_Prefix_Key
找不到tn日志记录,因此它使用 Logstash_Prefix
).
代码示例
input-kubernetes.conf: |
[INPUT]
Name tail
Tag kube.*
Path /var/log/containers/*.log
Parser docker
DB /var/log/flb_kube.db
Mem_Buf_Limit 2GB
Skip_Long_Lines On
Refresh_Interval 10
filter-kubernetes.conf: |
[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc.cluster.local:443
Merge_Log Off
K8S-Logging.Parser On
output-elasticsearch.conf: |
[OUTPUT]
Name es
Match kube.*
Host ${FLUENT_ELASTICSEARCH_HOST}
Port ${FLUENT_ELASTICSEARCH_PORT}
HTTP_User ${FLUENT_ELASTICSEARCH_USER}
HTTP_Passwd ${FLUENT_ELASTICSEARCH_PASSWORD}
Logstash_Format On
Logstash_Prefix pod_name
Logstash_Prefix_Key kubernetes.pod_name
Retry_Limit False
因为我是efk stack的新手,有人能帮我吗
1条答案
按热度按时间hsgswve41#
fluentbit目前不支持动态elasticsearch索引。下面是一个相关的问题:https://github.com/fluent/fluent-bit/issues/421. 只能指定字符串(硬编码)前缀。
解决方法是改用fluentd日志收集器,它支持动态索引:https://docs.fluentd.org/output/elasticsearch#index_name-可选。这里有一个社区图表:https://github.com/helm/charts/tree/master/stable/fluentd