监控云服务器的流量消耗是保障成本可控、性能优化和安全审计的重要环节。以下是系统化、可落地的监控方案,适用于主流云平台(阿里云、腾讯云、AWS、华为云等)及自建服务器:
一、云平台原生监控(推荐首选)
✅ 优势:免部署、高精度、与计费联动、支持告警
🔧 操作方式:
| 云厂商 | 监控路径 | 关键指标 | 补充说明 |
|---|---|---|---|
| 阿里云 ECS | 云监控 → 云服务监控 → ECS → 选择实例 → 网络监控 | IntranetInRate / IntranetOutRate(内网)、InternetInRate / InternetOutRate(公网)• 日/月总流量(需聚合) |
✅ 支持按小时/天/月导出流量报表 ✅ 设置「公网出方向流量超阈值」告警(防X_X/CC攻击) |
| 腾讯云 CVM | 云监控 → 主机监控 → 选择实例 → 网络监控 | net.in.rate / net.out.rate(含内网络标签)• 提供「按带宽峰值+流量包」双计费模式分析 |
✅ 可关联「流量包余量」实时看板 ✅ 开启「异常流量突增」智能基线告警 |
| AWS EC2 | CloudWatch → Metrics → EC2 → Per-Instance Metrics | NetworkIn / NetworkOut(字节/秒)• 需用 Sum 统计周期总量(如:1小时总流出=Sum×3600) |
⚠️ 注意:默认仅保留15个月数据,长期归档需导出至S3 + Athena分析 |
| 华为云 ECS | 云监控服务 → 资源监控 → 弹性云服务器 → 网络监控 | network.incoming.bytes.rate / outgoing• 提供「按协议类型(TCP/UDP)拆分」高级监控(需开启增强监控) |
✅ 免费提供7天高频监控(1秒粒度),适合抓突发流量 |
📌 关键技巧:
- 将「公网出流量」设为核心成本指标(多数云厂商按此计费);
- 对Web服务器,重点关注
NetworkOut(响应客户端数据),常是带宽瓶颈; - 内网流量虽免费,但突增可能预示横向攻击或数据同步异常。
二、操作系统层监控(深度排查必备)
当需定位具体进程/端口/协议时使用:
✅ 推荐工具组合:
| 工具 | 用途 | 命令示例 | 适用场景 |
|---|---|---|---|
nethogs |
按进程实时监控流量 | sudo nethogs -t eth0 |
快速发现“偷跑”进程(如X_X、备份脚本) |
iftop |
按连接(IP:Port)监控 | sudo iftop -P 80,443 -f "port 80 or port 443" |
分析HTTP/HTTPS流量来源(防恶意爬虫) |
ss + awk |
统计各端口流量(需结合/proc/net/snmp) |
ss -tuln | awk '{print $5}' | cut -d: -f2 | sort | uniq -c |
批量识别高连接端口 |
vnstat(持久化) |
最实用! 后台守护进程,记录每日/每月总流量 | vnstat -u -i eth0(初始化)vnstat -d(查看日统计)vnstat -m(查看月统计) |
✅ 重启不丢数据,轻量级,适合长期趋势分析 |
💡 进阶技巧:
- 用
vnstat --oneline输出JSON,配合Prometheus+Grafana做可视化大屏; - 对容器环境,在宿主机运行
vnstat,同时用docker stats --no-stream查容器网络I/O。
三、应用层监控(精准归因)
当需知道「哪个API/用户导致流量飙升」:
-
Web服务器:
- Nginx:启用
ngx_http_stub_status_module,暴露/nginx_status,解析Active connections,Reading/Writing/Waiting; - 或通过日志分析:
awk '{sum += $10} END {print "Total bytes:", sum}' /var/log/nginx/access.log($10为响应大小)。
- Nginx:启用
-
CDN回源流量:
在源站Nginx中添加log_format记录$upstream_http_x_forwarded_for和$http_referer,识别真实请求来源。 -
数据库/缓存:
Redis:INFO commandstats查看命令调用量;
MySQL:开启慢查询日志 +pt-query-digest分析结果集大小。
四、自动化告警与成本优化
| 场景 | 解决方案 | 示例 |
|---|---|---|
| 突发流量告警 | 云平台告警 + 企业微信/钉钉机器人 | 阿里云设置:InternetOutRate > 50MB/s 持续5分钟 → 触发告警 |
| 月度预算预警 | 云平台「费用中心」设置预算阈值 | 腾讯云:设置「月度公网流量预算1TB,达80%邮件通知」 |
| 异常流量清洗 | 结合WAF/防火墙规则 | AWS WAF + 自定义规则:匹配 User-Agent: *sqlmap* → 阻断并记录 |
| 流量降本 | CDN提速静态资源、启用Gzip/Brotli压缩、图片懒加载 | Nginx配置:gzip on; gzip_types application/json text/css; |
✅ 最佳实践清单(立即执行)
- 今天就做:在云控制台开通「网络监控」+ 设置「公网出流量」告警;
- 明天安装:
sudo apt install vnstat && sudo vnstat -u -i eth0(Debian/Ubuntu); - 本周优化:检查Nginx/Apache日志中
body_bytes_sent字段,识别大文件下载行为; - 长期坚持:每月导出
vnstat -m报表,对比环比增长(警惕非业务增长)。
💡 避坑提醒:
- ❌ 不要仅依赖
ifconfig的RX/TX bytes(重启清零,无时间维度);- ❌ 避免用
cat /proc/net/dev手动计算(易出错且无历史);- ✅ 优先用云平台原生监控(数据最准,且与账单一致)。
如需我为你:
🔹 生成某云平台的告警配置JSON模板(如阿里云云监控报警规则)
🔹 编写自动分析vnstat月报的Python脚本
🔹 设计Grafana流量监控仪表盘(含进程TOP10面板)
欢迎随时告诉我你的具体环境(云厂商+OS+是否用Docker),我会给出可直接运行的代码 👇
云小栈