Applications
在 Kubernetes 中,如果你想通过 Prometheus 获取 部署的应用信息(比如 Deployment、StatefulSet、Service 等),通常使用 kube-state-metrics 提供的以下指标。它会将 Kubernetes 对象的状态以指标暴露出来。
Service 相关指标(服务)
kube_service_info
- 描述:K8s 中每个 Service 的基本信息
- 常用 label:
exported_namespace
(服务所在命名空间)exported_service
(服务名)cluster_ip
,type
等
- 📌 识别集群中有哪些服务(通常是暴露的应用)
为什么有两个 namespace
kube_service_info{
cluster_ip="10.96.121.123",
container="kube-state-metrics",
endpoint="http",
exported_namespace="foo",
exported_service="team-new-ai-assistant",
instance="172.20.0.103:8080",
job="prometheus-kube-state-metrics",
namespace="monitor",
pod="prometheus-kube-state-metrics-85db568dc7-nsjws",
prometheus="monitor/foo",
service="prometheus-kube-state-metrics"
}
namespace="monitor"
:指标来源(kube-state-metrics
所在的命名空间)exported_namespace="foo"
:被监控资源所在的命名空间。
这是 kube-state-metrics
的一个常见设计。
Deployment 相关指标(部署)
kube_deployment_labels
- 描述:列出每个 Deployment 的标签
- 📌 可以识别应用的分组(比如 app=nginx)
kube_deployment_created
- 描述:Deployment 的创建时间(Unix 时间戳)
kube_deployment_spec_replicas
- 描述:期望副本数
kube_deployment_status_replicas_available
- 描述:当前可用副本数
Pod 相关指标(实际运行的应用容器)
kube_pod_info
- 描述:每个 Pod 的基本信息
- 常用 label:
pod
,namespace
,node
,created_by_kind
,created_by_name
(可以追溯回应用)
kube_pod_labels
- 描述:Pod 的标签
- 📌 可用于过滤出特定 app,例如
app="myapp"
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 的 app
、component
、name
等标签来聚合:
count by (namespace, label_app) (kube_pod_labels)
No comments to display
No comments to display