目标:在香港云服务器被限制(限速、丢包、HTTP 429 等)前通过监控和告警提前发现并响应。小分段:1) 明确要监控的指标(带宽、丢包、TCP 连接速率、HTTP 4xx/5xx 特别是429、延迟);2) 准备账号与权限(SSH、服务器管理员、Grafana/Prometheus 权限);3) 准备工具(Prometheus、node_exporter、Grafana、Alertmanager、tcpdump、iftop、vnstat、iperf3、curl)。
步骤:1) 登录香港云服务器:ssh user@your-hk-server-ip;2) 安装 node_exporter(以 Ubuntu 为例):
sudo apt update && sudo apt install -y wget
wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar xzf node_exporter-1.5.0.linux-amd64.tar.gz && sudo mv node_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin/
创建 systemd 服务:/etc/systemd/system/node_exporter.service(设置 ExecStart=/usr/local/bin/node_exporter)
然后 sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter。小分段:确认端口(默认9100)能被 Prometheus 抓取。
步骤:1) 在监控主机安装 Prometheus;2) 编辑 /etc/prometheus/prometheus.yml,添加 scrape job:
- job_name: 'hk-servers'
static_configs:
- targets: ['your-hk-server-ip:9100']
3) 重启 Prometheus:sudo systemctl restart prometheus。小分段:确认 Prometheus UI(http://prometheus:9090)能看到节点和采集到的指标,如 node_network_receive_bytes_total、node_network_transmit_bytes_total、node_tcp_time_waits 等。
关键告警示例与说明:1) 带宽异常(持续 5 分钟内出站带宽超过阈值):
expr: rate(node_network_transmit_bytes_total{device!~"lo"}[5m]) > 10000000
2) HTTP 429 激增(如果有应用导出 http_requests_total 指标):
expr: increase(http_requests_total{code="429"}[2m]) > 5
3) 丢包/队列丢弃(通过 ifconfig 或 tc 指标):
expr: increase(node_network_transmit_errs_total[5m]) > 0
小分段:把以上规则放到 alerts.yml,prometheus.yml 引用 rule_files,然后 reload Prometheus。
步骤:1) 安装 Alertmanager 并配置 route;2) 配置通知接收器(邮件、Slack、微信企业号、Webhook);3) 示例 Slack 配置(alertmanager.yml):
receivers:
- name: 'slack-webhook'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXX/YYY/ZZZ'
小分段:测试告警发送:在 Prometheus UI 手动触发 alert 或使用 alertmanager 的 test 接口确认能收到通知。
步骤:1) 安装 Grafana 并连接 Prometheus 数据源;2) 创建面板:带宽(tx/rx)、连接数(node_netstat_Tcp_CurrEstab)、TCP 重传率、HTTP 4xx/5xx 计数;3) 添加阈值和注释便于审计。小分段:为关键告警建立图表链接,在告警通知中附上仪表盘 URL 便于快速定位。
排查步骤(按优先级执行):1) 查看带宽与连接:sudo iftop -i eth0 或 sudo vnstat -tr;2) 检查网络队列与丢包:sudo tc -s qdisc show dev eth0;3) 检查 TCP 连接状态:ss -s 或 ss -tan | awk '{print $1}';4) 检查 HTTP 429 或错误:sudo tail -n 200 /var/log/nginx/access.log | grep " 429 ";5) 抓包确认(短时):sudo tcpdump -i eth0 -s 0 -w /tmp/capture.pcap port 80 or port 443。小分段:用 curl 模拟请求检测是否出现 429:for i in {1..50}; do curl -I https://your-site -s | head -n1; done
步骤:1) 使用 ab 或 hey 或 wrk 做压力测试:hey -n 10000 -c 100 https://your-site;2) 观察 Prometheus 与 Grafana 中的指标变化;3) 验证告警触发与通知是否按预期发送。小分段:测试后务必清理流量并监控是否恢复正常;若出现真实限速,应立刻收集证据(tcpdump、日志、时间线)。
建议步骤:1) 立即限流/降级非必要外发请求,减少单 IP 对外连接速率;2) 联系香港云服务商提交工单并附上监控截图与抓包文件;3) 临时切换到 CDN 或分流到其他区域;4) 长期:申请提升带宽、增加弹性公网 IP 或使用负载均衡。小分段:保留日志和监控数据供售后及合规使用。
答:应优先监控出站与入站字节速率(node_network_transmit_bytes_total/receive)、TCP 连接建立速率与异常状态(ss/ node_netstat 指标)、HTTP 429 或 5xx 错误计数、网络接口错误/丢包(tc/ifconfig 指标)、以及 RTT/延迟异常。组合这些指标可在限流前几分钟发现异常趋势。
答:先做对比诊断:1) 同区域同网络的其他实例是否有相同异常;2) 抓包观察是否有大量 RST、重传或 ICMP 消息;3) 检查 HTTP 返回码是否为 429 且伴随相同时间窗口;4) 临时把流量切换到另一出口或使用 CDN,看问题是否消失。若多实例同时出现且网络层有丢包/重传迹象,云商限流可能性大。
答:把监控与告警写入运维 SOP:1) 定义告警等级与响应人:P0(立即响应)等;2) 告警触发后自动采集诊断包(运行 tcpdump、ss、iftop 脚本并上传到集中存储);3) 自动发起工单模板并通知值班工程师;4) 定期演练(每季度做一次模拟限流响应)。把这些步骤用脚本和自动化工具实现可显著缩短响应时间。