kube-prometheus-stack 组件说明
整体关系先看:
Kubernetes API Server
|
|
kube-state-metrics
|
|
Node Exporter ---> Prometheus <---- ServiceMonitor
|
|
Alertmanager
|
|
Grafana
简单理解:
-
Prometheus:负责采集和存储指标
-
Grafana:负责展示指标
-
Alertmanager:负责告警
-
Node Exporter:负责采集服务器指标
-
kube-state-metrics:负责采集 Kubernetes 对象状态
-
Prometheus Operator:负责管理 Prometheus
1. prometheus-monitoring-kube-prometheus-prometheus-0
执行:
kubectl get pod -n monitoring
prometheus-monitoring-kube-prometheus-prometheus-0
READY 2/2 Running
这是整个监控系统的核心。
Prometheus 是什么?
Prometheus 是一个时间序列数据库。
它不断主动去访问目标:
Prometheus
|
|
↓
/metrics
例如:
Node Exporter:
http://node-exporter:9100/metrics
返回:
node_cpu_seconds_total 123456
node_memory_MemAvailable_bytes 123456
Prometheus 保存:
时间
|
指标
|
数值
例如:
2026-07-20 10:00
cpu_usage = 20%
2026-07-20 10:01
cpu_usage = 30%
所以它可以查询:
最近一天 CPU 使用率变化?
Prometheus 负责:
服务器指标
例如:
CPU
内存
磁盘
网络
Kubernetes指标
例如:
Pod数量
Pod状态
Node状态
Deployment副本数
2. monitoring-grafana
:
monitoring-grafana-58b87475bf-v4zrk
READY 3/3
这是 Grafana。
作用:
把 Prometheus 的数据变成人能看的图。
例如:
Prometheus 返回:
node_cpu_seconds_total
Grafana显示:
CPU
|
| ___
| /
|___/
时间 →
你打开 Grafana 后看到的:
-
CPU Dashboard
-
Memory Dashboard
-
Kubernetes Cluster Dashboard
都是 Grafana画出来的。
Grafana 不存数据
很多新人容易误解:
错误:
Grafana存监控数据
实际:
Grafana
|
|
查询
|
↓
Prometheus
Grafana只是展示层。
3. alertmanager-monitoring-kube-prometheus-alertmanager-0
:
alertmanager...
READY 2/2
负责:
接收告警,并通知人。
流程:
Prometheus
|
发现CPU超过90%
|
发送告警
|
Alertmanager
|
|
微信
邮件
钉钉
Slack
例如:
Prometheus规则:
alert:
HighCPU
expr:
cpu_usage > 90
for:
5m
意思:
CPU超过90%,持续5分钟。
然后:
Prometheus
|
v
Alertmanager
|
v
发送通知
4. monitoring-kube-prometheus-operator
:
monitoring-kube-prometheus-operator
READY 1/1
这个非常重要。
它是 Kubernetes Operator。
传统方式:
你想创建 Prometheus:
需要写:
Deployment
Service
ConfigMap
RBAC
Volume
几十个 YAML。
Operator之后:
只需要:
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
Operator自动创建:
Prometheus Pod
Service
Config
Storage
它管理:
Prometheus
Alertmanager
ServiceMonitor
PodMonitor
Rules
可以理解:
Operator
|
|
管理
|
+---- Prometheus
|
+---- Alertmanager
5. monitoring-kube-state-metrics
:
monitoring-kube-state-metrics
READY 1/1
这个是 Kubernetes 专属指标采集器。
注意:
它不是采集服务器CPU。
它采集:
Kubernetes对象状态
例如:
集群:
Deployment nginx
replica=3
kube-state-metrics生成:
kube_deployment_status_replicas=3
Pod状态:
Running
Pending
Failed
转换:
kube_pod_status_phase
例如:
问题:
Pod ImagePullBackOff
kube-state-metrics可以告诉Prometheus:
这个Pod异常
然后告警。
6. monitoring-prometheus-node-exporter
:
monitoring-prometheus-node-exporter-fmkhq
这个负责:
Linux节点指标
它运行在每个节点:
DaemonSet。
采集:
CPU
node_cpu_seconds_total
内存
node_memory_MemAvailable_bytes
磁盘
node_filesystem_avail_bytes
网络
node_network_receive_bytes_total
例如:
Ubuntu服务器:
CPU 20%
Memory 8GB
Disk 100GB
都是它采集。
组件之间数据流
完整过程:
第一步
Node Exporter:
Ubuntu
|
|
9100端口
|
metrics
↓
第二步
Prometheus:
拉取数据
保存历史
↓
第三步
Grafana:
查询Prometheus
展示Dashboard
↓
第四步
异常:
Prometheus Rule
CPU >90%
↓
Alertmanager
↓
通知
为什么 kube-state-metrics 需要单独存在?
这是很多初学者疑惑点。
Node Exporter:
关注:
机器怎么样?
例如:
CPU
内存
磁盘
kube-state-metrics:
关注:
Kubernetes怎么样?
例如:
Pod死了吗?
Deployment少副本了吗?
Node Ready了吗?
所以:
| 组件 | 关注对象 |
|---|---|
| Node Exporter | Linux服务器 |
| kube-state-metrics | Kubernetes状态 |
| Prometheus | 数据存储和查询 |
| Grafana | 展示 |
| Alertmanager | 告警 |
| Operator | 管理整个监控系统 |
当前这套环境实际上已经是很多公司的 Kubernetes基础监控平台。
下一步建议你不要急着装更多东西,可以开始深入:
-
看 Prometheus Targets(理解采集)
-
学 PromQL(查询语言)
-
自己写一个 ServiceMonitor
-
接入 Python/Go 服务指标
-
最后再进入 AIops Agent:
Prometheus API
|
|
LLM
|
|
自动分析故障
这会和你之前提到的 运维 Agent / AIops 方向直接衔接。
