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

[root@k8smaster1 prometheus]# ss -tnlp | grep '\b1025.\b'
LISTEN 0      2048        127.0.0.1:10257      0.0.0.0:*    users:(("kube-controller",pid=2012,fd=3))

LISTEN 0      2048        127.0.0.1:10259      0.0.0.0:*    users:(("kube-scheduler",pid=2049,fd=3))

LISTEN 0      128                 *:10250            :    users:(("kubelet",pid=874,fd=25))

LISTEN 0      2048                *:10256            :    users:(("kube-proxy",pid=2417,fd=8))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

role: endpoint

使用这个role会找kubernetes(apiserver)-endpoints

[root@k8smaster1 prometheus]# kubectl -ndefault get svc kubernetes
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   5d6h
[root@k8smaster1 prometheus]# kubectl -ndefault get endpoints kubernetes
NAME         ENDPOINTS             AGE
kubernetes   192.168.40.180:6443   5d6h
[root@k8smaster1 prometheus]# kubectl -ndefault get endpoints kubernetes -o yaml
apiVersion: v1
kind: Endpoints
metadata:
  creationTimestamp: "2025-07-24T03:02:22Z"
  labels:
    endpointslice.kubernetes.io/skip-mirror: "true"
  name: kubernetes
  namespace: default
  resourceVersion: "199"
  uid: 9237c5c0-0d51-43db-a7ee-89de42f5a9b1
subsets:
- addresses:
  - ip: 192.168.40.180
  ports:
  - name: https
    port: 6443
    protocol: TCP
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

那边找到Kube-apiserver这个服务,就是找default空间下的svc / kubernetes

- job_name: 'apiserver'
  kubernetes_sd_configs:
  - role: endpoints
  scheme: https
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  relabel_configs:
  - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
    action: keep
    regex: default;kubernetes;https
  - regex: __meta_kubernetes_service_label_(.+)
    action: labelmap
# keep 说明从3个标签里的值匹配对应3个值,default空间;svc名字kubernetes;对应的endpoint的端口name名字(-name: https)
# 那么地址就只有https://kubernetes.default.svc:6443
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

keep就类似grep从多个被自动发现监控项target里去过滤出指定的,drop过滤指定的匹配target

labelmap截取从正则匹配的标签名,并把其label_key和对应的value报错到新的多个标签及值,如:

__meta_kubernetes_service_label_component -> component

kubernetes_sd_configs配置_结点

Coredns

根据regex找到 core-dns

- job_name: 'core-dns'
	kubernetes_sd_configs:
- role: endpoints
	relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
	regex: true
	action: keep
- source_labels: [__meta_kubernetes_namespace,__address__]
	regex: kube-system;([^:]+):53
	action: keep
- action: labelmap
	regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__address__]
	regex: (.+):53
	target_label: __address__
	replacement: ${1}:9153
# 直接过滤出kube-system名称空间下的内部地址有53端口的服务,里面默认会有一个9153提供/metrics,可以查看
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

查看coredns在的svc->kube-dns

 可以看到具体的annotations有提供prometheus.io/port和prometheus.io/scrape

[root@k8smaster1 prometheus]# kubectl -nkube-system get svc kube-dns
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   6d
[root@k8smaster1 prometheus]# kubectl -nkube-system get svc kube-dns -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/port: "9153"
    prometheus.io/scrape: "true"
  creationTimestamp: "2025-07-24T03:02:23Z"
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: CoreDNS
  name: kube-dns
  namespace: kube-system
  resourceVersion: "265"
  uid: 7daac058-c69c-4512-b32c-08501982a7d7
spec:
  clusterIP: 10.96.0.10
  clusterIPs:
  - 10.96.0.10
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: dns
    port: 53
    protocol: UDP
    targetPort: 53
  - name: dns-tcp
    port: 53
    protocol: TCP
    targetPort: 53
  - name: metrics
    port: 9153
    protocol: TCP
    targetPort: 9153
  selector:
    k8s-app: kube-dns
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.

kubernetes_sd_configs配置_结点_02

role: node

使用这个role默认会从10250这个端口开始找/metrics

监控kube-scheduler

kubeadm安装时,默认kube-scheduler以pod启动,并监听在127.0.0.1:10259,需要让其端口监听地址能让集群访问,修改0.0.0.0

[root@k8smaster1 prometheus]# vim /etc/kubernetes/manifests/kube-scheduler.yaml 

  labels:
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    component: kube-scheduler
    tier: control-plane
  name: kube-scheduler
  namespace: kube-system
spec:
  containers:
  - command:
    - kube-scheduler
    - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
    - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
    #- --bind-address=127.0.0.1
    - --bind-address=0.0.0.0
    - --kubeconfig=/etc/kubernetes/scheduler.conf
    - --leader-elect=true
    image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.32.2
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
[root@k8smaster1 prometheus]# ss -tnlp | grep 10259
LISTEN 0      2048                *:10259            *:*    users:(("kube-scheduler",pid=222107,fd=3))
  • 1.
  • 2.

配置监控 kube-scheduler

