Packetbeat不添加Kubernetes元数据

问题描述

我已经启动了一个迷你库(使用Kubernetes 1.18.3)来测试ECK,尤其是Packetbeat。 minikube配置文件称为“ packetbeat”(重要,因为这也是VirtualBox VM的主机名),我按照ECK快速入门进行安装和运行。 ElasticSearch(单节点)和Kibana运行良好,packetbeat也正在收集流,但是,我无法使其将Kubernetes元数据添加到字段中。

我正在使用名称空间,并创建了ClusterRoleBinding来查看名称空间中的认ServiceAccount。这很好,如果我不这样做,packetbeat将报告无法在API服务器上列出Pod。

这是我用来使ECK部署packetbeat的Beat配置:

apiVersion: beat.k8s.elastic.co/v1beta1
kind: Beat
Metadata:
  name: packetbeat
spec:
  type: packetbeat
  version: 7.9.0
  elasticsearchRef:
    name: quickstart
  kibanaRef:
    name: kibana
  config:
    packetbeat.interfaces.device: any
    packetbeat.protocols:
    - type: http
      ports: [80,8000,8080,9200]
    - type: tls
      ports: [443]
    packetbeat.flows:
      timeout: 30s
      period: 10s
    processors:
    - add_kubernetes_Metadata: {}
  daemonSet:
    podTemplate:
      spec:
        terminationGracePeriodSeconds: 30
        hostNetwork: true
        automountServiceAccountToken: true # some older Beat versions are depending on this settings presence in k8s context
        dnsPolicy: ClusterFirstWithHostNet
        containers:
        - name: packetbeat
          securityContext:
            runAsUser: 0
            capabilities:
              add:
              - NET_ADMIN

(这是ECK示例页面中的大部分示例。)但是,这根本不起作用。我先用“ add_kubernetes_Metadata:{}”进行了尝试,但这会因以下消息而出错:

2020-08-19T14:23:38.550Z错误[kubernetes] kubernetes / util.go:117 kubernetes:查询Pod失败,并显示以下错误:Pod“ packetbeat”不正确 找到{“ libbeat.processor”:“ add_kubernetes_Metadata”}

当我添加“主机:packetbeat”时,此消息消失。我现在不再出现错误,但是我也没有得到Kubernetes元数据。我最感兴趣的是名称空间标签,但我什么都没有。我没有在日志中看到任何其他错误,并且此刻仅每30秒报告一次监视详细信息。

我在做什么错?我可以提供更多信息来帮助我进行调试吗?

解决方法

因此,文档尚不清楚。尽管他们没有明确声明,但是您确实需要添加索引器和匹配器。我的理解是,有“默认”的(可以禁用它们),但事实并非如此。按照文档中的示例添加索引器和匹配器,使Kubernetes元数据成为数据的一部分。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...