【问题标题】:Filebeat kubernetes discovery for certain namespaces某些命名空间的 Filebeat kubernetes 发现
【发布时间】:2021-04-18 15:52:29
【问题描述】:

我正在尝试将我的 filebeat 守护程序集限制为仅从某些命名空间收集日志。

根据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: '*'

【问题讨论】:

  • 您是否尝试过使用条件匹配两个命名空间的模板(如第 35 行中的 here 所述)
  • @thomas 看起来像我需要的,但我不确定这个模板是什么,文档没有提到它,而且我不确定除了条件之外还包括什么。

标签: kubernetes filebeat


【解决方案1】:

经过一番阅读,您似乎可以通过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'

【讨论】:

  • 感谢您的回答,但是,我想将其应用于命名空间中的所有 pod,将此注释添加到我的所有部署中似乎很乏味。
  • 这个注解放置在命名空间会导致收集所选命名空间中所有pod的日志。
猜你喜欢
  • 2023-03-17
  • 2020-06-19
  • 1970-01-01
  • 2020-05-28
  • 2020-08-21
  • 1970-01-01
  • 2017-09-23
  • 2019-01-16
  • 2021-05-07
相关资源
最近更新 更多