说明目标:实时+历史监控香港 CN2 虚拟主机(VPS/云主机)CPU、内存、磁盘、网络、I/O、进程与端口使用,并用数据做容量规划。
准备工作:需有管理权限(root 或 sudo),可以安装 agent / 导出器;准备一台监控服务器或使用托管监控服务(Prometheus+Grafana、Zabbix、Netdata 等)。
建议频率:采样间隔 15s-60s,长期趋势用 1min 聚合,保留 90 天或更久的历史以便容量预测。
推荐理由:开源、易扩展、支持自定义告警和可视化;同时可选择 Zabbix/Netdata。
组件:在每台主机安装 node_exporter(采集系统指标),在容器环境加 cAdvisor,网络流量用 vnStat/softflow 或 node_exporter 的 iface 指标。
高可用:生产环境建议 Prometheus HA、远程存储(Thanos、Cortex 或 InfluxDB)。
步骤(以 Linux 为例):
1) 下载并解压:wget https://github.com/prometheus/node_exporter/releases/download/vX.Y.Z/node_exporter-X.Y.Z.linux-amd64.tar.gz;tar -xzf ...
2) 创建 systemd 服务:/etc/systemd/system/node_exporter.service,ExecStart 指向解压的二进制;然后 systemctl daemon-reload && systemctl enable --now node_exporter。
3) 验证:curl http://localhost:9100/metrics 应返回指标。
Prometheus 配置示例:在 prometheus.yml 中加入 scrape_configs:
- job_name: 'node' static_configs: - targets: ['hk-vps-1:9100','hk-vps-2:9100']。
重载 Prometheus(systemctl restart prometheus 或 POST /-/reload)。
验证:访问 Prometheus 的 Targets 页面看抓取是否成功。
导入或自建面板:导入 node_exporter 的社区仪表盘(CPU、Memory、Disk、Network、Filesystem、I/O 等)。
关键面板:CPU 利用率(user/system/iowait)、Load Average、free/used memory、disk IOPS、disk latency、network tx/rx、conntrack、established sockets。
建议:设置时序图用 95th 百分位(P95)和 max 曲线,便于容量判断。
CN2 关注点:跨境延时、丢包、带宽峰值与 ISP 出口策略。
工具:在主机上用 ping、mtr(mtr -r -c 100 x.x.x.x)采样到目标节点(如大陆节点、近端 POP)以测延时与丢包;使用 iperf3 做吞吐测试(iperf3 -s 与 iperf3 -c)。
被动监控:采集 if_bytes、if_errors、tcp_retransmits(node_exporter 的 tcp_* 指标)观察丢包与重传。
进程级别:使用 cadvisor/Docker stats 监控容器,配置 process_exporter 或自定义 exporter 报告关键服务(nginx、php-fpm、mysql)指标。
日志关联:将关键错误日志送到 ELK/EFK,结合监控面板定位性能瓶颈。
示例:监控 MySQL 的 Threads_connected、QPS、慢查询数,用 mysqld_exporter。
设定原则:先设高频告警(严重事件立即通知),再设趋势告警(资源连续增长)。
示例阈值:CPU 持续 90% 5 分钟;内存使用率 >85% 并伴随 swap 增长;磁盘 I/O 等待(iowait)>30%;网络带宽接近上限 90%。
通知方式:邮件、Slack、微信企业号或 PagerDuty;在告警中包含主机、时间、相关图表链接与建议执行操作。
短期高精度(15s)用于实时告警,长期聚合(1min/5min)用于趋势分析与容量规划。
Prometheus 可用远程写入到长期存储(Thanos、Cortex、InfluxDB);保留周期建议至少 90 天,方便季节性分析与年比年增长计算。
压缩与 downsampling:保存 P95/P99 指标值以减少存储同时保留峰值信息。
步骤一:收集基线数据——至少 2-4 周完整工作负载数据(含峰值时段)。
步骤二:计算关键指标的统计量——平均、P50、P95、P99、峰值。示例:带宽 P95=200Mbps,当前线路 300Mbps。
步骤三:确定安全系数(headroom),例如 CPU/带宽留 25%-40% 余量,磁盘 IOPS 留 30% 余量。
步骤四:根据增长率做预测:按月增长率 r,未来 n 个月需要 = 当前 * (1+r)^n;并考虑业务促销/活动的临时峰值。
扩容方式:纵向(升级实例规格:CPU/RAM/带宽)或横向(增加节点、负载均衡与分布式存储)。
验证:做压测(wrk、ab、siege、sysbench)模拟峰值并监控 KPl;演练自动扩缩容或手动切换流量的流程。
注意:CN2 网络带宽可能按运营商计费,扩容前确认带宽变更与计费方式。
建议每月/每季度复审监控数据,特别关注 P95/P99 指标与业务峰值差异。
优化项:缓存(Redis/本地缓存)、CDN 减少出带、数据库索引与读写分离、拆分大文件/对象存储以减少磁盘 IOPS。
文档化:把扩容步骤、告警处理流程、联系人与回滚计划写成 runbook。
问:在香港 CN2 虚拟主机出现丢包时,怎样快速定位是在本地、宿主机、运营商还是目的端导致?
答:按步骤:1) 本机使用 ifconfig/ethtool/ifstat 查看网卡错误;2) 用 mtr 对目标做连续路由追踪,观察跨域丢包跳点;3) 在不同目的地(内地/海外)做对比测试;4) 若怀疑宿主或链路,提交给云商/带宽提供商并附上 mtr/traceroute 与时间段的 pcap(tcpdump -w 文件);5) 运营商确认后验证修复。
问:拿到监控数据后,怎样决定是应该扩容主机还是先做应用优化?
答:对比资源利用与效率:如果 CPU/内存/IO 长期接近但业务请求量低,先优化应用(查询、缓存)。若资源短时暴涨并伴随业务增长趋势,优先扩容并做水平扩展。用 P95/P99、请求量增长率与单请求成本做决策。
问:监控组件(Prometheus/agent)出现故障会丢失数据,如何降低风险?
答:采取冗余与持久化:1) 部署 Prometheus HA 或多个采集副本;2) 使用 agent 本地缓冲并开启远程写(Prometheus remote_write 到长期存储);3) 定期备份配置与 Grafana 仪表盘;4) 对关键告警设外部备用告警路径(如直接由云商控制台或主机自检脚本触发短信)。