显示网络接口流量
Linux 上,/proc 文件系统提供了大量的信息反映系统的各种运行状态,包括许多网络相关的统计信息。其中文件 /proc/net/dev 实时反映了网络接口的流量信息。清单7显示了 eth1 当前共接收了 17295646453 字节,发送了 673360865 字节。
主要字段含义:
bytes 发送或接受的总字节数
packets 发送或接受的报文总数
errs 被设备驱动监测到发送或接受的错误报文总数
drop 由于系统资源限制,被设备驱动丢弃的报文总数
fifo FIFO 缓存错误数
frame 帧错误数
compressed 发送或接受的压缩报数
multicast 接受到的多播报数
colls 接口检测到的冲突数
carrier 连接介质出现故障次数 , 如 : 网线接触不良
AIX 上,entstat enX 显示设备基本的统计信息。entstat -d enX 显示所有统计数据,包括设备特定的统计信息,这部分显示对不同网卡驱动可能不一样, 它可能包含驱动特定的信息和一些未包括在一般统计信息中的扩展统计信息。有些驱动可能没有任何设备特定统计信息。entstat -r enX 会将所有统计数据复位,这个标志只能被特权用户使用。清单 8 为命令在 AIX 6.1 上的运行结果,其中显示 ent0 接收了 398578558 字节,发送了 242760179 字节。AIX 5.3 上的输出格式与之类似。
清单 8. 在 AIX 6.1 系统上查看网络流量
主要字段含义:
Packets 发送或接受的报文总数
Bytes 发送或接受的总字节数
Interrupts 接受到的硬件中断数
Transmit/Receive Errors 被设备驱动监测到发送或接受的错误报文总数
Packets Dropped 由于系统资源限制,被设备驱动丢弃的报文总数
回页首
UNIX/Linux 系统网络接口带宽监控自动化脚本示例
前文介绍了 AIX 与 Linux 网络接口带宽监控的手段,本节将结合实例介绍网络接口带宽监控的自动化脚本的设计和实现。
设计思路
1 . 监控指标
监控指标选定为网络接口带宽占用率,即网络接口当前流速占网络接口连接速度的比率,网络接口当前流速可通过一个较短时间间隔内的流量变化除以时间间隔获得。下文将以网络接口带宽利用率为例进行监控脚本的设计。
2 .监控手段
为计算当前流速,带宽管理脚本需要实时捕获经过网络接口的流量。对于 AIX, 需要调用命令“entstat -d”以获取流量信息;对于 Linux, 需要实时查询文件 /proc/net/dev。调用或查询的时间间隔和总数目可以通过脚本本身的参数指定。
3. 告警机制
一般来说,如果网络接口带宽使用率达到 80% 或 85%, 通常会视为网络接口较忙,脚本将向管理员发送告警邮件。
4 .日志
要保留网络接口流量,告警等原始信息,便于以后进行问题分析、定位。
网络接口带宽分析和告警自动脚本
结合上文设计思路,笔者开发了网络接口带宽分析和告警脚本 bandmonitor.sh, 我们的脚本在 RHEL 5.3、SLES 11、AIX 5.3 和 AIX 6.1 上测试通过。
脚本 bandmonitor.sh 的第一部分先进行了初始化,检验并处理输入参数,对未输入的参数指定默认值。
清单 9. bandmonitor.sh 脚本初始化部分
接下来, bandmonitor.sh 脚本查询网络接口连接模式和连接速度,带宽管理对于 AIX 与 Linux 将调用不同的命令。
清单 10. bandmonitor.sh 脚本查询网络接口连接模式和连接速度
清单 11 中的脚本按不同操作系统实现了网络流量的监控,并按照网络连接的单工或双工模式计算网络接口带宽占用率,如果占用率超出最初设计的门限值,即发送告警邮件给管理员。
清单 11. bandmonitor.sh 监控网络接口流量部分
脚本使用示例
带宽管理以下为 bandmonitor.sh 脚本在 AIX 上使用示例。
1 .编辑 crontab 文件,每天零点运行一次 bandmonitor.sh 脚本。带宽管理其中,-s 30, 表示脚本每 30 秒查询并计算网络接口带宽利用率,– c 172800,将查询计算 172800 次,这两个参数保证脚本能运行一天时间, -u 85,表示该接口带宽利用率门限值设为 85%,监控日志可通过– l 参数指定,本例采用默认值,即为 /root/en0.log 文件。
清单 12. 编辑 crontab
2 .用户收到告警邮件,需要进一步查询历史记录时,可查看日志文件。
清单 13. 查看日志文件
小结
本文介绍了 Unix/Linux 上的网络接口带宽管理命令并通过一个自动化监控脚本详细介绍了如何实现网络接口带宽的自动化监控管理。网络接口带宽的自动化监控能帮助系统管理员及时发现网络接口带宽的异常问题,通过采取相应的措施使得问题得以消除和缓解。