主题
监控体系
组件架构
监控数据流:
节点指标 → node-exporter → Prometheus → Grafana
K8s 状态 → kube-state-metrics → Prometheus → Grafana
应用链路 → SkyWalking Agent → OAP Server → SkyWalking UI
日志数据 → (Filebeat) → Elasticsearch → Kibana
告警流:
Prometheus → AlertManager → (邮件/钉钉/企微)组件版本
| 组件 | 版本 | 用途 |
|---|---|---|
| Prometheus | v3.2.1 | 指标采集与存储 |
| Grafana | v11.1.0 | 可视化仪表盘 |
| AlertManager | v0.28.1 | 告警路由与静默 |
| node-exporter | v1.9.0 | 节点硬件/OS 指标 |
| kube-state-metrics | v2.15.0 | K8s 对象状态指标 |
| SkyWalking OAP | 10.0.1 | APM 链路追踪后端 |
| SkyWalking UI | 10.0.1 | 链路追踪前端 |
| Kibana | 6.8.23 | 日志检索可视化 |
| Kindling | - | eBPF 可观测性(可选) |
部署目录
k8s-apps/05-monitoring/
├── 01-prometheus/ Prometheus(老版本配置)
├── 01-prometheus2025/ Prometheus(2025 新版配置,推荐)
├── 02-grafana/ Grafana + 预置 Dashboard
├── 03-skywalking/ SkyWalking APM
├── 04-kindling/ Kindling eBPF(可选)
└── 05-kibana/ Kibana 日志可视化Prometheus
安装
bash
cd k8s-apps/05-monitoring/01-prometheus2025
bash install.sh访问
bash
# 获取 NodePort
kubectl get svc -n monitoring | grep prometheus
# 访问地址(通常)
http://<节点IP>:30090关键指标
promql
# 节点 CPU 使用率
1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)
# 内存使用率
1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)
# Pod 重启次数(告警用)
rate(kube_pod_container_status_restarts_total[1h]) > 0
# Kafka 消息积压
kafka_consumergroup_lag > 10000Grafana
安装
bash
cd k8s-apps/05-monitoring/02-grafana
bash install.sh预置 Dashboard
| 文件 | 内容 |
|---|---|
K8SPrometheusDashboard.json | K8s 集群总览(节点、Pod、资源) |
NodeExporter.json | 节点详情(CPU/内存/磁盘/网络) |
导入 Dashboard:
bash
# 访问 Grafana
http://<节点IP>:<grafana-nodeport>
# 默认账号
admin / admin(首次登录需修改密码)
# 导入路径
左侧菜单 → Dashboards → Import → 上传 JSON 文件添加 Prometheus 数据源
URL: http://prometheus-server.monitoring.svc:80
Access: Server (default)SkyWalking APM
安装
bash
cd k8s-apps/05-monitoring/03-skywalking
bash install.shSkyWalking 依赖 ES
SkyWalking OAP 需要 Elasticsearch 作为存储后端。安装时确保 ES 已就绪:
bash
kubectl get pod -n yidun-infra -l app=elasticsearch-master访问
OAP: http://<节点IP>:<oap-nodeport>
UI: http://<节点IP>:<ui-nodeport>应用接入
业务服务通过 SkyWalking Agent 上报链路数据:
yaml
# 在容器启动参数中配置
env:
- name: SW_AGENT_NAME
value: "antispam-business"
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: "skywalking-oap.monitoring.svc:11800"Kibana
安装
bash
cd k8s-apps/05-monitoring/05-kibana
bash install.sh访问
http://<节点IP>:<kibana-nodeport>
默认连接 Elasticsearch NodePort 30092常用索引查询
# 反垃圾业务日志
antispam-*
# 检测请求日志
yidun-check-*告警配置
AlertManager 配置在 Prometheus values.yaml 中:
yaml
alertmanager:
config:
receivers:
- name: webhook
webhook_configs:
- url: "http://your-webhook-url"
route:
receiver: webhook
group_wait: 30s
group_interval: 5m
repeat_interval: 4h常用监控命令
bash
# 查看 Pod 资源使用
kubectl top pod -n yidun
kubectl top pod -n yidun-infra
# 查看节点资源
kubectl top node
# 查看 Pod 重启历史
kubectl get pod -A | awk '$4>0'
# 查看近期事件(错误)
kubectl get events -A --sort-by='.lastTimestamp' | grep -i error | tail -20