- job_name: 'kube-scheduler'
  kubernetes_sd_configs:
  - role: node
  scheme: https
  tls_config:
    #ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  relabel_configs:
  - source_labels: [__meta_kubernetes_node_name]
    regex: (k8smaster.*)
    action: keep
  - source_labels: [__meta_kubernetes_node_address_InternalIP]
    regex: (.+)
    action: replace
    replacement: ${1}:10259
    target_label: __address__
  - source_labels: [__meta_kubernetes_node_name]
    action: replace
    regex: (.+)
    replacement: kube-scheduler-${1}
    target_label: node_name
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

kubernetes_sd_configs配置_下划线_03

监控kube-proxy

查看kube-proxy端口10249

[root@k8smaster1 ~]# ss -tnlp| grep '102' | tr -s ' '
LISTEN 0 128 127.0.0.1:10248 0.0.0.0:* users:(("kubelet",pid=854,fd=15)) 
LISTEN 0 2048 127.0.0.1:10249 0.0.0.0:* users:(("kube-proxy",pid=2406,fd=9)) 
LISTEN 0 2048 127.0.0.1:10257 0.0.0.0:* users:(("kube-controller",pid=2051,fd=3)) 
LISTEN 0 128 *:10250 *:* users:(("kubelet",pid=854,fd=10)) 
LISTEN 0 2048 *:10256 *:* users:(("kube-proxy",pid=2406,fd=8)) 
LISTEN 0 2048 *:10259 *:* users:(("kube-scheduler",pid=222107,fd=3))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

开启kube-proxy的metrics地址

[root@k8smaster1 prometheus]# kubectl edit cm -n kube-system kube-proxy

    metricsBindAddress: "0.0.0.0:10249"

[root@k8smaster1 prometheus]# kubectl -nkube-system rollout restart ds kube-proxy

[root@k8smaster1 prometheus]# ss -tnl | grep 10249
LISTEN 0      2048                *:10249            *:*
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

配置监控

- job_name: 'kube-proxy'
  kubernetes_sd_configs:
  - role: node
  scheme: https
  tls_config:
    #ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  relabel_configs:
  - source_labels: [__meta_kubernetes_node_name]
    regex: (kube-proxy.*)
    action: keep
  - source_labels: [__address__]
    regex: (.+):10250
    action: replace
    replacement: ${1}:10249
    target_label: __address__
  - regex: __meta_kubernetes_node_label_(.+)
    action: labelmap
  - source_labels: [__meta_kubernetes_node_name]
    action: replace
    target_label: node_name
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

kubernetes_sd_configs配置_下划线_04

监控kube-controller-manager

开启10257对外访问

[root@k8smaster1 manifests]# vim /etc/kubernetes/manifests/kube-controller-manager.yaml 

    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --bind-address=0.0.0.0
[root@k8smaster1 manifests]# ss -tnl | grep 10257
LISTEN 0      2048                *:10257            *:*
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

配置监控

- job_name: 'kube-controller-manager'
  kubernetes_sd_configs:
  - role: node
  scheme: https
  tls_config:
    #ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  relabel_configs:
  - source_labels: [__meta_kubernetes_node_name]
    regex: '(k8smaster.*)'
    action: keep
  - source_labels: [__address__]
    regex: (.+):10250
    replacement: ${1}:10257
    target_label: __address__
  - regex: __meta_kubernetes_node_label_(.+)
    action: labelmap
  - source_labels: [__meta_kubernetes_node_name]
    regex: (.+)
    target_label: node_name
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

kubernetes_sd_configs配置_结点_05

role: pod

 这里支持pod里有对应的注解表示提供监控指标prometheus.io/scrape: "true"

- job_name: 'kubernetes-pods'
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - action: keep
    regex: true
    source_labels:
    - __meta_kubernetes_pod_annotation_prometheus_io_scrape
  - action: replace
    regex: (.+)
    source_labels:
    - __meta_kubernetes_pod_annotation_prometheus_io_path
    target_label: __metrics_path__
  - action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    source_labels:
    - __address__
    - __meta_kubernetes_pod_annotation_prometheus_io_port
    target_label: __address__
  - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)
  - action: replace
    source_labels:
    - __meta_kubernetes_namespace
    target_label: kubernetes_namespace
  - action: replace
    source_labels: __meta_kubernetes_namespace
    target_label: kubernetes_namespace
  - action: replace
    source_labels:
    - __meta_kubernetes_pod_name
    target_label: kubernetes_pod_name
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.

一般node和endpoints用的多,一个pod或者deployment登控制器直接加一个service加上注解,就能被直接发现被监控。

- job_name: 'kubernetes-service-endpoints'
      kubernetes_sd_configs:
      - role: endpoints
      relabel_configs:
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
        action: keep
        regex: true
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
        action: replace
        target_label: __scheme__
        regex: (https?)
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
        action: replace
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
        action: replace
        target_label: __address__
        regex: ([^:]+)(?::\d+)?;(\d+)
        replacement: $1:$2
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: kubernetes_namespace
      - source_labels: [__meta_kubernetes_service_name]
        action: replace
        target_label: kubernetes_name
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

各个节点配置了node-expoter配置daemonset配置了注解,则其pod可以被发现