在腾讯云环境中监控服务器的入站(Inbound)和出站(Outbound)流量,通常有两种主要路径:一种是基于云平台层面的监控(适合看整体带宽使用、计费依据),另一种是基于服务器内部的指标监控(适合排查具体应用瓶颈、分析流量构成)。
对于大多数运维场景,建议将两者结合使用。以下是具体的操作方法和最佳实践。
一、 云平台层面:使用云监控 CCM(Cloud Monitor)
这是最直观、无需登录服务器即可看到的数据源。腾讯云默认提供基础监控,如果需要更精细的维度(如按实例ID、按协议等),可能需要开启高级监控或自定义监控。
1. 查看基础流量数据
登录 腾讯云控制台 -> 进入 云产品 -> 监控服务 (CCM)。
- 入口:左侧菜单选择“云服务器” -> “实例列表”,找到目标 CVM 实例,点击“监控”标签页。
- 关键指标:
NetworkIn/NetworkOut:每秒接收/发送的网络字节数。TotalNetworkIn/TotalNetworkOut:累计流入/流出流量总量。
- 注意:基础监控通常粒度为 5 分钟或 1 小时,延迟较高,适合看趋势,不适合实时故障排查。
2. 使用自定义监控(推荐用于精细化分析)
如果你需要知道“哪个 IP 访问了我”、“哪种协议占比多少”,基础监控做不到。这时需要利用 云监控的自定义监控 API 或 Prometheus 插件。
-
方案 A:通过 Prometheus 插件采集(主流做法)
- 在腾讯云中启用 TKE 或 托管 Prometheus 服务(如果业务规模大)。
- 对于单台或少量 CVM,可以在服务器上安装
node_exporter或腾讯云官方提供的prometheus-agent。 - 这些 Agent 会抓取系统底层的网络接口数据,并上报到云监控或 Grafana。
- 优势:可以拿到
/proc/net/dev级别的详细数据,配合 Grafana 展示非常漂亮的流量拓扑图。
-
方案 B:通过 CloudBase 或轻量应用服务器自带的监控
如果是轻量应用服务器(Lighthouse),控制台直接提供了更直观的流量图表,且部分套餐包含免费的基础监控额度。
二、 服务器内部层面:Linux 系统命令与工具
当云监控显示流量异常飙升,但不知道原因时,必须深入服务器内部。以下是从简单到复杂的排查手段。
1. 快速查看当前流量状态
SSH 登录服务器后,使用以下命令:
# 实时查看网卡流量变化(刷新间隔1秒)
sar -n DEV 1
# 或者使用 iftop 查看实时连接和流量排序(需安装)
yum install iftop -y # CentOS/RHEL
apt install iftop -y # Ubuntu/Debian
# 使用 nethogs 查看是哪个进程占用了带宽(更精准)
yum install nethogs -y
nethogs eth0 # 指定网卡名
iftop:擅长看谁在和你的服务器通信(源IP/目的IP),适合排查是否被 CC 攻击或异常连接。nethogs:擅长看哪个进程在跑流量,适合排查是否有程序泄漏、后台下载等行为。
2. 历史流量分析与日志审计
如果需要追溯过去某段时间的流量来源,系统日志是关键。
-
Web 服务器日志(Nginx/Apache):
# Nginx access.log 中包含了每个请求的大小 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"';通过分析
$body_bytes_sent字段,可以统计出站流量;通过请求数量估算入站压力。 -
系统内核日志:
检查/var/log/messages或journalctl -k,看是否有大量的TCP retransmission或connection refused,这往往意味着网络层的问题而非应用层。
3. 深度包检测(DPI)—— tcpdump / Wireshark
当常规手段无法定位问题时,抓包是终极手段。
# 捕获所有进出 eth0 的数据包,保存为 pcap 文件
tcpdump -i eth0 -w traffic.pcap
# 仅捕获特定端口的流量(例如 80 端口)
tcpdump -i eth0 port 80 -w web_traffic.pcap
- 注意:抓包会产生大量 I/O 开销,生产环境慎用,建议在低峰期进行,并限制时间(如
-c 10000只抓 1 万个包)。 - 导出后使用 Wireshark 打开,可以分析 HTTP Header、TLS 握手细节、丢包重传情况,甚至识别出非标准协议的隐蔽通道。
三、 进阶方案:使用 VPC 流日志(Flow Logs)
如果你使用的是 VPC(私有网络) 环境,腾讯云提供了 VPC 流日志 功能。这是监控网络流量的“上帝视角”。
- 原理:记录 VPC 内子网或 ENI(弹性网卡)的所有 IP 流量元数据(五元组:源IP、目的IP、源端口、目的端口、协议、动作)。
- 存储:流日志数据会发送到 CLS(云日志服务) 或 COS(对象存储)。
- 优势:
- 不依赖服务器内部状态,即使服务器宕机,只要在 VPC 层面,流量依然被记录。
- 可以分析跨可用区、跨地域的流量走向。
- 支持 SQL 查询,方便做安全审计和异常检测。
- 配置步骤:
- 进入 VPC 控制台 -> 左侧菜单“流日志”。
- 创建流日志,绑定到目标子网或网卡。
- 设置日志投递到 CLS 或 COS。
- 在 CLS 中创建索引,使用 SQL 语句查询特定 IP 的流量大小。
适用场景:网络安全审计、合规性检查、大规模分布式系统的流量分析。
四、 常见问题与避坑指南
-
带宽 vs 流量:
- 带宽(Bandwidth):单位是 Mbps/Gbps,表示峰值速率。
- 流量(Traffic):单位是 GB/TB,表示累计数据量。
- 腾讯云计费通常按“固定带宽”或“按使用流量计费”。监控时务必区分这两个概念,避免混淆。
-
IPv6 流量:
如果你的服务器启用了 IPv6,请确保监控指标中包含 IPv6 的NetworkIn/Out。很多老脚本只监控eth0的 IPv4 流量,会漏掉一半的数据。 -
CDN 回源流量:
如果使用了 CDN,腾讯云控制台显示的“CVM 流量”可能远低于实际用户访问量。因为大部分流量在 CDN 节点就被消化了,只有回源请求才会打到你的 CVM。此时应关注 CDN 控制台的“回源带宽”和“回源流量”指标。 -
安全组与 ACL 的影响:
如果配置了严格的 VPC 路由表或安全组,某些被丢弃的包不会计入“已建立连接”的统计,但会体现在底层网卡计数器中。使用tcpdump能看到被丢弃的包,而netstat看不到。
总结建议
- 日常巡检:使用腾讯云控制台 云监控 CCM,设置告警阈值(如出站流量连续 5 分钟 > 80% 带宽上限)。
- 故障排查:SSH 登录服务器,使用
iftop或nethogs实时定位异常进程或 IP。 - 安全审计/复杂架构:启用 VPC 流日志 + CLS,实现全量流量数据的可查询、可追溯。
希望这份指南能帮你建立起完整的流量监控体系。如有具体场景(如 K8s 集群、混合云环境),可以进一步补充细节,我再给出针对性方案。
云技术博客