添加 Kubernetes 元数据
编辑添加 Kubernetes 元数据编辑
add_kubernetes_metadata
处理器使用相关元数据对每个事件进行注释,这些元数据基于事件起源的 Kubernetes Pod。在启动时,它会检测 in_cluster
环境并缓存与 Kubernetes 相关的元数据。仅当检测到有效配置时,才会对事件进行注释。如果无法检测到有效的 Kubernetes 配置,则不会使用与 Kubernetes 相关的元数据对事件进行注释。
每个事件都使用以下内容进行注释
- Pod 名称
- Pod UID
- 命名空间
- 标签
此外,节点和命名空间元数据还会添加到 Pod 元数据中。
add_kubernetes_metadata
处理器包含两个基本构建块
- 索引器
- 匹配器
索引器使用 Pod 元数据为每个 Pod 创建唯一的标识符。这些标识符有助于将观察到的 Pod 的元数据与实际事件关联起来。例如,ip_port
索引器可以获取 Kubernetes Pod 并根据其所有 pod_ip:container_port
组合为其创建标识符。
匹配器使用事件中的信息来构建查找键,这些查找键与索引器创建的标识符匹配。例如,当 fields
匹配器将 ["metricset.host"]
作为查找字段时,它会使用字段 metricset.host
的值来构建查找键。当这些查找键之一与标识符之一匹配时,该事件会使用已识别的 Pod 的元数据进行丰富。
每个 Beat 都可以定义自己的默认索引器和匹配器,这些索引器和匹配器默认情况下处于启用状态。例如,Filebeat 启用了 container
索引器,该索引器根据所有容器 ID 识别 Pod 元数据,以及 logs_path
匹配器,该匹配器获取 log.file.path
字段,提取容器 ID 并使用它来检索元数据。
您可以在 索引器和匹配器 中找到有关可用索引器和匹配器以及一些示例的更多信息。
以下配置在 Packetbeat 作为 Kubernetes 中的 Pod 运行时启用处理器。
processors: - add_kubernetes_metadata: # Defining indexers and matchers manually is required for packetbeat, for instance: #indexers: # - ip_port: #matchers: # - fields: # lookup_fields: ["metricset.host"] #labels.dedot: true #annotations.dedot: true
以下配置在 Beat 作为 Kubernetes 节点上的进程运行时启用处理器。
processors: - add_kubernetes_metadata: host: <hostname> # If kube_config is not set, KUBECONFIG environment variable will be checked # and if not present it will fall back to InCluster kube_config: $Packetbeat Reference [8.14]/.kube/config # Defining indexers and matchers manually is required for packetbeat, for instance: #indexers: # - ip_port: #matchers: # - fields: # lookup_fields: ["metricset.host"] #labels.dedot: true #annotations.dedot: true
以下配置禁用了默认索引器和匹配器,并启用了用户感兴趣的索引器和匹配器。
processors: - add_kubernetes_metadata: host: <hostname> # If kube_config is not set, KUBECONFIG environment variable will be checked # and if not present it will fall back to InCluster kube_config: ~/.kube/config default_indexers.enabled: false default_matchers.enabled: false indexers: - ip_port: matchers: - fields: lookup_fields: ["metricset.host"] #labels.dedot: true #annotations.dedot: true
add_kubernetes_metadata
处理器具有以下配置设置
-
主机
- (可选) 在无法准确检测到 Packetbeat 的情况下,指定要将 Packetbeat 限制到的节点,例如,在主机网络模式下运行 Packetbeat 时。
-
范围
- (可选) 指定处理器是否应该在节点级别或整个集群级别具有可见性。可能的值为
node
和cluster
。默认情况下,范围为node
。 -
命名空间
- (可选) 选择要从中收集元数据的命名空间。如果未设置,则处理器会从所有命名空间收集元数据。默认情况下未设置。
-
add_resource_metadata
-
(可选) 指定将添加到事件的额外元数据的过滤器和配置。配置参数
-
node
或namespace
: 指定来自节点和命名空间的额外元数据的标签和注释过滤器。默认情况下,所有标签都包括在内,而注释则不包括在内。要更改默认行为,可以定义include_labels
、exclude_labels
和include_annotations
。这些设置在存储需要特殊处理的标签和注释时非常有用,以避免过载存储输出。注意:这些设置不支持通配符。可以通过将enabled: false
设置为禁用node
或namespace
元数据的丰富。 -
deployment
: 如果资源为pod
且它是从deployment
创建的,则默认情况下会添加部署名称,可以通过将deployment: false
设置为禁用它。 -
cronjob
: 如果资源为pod
且它是从cronjob
创建的,则默认情况下会添加 cronjob 名称,可以通过将cronjob: false
设置为禁用它。示例
-
add_resource_metadata: namespace: include_labels: ["namespacelabel1"] #labels.dedot: true #annotations.dedot: true node: include_labels: ["nodelabel2"] include_annotations: ["nodeannotation1"] #labels.dedot: true #annotations.dedot: true deployment: false cronjob: false
-
kube_config
- (可选) 使用给定的配置文件作为 Kubernetes 客户端的配置。如果存在,则默认情况下为
KUBECONFIG
环境变量。 -
kube_client_options
- (可选) 可以为 Kubernetes 客户端配置其他选项。目前支持客户端 QPS 和突发,如果未设置,则将使用 Kubernetes 客户端的 默认 QPS 和突发。示例
kube_client_options: qps: 5 burst: 10
-
cleanup_timeout
- (可选) 指定容器配置停止运行之前的非活动时间。默认情况下为
60s
。 -
sync_period
- (可选) 指定列出历史资源的超时时间。
-
default_indexers.enabled
- (可选) 当您想要指定自己的索引器时,启用或禁用默认 Pod 索引器。
-
default_matchers.enabled
- (可选) 当您想要指定自己的匹配器时,启用或禁用默认 Pod 匹配器。
-
labels.dedot
- (可选) 默认情况下为 true。如果设置为 true,则标签中的
.
将被替换为_
。 -
annotations.dedot
- (可选) 默认情况下为 true。如果设置为 true,则标签中的
.
将被替换为_
。
索引器和匹配器编辑
索引器编辑
索引器使用 Pod 元数据为每个 Pod 创建唯一的标识符。
可用索引器为
-
容器
- 使用其容器的 ID 识别 Pod 元数据。
-
ip_port
- 使用 Pod 的 IP 及其公开端口的组合来识别 Pod 元数据。使用此索引器时,元数据使用 Pod 的 IP 进行识别,以及每个容器公开的端口的
ip:port
组合。 -
pod_name
- 使用其命名空间和名称作为
namespace/pod_name
来识别 Pod 元数据。 -
pod_uid
- 使用 Pod 的 UID 识别 Pod 元数据。
匹配器编辑
匹配器用于构建查找键,这些查找键与索引创建的标识符匹配。
field_format
编辑
使用包含事件字段的字符串格式创建的键来查找 Pod 元数据。
此匹配器有一个选项 format
用于定义字符串格式。此字符串格式可以包含事件中任何字段的占位符。
例如,以下配置使用 ip_port
索引器通过 Pod IP 及其公开端口的组合来识别 Pod 元数据,并使用事件中的目标 IP 和端口作为匹配键
processors: - add_kubernetes_metadata: ... default_indexers.enabled: false default_matchers.enabled: false indexers: - ip_port: matchers: - field_format: format: '%{[destination.ip]}:%{[destination.port]}'
fields
编辑
使用一些特定字段的值作为键来查找 Pod 元数据。当定义多个字段时,使用事件中包含的第一个字段。
此匹配器有一个选项 lookup_fields
用于定义其值将用于查找的文件。
例如,以下配置使用 ip_port
索引器来识别 Pod,并定义一个匹配器,该匹配器使用目标 IP 或服务器 IP 进行查找,这是它在事件中找到的第一个匹配器
processors: - add_kubernetes_metadata: ... default_indexers.enabled: false default_matchers.enabled: false indexers: - ip_port: matchers: - fields: lookup_fields: ['destination.ip', 'server.ip']