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
- (可选) 指定停止容器运行配置之前的空闲时间。默认为
60s
。 -
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
。当存储需要特殊处理以避免过载存储输出的标签和注释时,这些设置非常有用。node
或namespace
元数据的丰富功能可以通过设置enabled: false
来单独禁用。通过结合使用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 自动发现。