1. 概览与准备
目的:结合实时监控(指标)与日志分析,提前发现性能降级、链路抖动、丢包或服务异常并自动化处置。
小分段:1) 准备一台或多台监控节点(可为云主机);2) 在目标 CN2 VPS 上保留 root 或 sudo 权限;3) 开放端口:Prometheus 拉取(默认 9100/9090)、Elasticsearch/Kibana(如使用本地 ELK);4) 记录 VPS IP、ASN、运营商信息(用于网络告警规则)。
2. 部署主机指标采集(Prometheus + Node Exporter)
步骤:1) 在目标 VPS 上安装 node_exporter:sudo useradd -m -s /bin/false node_exporter;下载二进制并放 /usr/local/bin,创建 systemd 服务;2) 启动:sudo systemctl enable --now node_exporter;3) 在监控服务器上安装 Prometheus(apt/yum 或二进制),编辑 prometheus.yml,加入 scrape job:
- job_name: "cn2-vps"
scrape_interval: 15s
static_configs: - targets: ["VPS_IP:9100"]
小分段:启动 prometheus 后,访问 http://prometheus:9090/targets 检查 target up。
3. 可视化与告警(Grafana + Alertmanager)
步骤:1) 安装 Grafana,添加 Prometheus 数据源;2) 导入或自建仪表盘:CPU、Memory、Disk、Network IO、TCP connections、loadavg、kernel dropped packets;3) 配置告警:在 Grafana 中建立面板告警或使用 Prometheus Alertmanager。
示例阈值:CPU 5m avg > 85% 持续 5 分钟告警;磁盘使用 > 90%;网络丢包(从 mtr/icmp 计算)丢包率 > 5%。
小分段:把 Alertmanager 配置为邮件、微信/企业微信、Slack 或钉钉通知,并配置 webhook 触发自动化脚本。
4. 日志采集与分析(Filebeat -> Elasticsearch -> Kibana)
步骤:1) 在 VPS 上安装 Filebeat:apt install filebeat;2) 配置 filebeat.yml 指定要采集的日志路径:/var/log/syslog, /var/log/nginx/*.log, /var/log/messages;3) 设置 processors(drop_fields、add_host)和输出到本地或集中 Elasticsearch;4) 在 Kibana 创建索引模板并建立日志视图。
小分段:编写 grok 模式解析 Nginx 5xx、超时、慢响应(request_time > 1s)并建立可视化和告警(Watcher 或 Kibana Alert)。
5. 网络层专用监控与链路检测
步骤:1) 安装 mtr、iperf3、tcptraceroute;2) 定期 cron 脚本运行:mtr -r -c 100 -w target_ip,保存结果到 /var/log/network_checks/;3) 在 Filebeat 中采集这些检查日志并解析 hop 丢包和延迟峰值;4) 在 Prometheus 中引入 blackbox_exporter 用于主动探测 HTTP/TCP/ICMP,设置 probe 针对 CN2 路径延迟/丢包。
小分段:当连续 3 次 probe 丢包 > 10% 或 RTT 突增 50%,触发告警并记录 mtr 原始结果到 Kibana。
6. 自动化恢复与运行脚本
步骤:1) 编写 webhook 接收器(Python Flask 或 shell hook)用于 Alertmanager 或 Kibana Alert 触发;2) 常用自动化动作示例:systemctl restart nginx、clear cache、ip route replace/flush、重启 network 接口;3) 使用 Ansible 管理批量 VPS 操作并在告警时触发 playbook(ansible-playbook -i hosts recover.yml --limit target);4) 告警记录每次自动恢复结果回填到日志系统。
小分段:自动化必须有等级控制:只有在可逆影响小的情况下自动执行重启类动作,严重故障须人工确认。
7. 日常维护、日志留存与演练
步骤:1) 设置 logrotate,Elasticsearch 索引周期和 ILM 策略(热-暖-冷);2) 每月演练:模拟高 CPU、网络丢包、5xx 急增,验证告警链路与自动化脚本是否生效;3) 定期检查监控采集的 scrape 性能,确保 Prometheus 不漏数据;4) 评估告警噪声,调整抑制/分级(severity)策略。
小分段:保留至少 30 天的详细日志用于突发问题回溯,关键审计日志保存 90 天以上。
8. 问:如何快速确认是不是 CN2 专线问题导致的延迟或丢包?
问答:问:发现到某 VN 目的地延迟突增,如何判断是本地 VPS、上游还是 CN2 线路问题?
答:先用本机 mtr/iperf3 对比到多个同 ASN/不同 ASN 的目标;若本机到路由器第一跳延迟正常但中间跳点延迟/丢包在境外或运营商网段上升,倾向上游/CN2 路径问题;结合 traceroute 保留历史样本比对,若多点同时存在异常且非本地资源占用,则通知带宽/链路提供商并附上 mtr/kibana 报表截图。
9. 问:告警频繁如何降低噪声并避免遗漏真实故障?
问答:问:我配置了很多阈值但经常告警,如何优化?
答:分层告警(info/warn/critical),采用聚合规则(例如短时 spike 不告警,持续 N 次或持续时间 T 后触发),使用抑制(silence)窗口处理维护期告警;并基于日志关联(比如 5xx 激增 + nginx slow logs)提升告警准确度,减少误报。
10. 问:如何验证自动化恢复操作是安全且有效的?
问答:问:自动重启服务或路由操作会不会引发更大问题?如何验证?
答:先在预发/测试环境做演练,记录所有操作前的快照(配置、路由表、关键进程状态);将自动化脚本设置为幂等且有回滚逻辑(重启失败回滚并上报);为每个自动动作设置访问控制与操作白名单,人工确认阈值和双人审批对高风险操作必需开启。
来源:监控告警结合日志分析保障越南cn2 vps长期健康运行