«

Prometheus 在 K8S 集群中自动发现常用角色(Role)的解释

作者:myluzh 分类: Kubernetes 长度:4016 阅读:305


0x01 Role概述

在 Prometheus 的 Kubernetes 自动发现(kubernetes_sd_configs)中,有许多常用的 角色(roles),可以用来发现不同类型的 Kubernetes 资源。

自动发现的主要优点

无需手动更新配置文件,减少运维压力。实时适应动态环境,监控目标自动更新。通过 relabeling 和过滤规则灵活管理目标。适用于大规模和快速变化的环境。如果环境是动态的(如 Kubernetes 集群),自动发现是非常有价值的工具,它让 Prometheus 能更高效、智能地工作,从而减少了监控管理的复杂性。

0x02 Role介绍

以下是常用的自动发现角色以及适用场景。

1. ingress

描述: 用于发现 Kubernetes 中的 Ingress 资源(通常对应 HTTP/HTTPS 的路由)。
应用场景: 动态监控暴露的域名或服务入口,结合 Blackbox Exporter 对域名进行探测。
发现的元数据:
meta_kubernetes_ingress_name:Ingress 名称
__meta_kubernetes_ingress_host:Ingress 中定义的域名
meta_kubernetes_namespace:Ingress 所属的命名空间

2. pod

描述: 用于发现 Kubernetes 中的 Pod。
应用场景: 动态监控应用的健康状态、性能指标或内部服务。
发现的元数据:
__meta_kubernetes_pod_name:Pod 名称
meta_kubernetes_podlabel*:Pod 上的标签
meta_kubernetes_pod_container_name:容器名称
__meta_kubernetes_pod_ip:Pod 的 IP 地址

3. service

描述: 用于发现 Kubernetes 中的 Service(ClusterIP、NodePort、LoadBalancer)。
应用场景: 动态发现服务的暴露接口,适合监控外部流量或负载均衡器。
发现的元数据:
__meta_kubernetes_service_name:Service 名称
meta_kubernetes_servicelabel*:Service 的标签
meta_kubernetes_service_port_name:Service 暴露的端口名称
__meta_kubernetes_namespace:Service 所属的命名空间

4. endpoints

描述: 用于发现 Service 的 Endpoints(具体的后端 Pod 或 IP 地址)。
应用场景: 适合监控服务后端的 Pod 或实例(如每个服务的健康状态、负载等)。
发现的元数据:
meta_kubernetes_endpoints_name:Endpoints 名称
__meta_kubernetes_endpoint_address:后端 IP 地址
meta_kubernetes_endpoint_port_name:对应的端口名称

5. node

描述: 用于发现 Kubernetes 集群中的 Node(工作节点)。
应用场景: 监控 Kubernetes 节点的资源使用情况(CPU、内存、磁盘等),适合结合 Node Exporter 使用。
发现的元数据:
__meta_kubernetes_node_name:Node 名称
meta_kubernetes_nodelabel*:Node 的标签
meta_kubernetes_nodeaddress*:Node 的地址信息(InternalIP、ExternalIP)

6. namespace

描述: 用于发现 Kubernetes 中的 Namespace。
应用场景: 适合在 Namespace 层面进行分组监控(如命名空间级别的资源分配、隔离策略)。
发现的元数据:
meta_kubernetes_namespace:Namespace 名称
meta_kubernetes_namespacelabel*:Namespace 的标签

7. configmap 和 secret

描述: 用于发现 Kubernetes 中的 ConfigMap 和 Secret。
应用场景: 监控配置文件或敏感信息的变更(虽然不常用)。
发现的元数据:
meta_kubernetes_configmap_name:ConfigMap 名称
__meta_kubernetes_secret_name:Secret 名称
meta_kubernetes_namespace:所属 Namespace

8. cronjob 和 job

描述: 用于发现 Kubernetes 中的 CronJob 和 Job。
应用场景: 监控定时任务或一次性 Job 的执行状态。
发现的元数据:
meta_kubernetes_cronjob_name:CronJob 名称
__meta_kubernetes_job_name:Job 名称
meta_kubernetes_namespace:Namespace 名称

9. statefulset, daemonset, replicaset, 和 deployment

描述: 用于发现 Kubernetes 中的工作负载资源。
应用场景: 监控特定的工作负载是否正常运行。
发现的元数据:
meta_kubernetes_statefulset_name:StatefulSet 名称
__meta_kubernetes_daemonset_name:DaemonSet 名称
meta_kubernetes_replicaset_name:ReplicaSet 名称
__meta_kubernetes_deployment_name:Deployment 名称

0x03 总结

| ingress | 动态发现 HTTP/HTTPS 入口资源,适合域名或流量入口监控。 |
| pod | 动态发现 Pod,适合监控容器或应用实例。 |
| service | 动态发现 Service,适合监控服务暴露的接口或负载均衡器。 |
| endpoints | 动态发现后端的具体实例(Pod/IP),适合深度服务监控。 |
| node | 动态发现节点资源,适合结合 Node Exporter 进行节点级监控。 |
| namespace | 动态发现 Namespace,适合按命名空间分组监控。 |
| configmap/secret | 监控配置文件或敏感信息的变更(较少使用)。 |
| cronjob/job | 动态发现定时任务或一次性 Job,适合任务状态监控。 |
| statefulset | 动态发现有状态的应用资源,适合持久化服务(如数据库)监控。 |
| daemonset | 动态发现守护进程类工作负载,适合主机级别监控工具(如日志、监控代理)。 |
| replicaset | 动态发现副本集,适合监控具体副本状态。 |
| deployment | 动态发现 Deployment,适合监控无状态服务的分发和运行状态。 |

选择角色时,请根据实际监控需求确定需要自动发现的资源类型,配合 relabeling 规则进一步筛选和优化目标。

k8s Prometheus 监控 自动发现 sd kubernetes_sd_configs


正文到此结束
版权声明:若无特殊注明,本文皆为 Myluzh Blog 原创,转载请保留文章出处。
文章内容:https://itho.cn/k8s/473.html
文章标题:《Prometheus 在 K8S 集群中自动发现常用角色(Role)的解释