某些命名空间的 Filebeat kubernetes 发现

Filebeat kubernetes discovery for certain namespaces

我正在尝试限制我的 filebeat daemonset 仅从特定命名空间收集日志。

根据official autodiscovery documentation,我可以定义namespace:,但它似乎是单数,而不是复数。

除了多个命名空间之外,是否还有限制命名空间的方法?

我当前的配置如下所示:

filebeat.autodiscover:
  providers:
    - type: kubernetes
      node: ${NODE_NAME}
      namespace: backend
      hints.enabled: true
      hints.default_config:
        type: container
        paths:
          - /var/log/containers/*-${data.kubernetes.container.id}.log
      include_annotations: '*'

经过一些阅读,您似乎可以通过 Hints based autodiscover:

实现您的目标

提示系统在 Kubernetes Pod 注释或具有前缀 co.elastic.logs 的 Docker 标签中查找提示。一旦容器启动,Filebeat 将检查它是否包含任何提示并为其启动正确的配置。提示告诉 Filebeat 如何获取给定容器的日志。

所以基本上你在主配置中启用提示:

filebeat.autodiscover:
  providers:
    - type: kubernetes
      hints.enabled: true
      add_resource_metadata.namespace.enabled: true
      hints.default_config.enabled: false

然后你可以以注解的形式为它提供提示:

annotations:
  co.elastic.logs/enabled: 'true'