1.
需求与范围定义
首先清点台湾站群所有服务器(IP/主机名/角色:web、db、缓存、负载均衡等),并标注生产/预发/测试、机房位置、网络段。列出必须监控的业务层面(页面可用性、API响应、交易成功率)和基础设施层面(CPU、内存、磁盘、网络、进程、端口、文件系统、磁盘IO、硬件温度)。制定SLA与告警等级(P1/P2/P3)与处理时限。
2.
技术选型与架构设计
推荐使用Prometheus + node_exporter/blackbox_exporter + Alertmanager + Grafana 做指标与告警,ELK/EFK 做日志聚合,Heartbeat/外部探针做合成监控,若需长期存储可加Thanos。为台湾站群添加label: region="tw",env="prod"便于告警路由。
3.
部署基础监控(Prometheus & Node Exporter)
在每台服务器安装node_exporter:下载并启动(示例:wget https://.../node_exporter.tar.gz;tar -xz;./node_exporter &)。在Prometheus server的prometheus.yml加入scrape_configs,示例:scrape_configs: - job_name: 'nodes' static_configs: - targets: ['10.0.1.1:9100','10.0.1.2:9100'] labels: {region: "tw", env: "prod"}。启动Prometheus并验证 /targets 页面。
4.
应用与服务指标采集
对Nginx/Apache启用stub_status或VTS模块并使用nginx_exporter;MySQL启用mysqld_exporter采集连接数、慢查询、复制延迟;Redis启用redis_exporter采集内存、命中率、阻塞事件。将各服务metrics注册为Prometheus目标,使用labels区分站点。
5.
黑盒合成监控与外部探测
部署blackbox_exporter或使用第三方外部探针(如UptimeRobot)。配置对关键域名/接口的HTTP(S)探测、DNS解析、TCP端口探测、TLS证书到期检查。示例blackbox模块配置并在Prometheus中增加job_name: 'blackbox',targets为站群域名。
6.
告警策略与规则编写
按SLA制定告警规则:例如CPU连涨5分钟>85%触发P2,磁盘使用率>90%触发P1,MySQL replication_lag>10s触发P1,HTTP 5xx比率在5分钟内>1%触发P1。在Prometheus中编写alerting rules文件,使用for字段避免抖动,例如 for: 5m。
7.
Alertmanager配置与通知路由
搭建Alertmanager集群(建议3节点)。配置receivers(Email、Webhook、Slack/企业微信、短信网关)。使用routes按labels(region="tw"、team="ops"、severity="P1")路由告警,设置group_by、group_wait、group_interval、repeat_interval,避免告警风暴。
8.
告警抑制、去重与抄送策略
配置inhibit_rules抑制下游告警(例如主机不可达时抑制其上面服务的告警)。设置告警分级与升级流程:初始告警通过钉钉/微信推送,超时未确认则短信+电话+escalation组。
9.
日志聚合与错误告警
使用Filebeat采集各服务日志到Logstash/Fluentd,再入Elasticsearch并在Kibana中创建视图。对关键错误(ERROR、Exception、500)建立实时告警,使用Watcher或ElastAlert,当错误速率在短时间内激增触发P1。
10.
高可用与故障转移检测
对Prometheus和Alertmanager做集群/HA配置,对关键服务使用Keepalived或HAProxy做负载均衡与主备切换,监控VIP漂移、后端节点状态、负载均衡器连接数。设置健康检查脚本并在Prometheus中采集。
11.
演练与运维文档
为每类告警准备标准运行手册(Runbook),包含初步排障命令(如top、iotop、ss/netstat、tail -n)、回滚方案与联系电话。定期做故障演练(模拟单机故障、网络故障、数据库主备切换),验证告警与值班流程有效性。
12.
持续优化与容量预警
配置recording rules记录历史趋势(如daily_avg_cpu、disk_growth_rate),设定容量预警阈值并提前通知扩容。定期审查报警规则的误报/漏报率并调整阈值与抑制策略。
13.
安全与合规注意事项
监控系统本身要隔离管理网络,Prometheus只监听内部端口、开启TLS与基本认证,Alertmanager接收敏感信息的Webhook需加签名,日志中脱敏用户隐私数据,遵守当地法律合规要求。
14.
问:如何快速定位台湾站群单点主机CPU飙升问题?
15.
答:
先在Prometheus查看该主机node_cpu指标和process_cpu_seconds_total,定位是系统进程还是用户进程;使用ssh登录执行top/htop、ps aux --sort=-%cpu查高CPU进程,若为Java/PHP进程,抓取线程栈(jstack)或开启慢请求日志,查看最近部署变更并回滚可疑发布。
16.
问:告警频繁抖动如何处理以减少误报?
17.
答:
采用Prometheus alert for字段延迟触发(如for:5m),设置grouping和抑制规则;利用recording rules平滑短时间波动(avg_over_time);针对网络抖动类事件设置inhibit_rules在上游故障时抑制下游告警。
18.
问:如何按台湾地域单独路由告警到当地运维团队?
19.
答:
在Prometheus scrape中为目标添加label region="tw",在Alertmanager的route中按match: { region: "tw" }设定receiver为台湾运维组(微信/邮件/电话),并配置escalation策略与时区相关的值班时间。
来源:监控报警方案构建确保台湾站群服务器稳定运行与预警