Skip to main content

Applications

在 Kubernetes 中,如果你想通过 Prometheus 获取 部署的应用信息(比如 Deployment、StatefulSet、Service 等),通常使用 kube-state-metrics 提供的以下指标。它会将 Kubernetes 对象的状态以指标暴露出来。


🧩 1. Service 相关指标(服务)

kube_service_info

  • 描述:K8s 中每个 Service 的基本信息
  • 常用 label:
    • exported_namespace(服务所在命名空间)
    • exported_service(服务名)
    • cluster_ip, type
  • 📌 识别集群中有哪些服务(通常是暴露的应用)

🧩 2. Deployment 相关指标(部署)

kube_deployment_labels

  • 描述:列出每个 Deployment 的标签
  • 📌 可以识别应用的分组(比如 app=nginx)

kube_deployment_created

  • 描述:Deployment 的创建时间(Unix 时间戳)

kube_deployment_spec_replicas

  • 描述:期望副本数

kube_deployment_status_replicas_available

  • 描述:当前可用副本数

🧩 3. Pod 相关指标(实际运行的应用容器)

kube_pod_info

  • 描述:每个 Pod 的基本信息
  • 常用 label:
    • pod, namespace, node, created_by_kind, created_by_name(可以追溯回应用)

kube_pod_labels

  • 描述:Pod 的标签
  • 📌 可用于过滤出特定 app,例如 app="myapp"

🧩 4. StatefulSet / DaemonSet(有状态服务)

  • kube_statefulset_info
  • kube_daemonset_info
  • kube_statefulset_labels
  • kube_daemonset_labels

实际查询示例

获取所有已部署服务列表(应用级别)

kube_service_info

获取所有 Deployment 名称

kube_deployment_labels

你可以加上 label_replace 提取 Deployment 名称:

label_replace(kube_deployment_labels, "deployment", "$1", "deployment", "(.*)")

🚀 如果你想识别“有哪些应用在运行”?

一个通用的做法是通过 Deployment 或 Pod 的 appcomponentname 等标签来聚合:

count by (namespace, label_app) (kube_pod_labels)