【发布时间】:2020-09-21 08:47:37
【问题描述】:
我正在尝试从记录中查找密钥并将其用作流利位中的 logstash 前缀。但这并没有发生,并且Logstash_Prefix 没有被Logstash_Prefix_Key 替换,即使指定的密钥存在于来自kubernetes 过滤器的丰富日志中。
kubernetes 过滤器的理想行为是使用 pod 名称、pod id、命名空间名称等 kubernetes 数据丰富通过input 插件从输入路径读取的日志。当应用过滤器后的日志被推送到通过es 输出插件输出源。我使用Logstash_Prefix_Key 获取密钥kubernetes.pod_name 并将Logstash_Prefix 提供为pod_name。即使我能够在 Kibana 中看到kubernetes.pod_name 键,日志也存储在前缀pod_name 中(这意味着在日志记录中找不到Logstash_Prefix_Key,因此它使用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 堆栈的新手,有人可以帮我解决这个问题
【问题讨论】: