kubernetes_sd_configs各个role支持的标签
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config
下面复制的kubernetes_sd_configs各个role支持的标签
<kubernetes_sd_config> Kubernetes SD 配置允许从 Kubernetes 的 REST API 检索抓取目标,并始终与 集群状态。
可以配置以下类型之一来发现目标:role
node
该角色为每个集群节点发现一个目标,地址默认 到 Kubelet 的 HTTP 端口。 目标地址默认为 Kubernetes 的第一个现有地址 地址类型顺序为 、 、 和 的节点对象。nodeNodeInternalIP NodeExternalIP NodeLegacyHostIP NodeHostName
可用的元标签:
__meta_kubernetes_node_name:节点对象的名称。
__meta_kubernetes_node_provider_id:节点对象的云提供商名称。 _meta_kubernetes_node_label:节点对象中的每个标签,任何不受支持的字符都转换为下划线。
__meta_kubernetes_node_labelpresent:对于节点对象中的每个标签,任何不受支持的字符都转换为下划线, node
该角色为每个集群节点发现一个目标,地址默认 到 Kubelet 的 HTTP 端口。 目标地址默认为 Kubernetes 的第一个现有地址 地址类型顺序为 的节点对象。nodeNodeInternalIP NodeExternalIP NodeLegacyHostIP NodeHostName
可用的元标签:
- __meta_kubernetes_node_name:节点对象的名称。
- __meta_kubernetes_node_provider_id:节点对象的云提供商名称。
- __meta_kubernetes_node_label_<labelname>:节点对象中的每个标签,任何不受支持的字符都转换为下划线。
- __meta_kubernetes_node_labelpresent_<labelname>:对于节点对象中的每个标签,任何不受支持的字符都转换为下划线。true
- __meta_kubernetes_node_annotation_<annotationname>:节点对象中的每个注释。
- __meta_kubernetes_node_annotationpresent_<annotationname>:节点对象中的每个注释。true
- _meta_kubernetes_node_address<address_type>:每个节点地址类型的第一个地址(如果存在)。
<address_type>: InternalIP ExternalIP LegacyHostIP
此外,节点的标签将设置为节点名称 从 API 服务器检索。instance
service
该角色为每个服务发现每个服务端口的目标。 这通常对于服务的黑盒监控很有用。 该地址将设置为服务的 Kubernetes DNS 名称和相应的 服务端口。service
可用的元标签:
- __meta_kubernetes_namespace:服务对象的命名空间。
- __meta_kubernetes_service_annotation_<annotationname>:服务对象中的每个注释。
- __meta_kubernetes_service_annotationpresent_<annotationname>: “true”。
- __meta_kubernetes_service_cluster_ip:服务的集群 IP 地址。(不适用于 ExternalName 类型的服务)
- __meta_kubernetes_service_loadbalancer_ip:负载均衡器的 IP 地址。(适用于 LoadBalancer 类型的服务)
- __meta_kubernetes_service_external_name:服务的 DNS 名称。(适用于 ExternalName 类型的服务)
- __meta_kubernetes_service_label_<labelname>:服务对象中的每个标签,以及任何不受支持的字符都转换为下划线。
- __meta_kubernetes_service_labelpresent_<labelname>:对于服务对象的每个标签,任何不受支持的字符都转换为下划线。true
- __meta_kubernetes_service_name:服务对象的名称。
- __meta_kubernetes_service_port_name:目标的服务端口的名称。
- __meta_kubernetes_service_port_number:目标的服务端口编号。
- __meta_kubernetes_service_port_protocol:目标的服务端口的协议。
- __meta_kubernetes_service_type:服务的类型。
pod
该角色会发现所有 Pod 并将其容器公开为目标。对于每个声明的 port 时,将生成单个目标。如果容器没有指定的端口, 为每个容器创建一个无端口目标,用于通过重新标记手动添加端口。pod
可用的元标签:
- __meta_kubernetes_namespace:Pod 对象的命名空间。
- __meta_kubernetes_pod_name:Pod 对象的名称。
- __meta_kubernetes_pod_ip:Pod 对象的 Pod IP。
- __meta_kubernetes_pod_label_<labelname>:Pod 对象中的每个标签,以及任何不受支持的字符都转换为下划线。
- __meta_kubernetes_pod_labelpresent_<labelname>:对于 Pod 对象中的每个标签,任何不支持的字符都转换为下划线。true
- __meta_kubernetes_pod_annotation_<annotationname>:Pod 对象中的每个注解。
- __meta_kubernetes_pod_annotationpresent_<annotationname>: 对于 Pod 对象中的每个注释。true
- __meta_kubernetes_pod_container_init:如果容器是 InitContainertrue
- __meta_kubernetes_pod_container_name:目标地址指向的容器的名称。
- __meta_kubernetes_pod_container_id:目标地址指向的容器的 ID。ID 采用 的格式为 。<type>://<container_id>
- __meta_kubernetes_pod_container_image:容器正在使用的映像。
- __meta_kubernetes_pod_container_port_name:集装箱端口的名称。
- __meta_kubernetes_pod_container_port_number:集装箱港口的编号。
- __meta_kubernetes_pod_container_port_protocol:集装箱端口的协议。
- __meta_kubernetes_pod_ready:将容器的就绪状态设置为 或 。truefalse
- __meta_kubernetes_pod_phase:在生命周期中设置为 、 、 或。PendingRunningSucceededFailedUnknown
- __meta_kubernetes_pod_node_name:Pod 调度到的节点的名称。
- __meta_kubernetes_pod_host_ip:Pod 对象的当前主机 IP。
- __meta_kubernetes_pod_uid:Pod 对象的 UID。
- __meta_kubernetes_pod_controller_kind:Pod 控制器的对象类型。
- __meta_kubernetes_pod_controller_name:容器控制器的名称。
endpoints
该角色从服务的列出端点发现目标。对于每个终结点 每个端口发现一个目标。如果端点由 Pod 支持,则所有 Pod 的其他容器端口(未绑定到端点端口)也会被发现为目标。endpoints
请注意,端点 API 在 Kubernetes v1.33+ 中已弃用, 建议改用 EndpointSlices 并切换到以下角色。endpointslice
可用的元标签:
__meta_kubernetes_namespace:端点对象的命名空间。
__meta_kubernetes_endpoints_name:端点对象的名称。
__meta_kubernetes_endpoints_label_<labelname>:端点对象中的每个标签,以及任何不受支持的字符转换为下划线。
__meta_kubernetes_endpoints_labelpresent_<labelname>:对于 Endpoints 对象中的每个标签,任何不受支持的字符都转换为下划线。true
__meta_kubernetes_endpoints_annotation_<annotationname>:端点对象中的每个注释。
__meta_kubernetes_endpoints_annotationpresent_<annotationname>: 对于 endpoints 对象中的每个注释。true
对于直接从端点列表中发现的所有目标(未额外推断的目标 来自底层 Pod),附加了以下标签:
__meta_kubernetes_endpoint_hostname:端点的主机名。
__meta_kubernetes_endpoint_node_name:托管终结点的节点的名称。
__meta_kubernetes_endpoint_ready:设置为 或 ,用于端点的就绪状态。truefalse
__meta_kubernetes_endpoint_port_name:终端端口的名称。
__meta_kubernetes_endpoint_port_protocol:终端端口的协议。
__meta_kubernetes_endpoint_address_target_kind:终结点地址目标的类型。
__meta_kubernetes_endpoint_address_target_name:终端地址目标的名称。
如果端点属于服务,则会附加发现的所有标签。role: service
对于容器支持的所有目标,将附加发现的所有标签。role: pod
endpointslice
该角色从现有端点切片中发现目标。对于每个终结点 EndpointSlice 对象中引用的地址被发现一个目标。如果端点由 Pod 支持,则所有 Pod 的其他容器端口(未绑定到端点端口)也会被发现为目标。endpointslice
该角色需要 API 版本(从 Kubernetes v1.21 开始可用)。discovery.k8s.io/v1
可用的元标签:
- __meta_kubernetes_namespace:端点对象的命名空间。
- __meta_kubernetes_endpointslice_name:endpointslice 对象的名称。
- __meta_kubernetes_endpointslice_label_<labelname>:endpointslice 对象中的每个标签,以及任何不受支持的字符转换为下划线。
- __meta_kubernetes_endpointslice_labelpresent_<labelname>:对于 EndpointSlice 对象中的每个标签,将任何不受支持的字符转换为下划线。true
- __meta_kubernetes_endpointslice_annotation_<annotationname>:来自 endpointslice 对象的每个注释。
- __meta_kubernetes_endpointslice_annotationpresent_<annotationname>:对于 endpointslice 对象中的每个注释。true
- 对于直接从端点切片列表中发现的所有目标(未额外推断的目标 来自底层 Pod),附加了以下标签:
- __meta_kubernetes_endpointslice_address_target_kind:引用对象的种类。
- __meta_kubernetes_endpointslice_address_target_name:引用对象的名称。
- __meta_kubernetes_endpointslice_address_type:目标地址的 ip 协议系列。
- __meta_kubernetes_endpointslice_endpoint_conditions_ready:设置为 或 引用的端点的就绪状态。truefalse
- __meta_kubernetes_endpointslice_endpoint_conditions_serving:设置为 或 引用的终结点的服务状态。truefalse
- __meta_kubernetes_endpointslice_endpoint_conditions_terminating:设置为 或 引用的端点的终止状态。truefalse
- __meta_kubernetes_endpointslice_endpoint_topology_kubernetes_io_hostname:托管引用端点的节点的名称。
- __meta_kubernetes_endpointslice_endpoint_topology_present_kubernetes_io_hostname:显示引用对象是否具有 kubernetes.io/hostname 注释的标志。
- __meta_kubernetes_endpointslice_endpoint_hostname:引用端点的主机名。
- __meta_kubernetes_endpointslice_endpoint_node_name:托管引用端点的节点的名称。
- __meta_kubernetes_endpointslice_endpoint_zone:引用的终结点所在的区域。
- __meta_kubernetes_endpointslice_port:引用端点的端口。
- __meta_kubernetes_endpointslice_port_name:引用的终结点的命名端口。
- __meta_kubernetes_endpointslice_port_protocol:引用端点的协议。
- 如果端点属于服务,则会附加发现的所有标签。role: service
ingress
该角色为每个入口的每个路径发现一个目标。 这通常对于入口的黑盒监控很有用。 地址将设置为入口规范中指定的主机。ingress
该角色需要 API 版本(从 Kubernetes v1.19 开始可用)。networking.k8s.io/v1
可用的元标签:
- __meta_kubernetes_namespace:入口对象的命名空间。
- __meta_kubernetes_ingress_name:入口对象的名称。
- __meta_kubernetes_ingress_label_<labelname>:入口对象中的每个标签,任何不受支持的字符都转换为下划线。
- __meta_kubernetes_ingress_labelpresent_<labelname>:对于入口对象中的每个标签,任何不受支持的字符都转换为下划线。true
- __meta_kubernetes_ingress_annotation_<annotationname>:来自入口对象的每个注释。
- __meta_kubernetes_ingress_annotationpresent_<annotationname>:对于入口对象中的每个注释。true
- __meta_kubernetes_ingress_class_name:入口规范中的类名(如果存在)。
- __meta_kubernetes_ingress_scheme:入口协议方案,如果 TLS config 已设置。默认为 。httpshttp
- __meta_kubernetes_ingress_path:来自入口规范的路径。默认为 。/
custom-apiserver
查看kube-system 无控制器的pod
role: endpoint
使用这个role会找kubernetes(apiserver)-endpoints
那边找到Kube-apiserver这个服务,就是找default空间下的svc / kubernetes
keep就类似grep从多个被自动发现监控项target里去过滤出指定的,drop过滤指定的匹配target
labelmap截取从正则匹配的标签名,并把其label_key和对应的value报错到新的多个标签及值,如:
__meta_kubernetes_service_label_component -> component

Coredns
根据regex找到 core-dns
查看coredns在的svc->kube-dns
可以看到具体的annotations有提供prometheus.io/port和prometheus.io/scrape

role: node
使用这个role默认会从10250这个端口开始找/metrics
监控kube-scheduler
kubeadm安装时,默认kube-scheduler以pod启动,并监听在127.0.0.1:10259,需要让其端口监听地址能让集群访问,修改0.0.0.0
配置监控 kube-scheduler

监控kube-proxy
查看kube-proxy端口10249
开启kube-proxy的metrics地址
配置监控

监控kube-controller-manager
开启10257对外访问
配置监控

role: pod
这里支持pod里有对应的注解表示提供监控指标prometheus.io/scrape: "true"
一般node和endpoints用的多,一个pod或者deployment登控制器直接加一个service加上注解,就能被直接发现被监控。
各个节点配置了node-expoter配置daemonset配置了注解,则其pod可以被发现
Kubernetes_sd_configs配置详解

被折叠的 条评论
为什么被折叠?



