Kubernetes 提供程序
编辑Kubernetes 提供程序编辑
提供来自 Kubernetes 的清单信息。
提供程序配置编辑
providers.kubernetes: node: ${NODE_NAME} scope: node #kube_config: /Users/elastic-agent/.kube/config #sync_period: 600s #cleanup_timeout: 60s resources: pod: enabled: true
-
节点
-
(可选) 指定要将 Elastic Agent 范围限定到的节点,以防默认发现方法无法准确检测到节点
- 如果 Elastic Agent 在 Kubernetes 集群中作为 Pod 部署,请使用 Pod 的主机名作为 Pod 名称来查询 Pod 元数据以获取节点名称。
- 如果步骤 1 失败或 Elastic Agent 部署在 Kubernetes 集群之外,请使用机器 ID 与 Kubernetes 节点匹配以获取节点名称。
- 如果无法通过步骤 1 或 2 发现节点,则回退到
NODE_NAME
环境变量作为默认值。如果未设置,则返回错误。
-
清理超时
- (可选) 指定在停止容器的运行配置之前的非活动时间。默认情况下为
60s
。 -
同步周期
- (可选) 指定列出历史资源的超时时间。
-
kube_config
-
(可选) 使用给定的配置文件作为 Kubernetes 客户端的配置。如果未设置
kube_config
,则将检查KUBECONFIG
环境变量,如果不存在,则回退到 InCluster。InCluster 模式意味着如果 Elastic Agent 作为 Pod 运行,它将尝试使用默认情况下安装在 Pod 中的令牌和证书来初始化客户端-
/var/run/secrets/kubernetes.io/serviceaccount/token
-
/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
-
以及使用环境变量 KUBERNETES_SERVICE_HOST
和 KUBERNETES_SERVICE_PORT
来访问 API 服务器。 kube_client_options
:: (可选) 可以为 Kubernetes 客户端配置其他选项。目前支持客户端 QPS 和突发,如果未设置,将使用 Kubernetes 客户端的 默认 QPS 和突发。示例
kube_client_options: qps: 5 burst: 10
-
范围
- (可选) 指定自动发现的级别。
scope
可以取node
或cluster
作为值。node
范围允许发现指定节点中的资源。cluster
范围允许集群范围的发现。只有pod
和node
资源可以在节点范围内发现。 -
资源
- (可选) 指定要启动自动发现的资源。其中之一是
pod
、node
、service
。默认情况下,node
和pod
已启用。service
资源要求scope
设置为cluster
。 -
命名空间
- (可选) 选择要从中收集元数据的命名空间。如果未设置,则处理器将从所有命名空间收集元数据。默认情况下未设置。
-
包含注释
- (可选) 如果添加到提供程序配置中,则配置中存在的注释列表将添加到事件中。
-
包含标签
- (可选) 如果添加到提供程序配置中,则配置中存在的标签列表将添加到事件中。
-
排除标签
- (可选) 如果添加到提供程序配置中,则配置中存在的标签列表将从事件中排除。
-
标签.dedot
- (可选) 如果在提供程序配置中设置为
true
,则标签中的.
将替换为_
。默认情况下为true
。 -
注释.dedot
- (可选) 如果在提供程序配置中设置为
true
,则注释中的.
将替换为_
。默认情况下为true
。 -
添加资源元数据
-
(可选) 指定将添加到事件中的额外元数据的过滤器和配置。配置参数
-
node
或namespace
: 指定来自节点和命名空间的额外元数据的标签和注释过滤器。默认情况下,所有标签都包含在内,而注释则不包含。要更改默认行为,可以定义include_labels
、exclude_labels
和include_annotations
。这些设置在存储需要特殊处理以避免过度加载存储输出的标签和注释时很有用。可以通过将enabled: false
设置为禁用node
或namespace
元数据的丰富。通过将use_regex_include: true
与include_labels
结合使用,以及通过将use_regex_exclude: true
与exclude_labels
结合使用,在这些设置中支持通配符。 -
deployment
: 如果资源是pod
并且它是从deployment
创建的,默认情况下不会添加部署名称,可以通过将deployment: true
设置为启用。 -
cronjob
: 如果资源是pod
并且它是从cronjob
创建的,默认情况下不会添加 cronjob 名称,可以通过将cronjob: true
设置为启用。示例
-
add_resource_metadata: namespace: #use_regex_include: false include_labels: ["namespacelabel1"] #use_regex_exclude: false #exclude_labels: ["namespacelabel2"] node: #use_regex_include: false include_labels: ["nodelabel2"] include_annotations: ["nodeannotation1"] #use_regex_exclude: false #exclude_labels: ["nodelabel3"] #deployment: false #cronjob: false
Pod 资源的提供程序编辑
可用的键是
键 | 类型 | 描述 |
---|---|---|
|
|
Pod 的命名空间 |
|
|
Pod 的命名空间的 UID |
|
|
Pod 的命名空间的标签 |
|
|
Pod 的命名空间的注释 |
|
|
Pod 的名称 |
|
|
Pod 的 UID |
|
|
Pod 的 IP |
|
|
Pod 标签的对象 |
|
|
Pod 注释的对象 |
|
|
容器的名称 |
|
|
容器的运行时 |
|
|
容器的 ID |
|
|
容器的镜像 |
|
|
容器的端口(如果定义) |
|
|
容器的端口名称(如果定义) |
|
|
节点的名称 |
|
|
节点的 UID |
|
|
节点的主机名 |
|
|
节点的标签 |
|
|
节点的注释 |
|
|
Pod 的部署名称(如果存在) |
|
|
Pod 的 StatefulSet 名称(如果存在) |
|
|
Pod 的 ReplicaSet 名称(如果存在) |
这些是在配置模板中可用的字段。 kubernetes.*
字段将在每个发出的事件中可用。
kubernetes.labels.*
和 kubernetes.annotations.*
在配置模板中使用时不会被 dedote,不应与最终 Elasticsearch 文档中添加的标签和注释混淆,这些标签和注释默认情况下会被 dedote。有关示例,请参阅 基于条件的自动发现。
请注意,并非所有这些字段默认情况下都可用,需要特殊的配置选项才能包含它们。
例如,如果 Kubernetes 提供程序提供以下清单
[ { "id": "1", "mapping:": {"namespace": "kube-system", "pod": {"name": "kube-controllermanger"}}, "processors": {"add_fields": {"kuberentes.namespace": "kube-system", "kubernetes.pod": {"name": "kube-controllermanger"}} { "id": "2", "mapping:": {"namespace": "kube-system", "pod": {"name": "kube-scheduler"}}, "processors": {"add_fields": {"kubernetes.namespace": "kube-system", "kubernetes.pod": {"name": "kube-scheduler"}} } ]
Elastic Agent 会自动在结果前面加上 kubernetes
[ {"kubernetes": {"id": "1", "namespace": {"name": "kube-system"}, "pod": {"name": "kube-controllermanger"}}, {"kubernetes": {"id": "2", "namespace": {"name": "kube-system"}, "pod": {"name": "kube-scheduler"}}, ]
此外,Kubernetes 元数据默认情况下会添加到每个事件中。
节点资源的提供程序编辑
providers.kubernetes: node: ${NODE_NAME} scope: node #kube_config: /Users/elastic-agent/.kube/config #sync_period: 600s #cleanup_timeout: 60s resources: node: enabled: true
此资源默认情况下已启用,但在本示例中,我们为了清晰起见明确定义了它。
可用的键是
键 | 类型 | 描述 |
---|---|---|
|
|
节点标签的对象 |
|
|
节点标签的对象 |
|
|
节点的名称 |
|
|
节点的 UID |
|
|
节点的主机名 |
服务资源的提供程序编辑
providers.kubernetes: node: ${NODE_NAME} scope: cluster #kube_config: /Users/elastic-agent/.kube/config #sync_period: 600s #cleanup_timeout: 60s resources: service: enabled: true
请注意,此资源仅在 scope: cluster
设置下可用,而 node
不能用作范围。
可用的键是
键 | 类型 | 描述 |
---|---|---|
|
|
服务的命名空间 |
|
|
服务的命名空间的 UID |
|
|
服务的命名空间的标签 |
|
|
服务的命名空间的注释 |
|
|
服务的标签的对象 |
|
|
服务的标签的对象 |
|
|
服务的名称 |
|
|
服务的 UID |
|
|
Kubernetes 选择器 |
有关为自动发现塑造动态输入的更多信息,请参阅 使用 Elastic Agent 进行 Kubernetes 自动发现。