kubernetes上的Filebeat-排除名称空间不起作用

时间:2019-02-14 06:52:11

标签: elasticsearch kubernetes filebeat

我在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中看到来自那些命名空间的大量日志。有什么方法可以调试它,为什么会发生?

3 个答案:

答案 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”命名空间内容器的日志将被删除。