Skip to content

监控体系

组件架构

监控数据流:
  节点指标 → node-exporter → Prometheus → Grafana
  K8s 状态 → kube-state-metrics → Prometheus → Grafana
  应用链路 → SkyWalking Agent → OAP Server → SkyWalking UI
  日志数据 → (Filebeat) → Elasticsearch → Kibana

告警流:
  Prometheus → AlertManager → (邮件/钉钉/企微)

组件版本

组件版本用途
Prometheusv3.2.1指标采集与存储
Grafanav11.1.0可视化仪表盘
AlertManagerv0.28.1告警路由与静默
node-exporterv1.9.0节点硬件/OS 指标
kube-state-metricsv2.15.0K8s 对象状态指标
SkyWalking OAP10.0.1APM 链路追踪后端
SkyWalking UI10.0.1链路追踪前端
Kibana6.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 > 10000

Grafana

安装

bash
cd k8s-apps/05-monitoring/02-grafana
bash install.sh

预置 Dashboard

文件内容
K8SPrometheusDashboard.jsonK8s 集群总览(节点、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.sh

SkyWalking 依赖 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

内部使用文档,请勿外传