我在kubernetes集群之外有一个文件拍,作为应用程序安装在主机上。我想忽略filebeat中的两个名称空间,因为它们很大,并且在Elastichsearch中不需要它们。
这是我在filebeat.yml中的输入定义:
- type: log
enabled: true
paths:
- /var/lib/docker/containers/*/*.log
json.message_key: log
json.keys_under_root: true
processors:
- add_kubernetes_metadata:
in_cluster: false
host: main-backend
kube_config: /etc/kubernetes/admin.conf
- drop_event.when.regexp:
or:
- kubernetes.namespace: "kube-system"
- kubernetes.namespace: "monitoring"
但是,我仍然在我的Elasticsearch中看到来自那些命名空间的大量日志。有什么方法可以调试它,为什么会发生?
答案 0 :(得分:1)
您可以按照以下说明尝试
- drop_event:
when:
or:
- not:
equals:
kubernetes.namespace: "kube-system"
- not:
equals:
kubernetes.namespace: "monitoring"
- regexp:
kubernetes.pod.name: "filebeat-*"
- regexp:
kubernetes.pod.name: "elasticsearch-*"
答案 1 :(得分:0)
如何删除一些名称空间,我在这里记录:https://ezyforanykey.blogspot.com/2020/11/filebeat-exclude-kubernetes-namespace.html
- drop_event.when:
or:
- equals:
kubernetes.namespace: "kube-system"
- equals:
kubernetes.namespace: "calico-system"
答案 2 :(得分:0)
我在 filebeat.yml 中使用了这个片段并且它有效。 请注意,我没有添加 kubernetes_metadata,只是添加了 docker_metadata(也包含 kubernetes 标签)。
#================================ Processors =====================================
# Configure processors to enhance or manipulate events generated by the beat.
#
processors:
- add_docker_metadata: ~
# - add_kubernetes_metadata: ~
- drop_event:
when:
equals:
container.labels.io_kubernetes_pod_namespace: "kube-system"
or:
equals:
container.labels.io_kubernetes_pod_namespace: "monitoring"
在这种情况下,来自“cattle-prometheus”命名空间内容器的日志将被删除。