如何让filebeat忽略某些容器日志

SME*_*SME 6 elasticsearch kubernetes filebeat

我在 Kubernetes 集群中使用 elasticserach 6.8 和 filebeat 6.8.0。我希望 filebeat 忽略某些容器日志,但这似乎几乎不可能:)。

这是我的自动发现配置

filebeat.autodiscover:
  providers:
   - type: kubernetes
     hints.enabled: true
     templates:
      - condition:
        contains:
          kubernetes.namespace: bagmessage
        config:
         - type: docker
           containers.ids:
             - "${data.kubernetes.container.id}"
           processors:
             - drop_event:
                 when:
                   or: 
                     - contains:
                         kubernetes.container.name: "filebeat"
                     - contains:
                         kubernetes.container.name: "weave-npc"
                     - contains:
                         kubernetes.container.name: "bag-fluentd-es"
                     - contains:
                         kubernetes.container.name: "logstash"
                     - contains:
                         kubernetes.container.name: "billing"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这种配置的许多变体,但 filebeats 仍在处理我希望它忽略的容器日志。

我想知道我想做的事情是否可行,如果可以,我做错了什么?

谢谢

Win*_*lds 3

condition我在您的配置中看到的第一个错误是template. 应该:

   - type: kubernetes
     hints.enabled: true
     templates:
       - condition:
           contains:
             kubernetes.namespace: bagmessage
Run Code Online (Sandbox Code Playgroud)

其次,我不确定kubernetes.*配置中的处理器是否可以看到type: docker. 您可以尝试参考docker.container.name一下。或者,您也可以将所有 k8s 特定条件移至condition以下部分templates

filebeat.autodiscover:
  providers:
    - type: kubernetes
      hints.enabled: true
      templates:
        - condition:
            and:
              - contains.kubernetes.namespace: bagmessage
              - contains.container.name: billing
          config:
              ...
Run Code Online (Sandbox Code Playgroud)

另外,请确保“container.name”(但不是“pod.name”)确实是您想要的。