Prometheus+Grafana:监控 K8s 集群
·
Prometheus + Grafana:监控 Kubernetes 集群
1. 核心组件作用
- Prometheus:开源的时序数据库和监控系统,负责采集、存储集群指标。
- Grafana:可视化平台,通过 Prometheus 数据源生成监控仪表盘。
- Kubernetes 监控对象:
- 节点资源(CPU、内存、磁盘)
- Pod/容器状态
- 服务流量
- 自定义应用指标
2. 部署流程
(1) 部署 Prometheus
通过 Helm 快速安装(需提前安装 Helm):
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
关键组件自动部署:
- Prometheus Server(指标存储)
- Node Exporter(节点指标采集)
- Kube State Metrics(K8s 对象状态采集)
- Alertmanager(告警管理)
(2) 部署 Grafana
helm install grafana grafana/grafana
获取管理员密码:
kubectl get secret grafana -o jsonpath="{.data.admin-password}" | base64 --decode
(3) 配置数据源
- 访问 Grafana Web 界面(端口转发):
kubectl port-forward service/grafana 3000:80 - 添加数据源:
- 类型:
Prometheus - URL:
http://prometheus-operated:9090(K8s Service 域名)
- 类型:
3. 关键监控指标
| 指标类型 | PromQL 示例 | 说明 |
|---|---|---|
| 节点 CPU 使用率 | 1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) | 计算空闲率反向推导 |
| 内存使用 | node_memory_MemTotal_bytes - node_memory_MemFree_bytes | 实际消耗内存 |
| Pod 重启次数 | kube_pod_container_status_restarts_total | 异常重启预警 |
| 网络流量 | rate(container_network_receive_bytes_total[5m]) | 接收字节速率 |
4. Grafana 仪表盘配置
导入官方模板:
- 访问 Grafana 仪表盘库
- 搜索
Kubernetes模板(如 ID6417) - 输入模板 ID 自动导入
自定义查询示例(Pod CPU 使用):
sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (pod)
5. 告警规则配置
在 Prometheus 中定义告警(prometheus-rules.yaml):
groups:
- name: node-alert
rules:
- alert: HighNodeCPU
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 10m
labels:
severity: critical
annotations:
summary: "节点 CPU 过载 ({{ $labels.instance }})"
6. 优化实践
- 指标保留策略:调整
prometheus.yml的retention参数 - 资源限制:为 Prometheus Pod 设置内存/CPU 限制
- 持久化存储:挂载 PVC 避免数据丢失
- TLS 加密:启用 Prometheus 和 Grafana 的 HTTPS 访问
故障排查提示:
- 检查 Exporter 状态:
kubectl get pods -l app.kubernetes.io/name=prometheus- 验证指标采集:
curl http://prometheus-operated:9090/metrics- Grafana 日志:
kubectl logs deploy/grafana
通过上述步骤,可建立完整的 K8s 集群监控体系,实时掌握集群健康状态,快速响应异常。
更多推荐
所有评论(0)