1. 目标:在CN2美国云服务器上实现指标采集、可视化与报警。小分段:说明监控栈选型(Prometheus + node_exporter + Grafana + Alertmanager),优点:轻量、开源、易扩展。部署方式:集中Prometheus服务部署在管理网络或公有云控制节点。
2. 前提:服务器可出入公网(或能与Prometheus互通),有root权限。小分段:准备一台Prometheus+Alertmanager+Grafana服务器;确认防火墙开放9090/9093/3000端口;安装curl、tar、systemd。
3. 核心指标:CPU、内存、磁盘IO、磁盘空间、网络带宽、TCP连接数、进程存活、延迟对中国的ping/mtr结果。小分段:针对CN2网络关注丢包与往返时延(rtt)、BGP路由异常需告警。
4. 步骤:1) 下载最新node_exporter:curl -LO https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*-linux-amd64.tar.gz。2) 解压并移动到/usr/local/node_exporter,创建systemd服务文件。3) systemctl daemon-reload && systemctl enable --now node_exporter。小分段:确认端口9100监听,命令:ss -lntp | grep 9100。
5. 步骤:编辑Prometheus配置prometheus.yml,添加scrape_configs段:targets包含CN2节点IP:9100。小分段:示例:- job_name: 'cn2-us' static_configs: - targets: ['1.2.3.4:9100']。重启Prometheus:systemctl restart prometheus,访问http://prom-server:9090/targets确认状态为UP。
6. 步骤:在Prometheus中添加alerting规则文件alerts.yml,示例规则:CPU使用率>80%持续5分钟触发。小分段:rules示例:- alert: HighCPU expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) *100) > 80 for: 5m labels: severity: critical。配置Alertmanager接收器(email、钉钉Webhook或Slack),在alertmanager.yml中设置receivers并绑定路由。重载Alertmanager后在Prometheus中配置alerting -> Alertmanager地址。
7. Grafana:添加Prometheus为数据源,导入node_exporter仪表盘。小分段:测试报警:使用命令stress或模拟高IO:sudo stress --cpu 4 --timeout 300s,确认Prometheus捕获并触发Alertmanager,Alertmanager发送通知。防火墙:在CN2节点允许Prometheus服务器IP访问9100端口,命令示例:iptables -I INPUT -p tcp -s
8. 问:CN2网络波动如何纳入报警?
答:答:在被监控节点上部署ping_exporter或自定义脚本定时ping国内关键点(如大陆NTP/DNS)并暴露为Prometheus指标;在Prometheus写报警规则,例如packet_loss>5%或avg_rtt>200ms持续3分钟触发,报警通过Alertmanager推送至钉钉/邮件。
9. 问:如何保证报警不被误报(抑制抖动)?
答:答:使用for字段要求指标持续触发一段时间(如5m),在Alertmanager设置抑制(inhibit_rules)避免相关重复报警,使用分级(severity)、重复限流(group_interval)并在报警消息中包含当前采样窗口与历史值以便判断。
10. 问:遇到Prometheus或Alertmanager故障怎么办?
答:答:首先查看service状态与日志(journalctl -u prometheus -f / journalctl -u alertmanager -f),确认磁盘空间与内存;若服务挂掉可启动备份Prometheus或用简单脚本监控重要指标并通过curl调用Webhook发送紧急通知;长期看建议Prometheus做HA或采集关键告警到外部SaaS以防单点。