如何获取文件拍以忽略某些容器日志

时间:2019-06-14 15:32:02

标签: 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"

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

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

谢谢

2 个答案:

答案 0 :(得分:0)

我在配置中看到的第一个错误是conditiontemplate部分的缩进。应该是:

   - type: kubernetes
     hints.enabled: true
     templates:
      - condition:
          contains:
            kubernetes.namespace: bagmessage

第二,我不确定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:
              ...

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

答案 1 :(得分:0)

似乎现在可以工作。我不确定是什么问题。