MCP(Mission Critical Platform)服务器监控是保障关键业务系统稳定运行的核心环节。过去三年里,我们团队负责维护的金融交易系统日均处理超过200万笔交易,峰值QPS达到5000+。这套监控体系从最初的Zabbix单节点部署,逐步演进为现在的Prometheus+Alertmanager+Grafana全栈方案,期间踩过的坑和积累的经验值得系统梳理。
关键认知:监控系统不是简单的指标收集工具,而是反映系统健康状态的神经系统。好的监控应该像专业赛车手的仪表盘,能让你在高速行驶中瞬间捕捉异常。
早期采用Zabbix 4.0 LTS版本,架构特点:
遇到的典型问题:
为解决Zabbix的性能瓶颈,尝试了以下方案:
核心改进点:
最终采用的Prometheus生态方案:
code复制[应用节点] -> [Prometheus Exporter]
-> [Prometheus Server]
-> [Alertmanager]
-> [Grafana]
-> [长期存储: Thanos]
关键组件版本:
yaml复制# 示例:节点基础指标
- name: node_cpu_usage
expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
alert: >5%持续5分钟
- name: disk_io_await
expr: rate(node_disk_io_time_seconds_total[1m])
alert: >100ms持续2分钟
金融交易系统特有的黄金指标:
采用RED方法定义核心指标:
示例SLO配置:
promql复制# 交易成功率SLO
sum(rate(http_requests_total{code=~"2.."}[5m]))
by (service)
/ sum(rate(http_requests_total[5m]))
by (service) > 0.999
| 级别 | 响应时间 | 通知渠道 | 示例场景 |
|---|---|---|---|
| P0 | 5分钟 | 电话呼叫 | 数据库主节点宕机 |
| P1 | 15分钟 | 企业微信 | API成功率下降 |
| P2 | 1小时 | 邮件 | 磁盘空间预警 |
避免告警风暴的关键配置:
yaml复制route:
group_by: ['alertname', 'cluster']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
实测数据:
| 参数 | 默认值 | 优化值 | 效果 |
|---|---|---|---|
| storage.tsdb.retention | 15d | 30d | +100%存储 |
| storage.tsdb.wal-compression | false | true | -40% WAL大小 |
| --storage.tsdb.max-block-chunk-segment-size | 512MB | 2GB | -30%碎片文件 |
高效PromQL写法对比:
promql复制# 低效写法
sum(rate(http_requests_total[5m])) by (service)
# 优化写法(利用记录规则)
sum(rate(http_requests_total:rate5m[5m])) by (service)
典型采集端资源消耗:
| Exporter类型 | CPU占用 | 内存占用 | 网络流量 |
|---|---|---|---|
| node_exporter | 0.5核 | 50MB | 50KB/s |
| mysqld_exporter | 0.3核 | 30MB | 20KB/s |
现象:凌晨3点磁盘util持续100%
排查路径:
工具链组合:
ChaosMesh测试场景:
yaml复制apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
spec:
action: partition
direction: both
target:
selector:
namespaces: ["payment"]
经验之谈:监控系统的维护成本往往被低估。我们现在的运维投入分配是:60%精力处理告警,30%优化监控本身,只有10%用于新增功能。这个比例需要定期审视调整。