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
-
node
-
(可选)指定将 Elastic Agent 的范围限定到的节点,以防默认发现方法无法准确检测到该节点
- 如果 Elastic Agent 作为 Pod 部署在 Kubernetes 集群中,请使用 Pod 的主机名作为 Pod 名称来查询 Pod 元数据以获取节点名称。
- 如果步骤 1 失败或 Elastic Agent 部署在 Kubernetes 集群外部,请使用 machine-id 来匹配 Kubernetes 节点以获取节点名称。
- 如果无法通过步骤 1 或 2 发现节点,则回退到
NODE_NAME
环境变量作为默认值。如果未设置,则返回错误。
-
cleanup_timeout
- (可选)指定停止容器正在运行的配置之前的不活动时间。默认为
60 秒
。 -
sync_period
- (可选)指定列出历史资源的超时时间。
-
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
- (可选)指定自动发现的级别。
scope
可以采用node
或cluster
作为值。node
范围允许发现指定节点中的资源。cluster
范围允许集群范围的发现。在节点范围内,只能发现pod
和node
资源。 -
resources
- (可选)指定要启动自动发现的资源。可以是
pod
、node
或service
之一。默认情况下启用node
和pod
。service
资源要求将scope
设置为cluster
。 -
namespace
- (可选)选择要从中收集元数据的命名空间。如果未设置,处理器将从所有命名空间收集元数据。默认情况下未设置。
-
include_annotations
- (可选)如果添加到提供程序配置中,则配置中存在的注释列表将添加到事件中。
-
include_labels
- (可选)如果添加到提供程序配置中,则配置中存在的标签列表将添加到事件中。
-
exclude_labels
- (可选)如果添加到提供程序配置中,则配置中存在的标签列表将从事件中排除。
-
labels.dedot
- (可选)如果在提供程序配置中设置为
true
,则标签中的.
将替换为_
。默认情况下为true
。 -
annotations.dedot
- (可选)如果在提供程序配置中设置为
true
,则注释中的.
将替换为_
。默认情况下为true
。 -
add_resource_metadata
-
(可选)指定要添加到事件的额外元数据的过滤器和配置。配置参数
-
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.*
未去点,不应与最终 Elasticsearch 文档中添加的默认情况下已去点的标签和注释混淆。有关示例,请参阅 基于条件的自动发现。
请注意,并非所有这些字段都默认可用,需要特殊配置选项才能将其包括在内。
例如,如果 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 自动发现。