网络是所有子系统中最难监控的了。首先是由于网络是抽象的,更重要的是许多影响网络的因素并不在我们的控制范围之内。这些因素包括,延迟、冲突、阻塞等等。
大部分的以太网络都是自适应速度的,因为一个网络中可能有不同的网络设备采用不同的速率和工作模式(全双工或半双工)。大部分企业网络都工作在100到1000BaseTX。ethtool命令可以设置网卡的工作速率和模式。
[root@test ~]# ethtool p4p1
Settings for p4p1:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
我们可以看到网卡工作在100Mb/s,模式为全双工,并且打开了自适应开关。
如果没有打开也可以通过下列命令强制设置网卡工作在100Mb/s全双工模式,并关闭自适应功能。
[root@liukai /]# ethtool -s p4p1 speed 100 duplex full autoneg off
查看结果
[root@test /]# ethtool p4p1
Settings for p4p1:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
用iptraf工具可以清楚的看到每个网卡的工作情况。
[root@test /]# iptraf -d p4p1
具体可见iptraf工具命令帖
网络中最常见的错误就是冲突,由于网络中目前基本采用交换机环境,因此冲突问题已被消除。但是当网络流量不断增大的时候,就会出现丢包,网卡过载等情况。在网络流量很大的时候我们用sar命令来给出网络中可能的错误:
[root@liukai /]# sar -n DEV
Linux 2.6.32-431.20.3.el6.x86_64 (liukai) <span style="white-space:pre"> </span>09/28/2014 <span style="white-space:pre"> </span>_x86_64_<span style="white-space:pre"> </span>(4 CPU)
12:00:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
12:10:01 AM lo 2.03 2.03 0.76 0.76 0.00 0.00 0.00
12:10:01 AM p4p1 52.14 51.56 5.68 4.48 0.00 0.00 0.00
12:20:01 AM lo 2.05 2.05 0.76 0.76 0.00 0.00 0.00
12:20:01 AM p4p1 52.07 51.52 5.67 4.48 0.00 0.00 0.00
12:30:01 AM lo 2.01 2.01 0.76 0.76 0.00 0.00 0.00
12:30:01 AM p4p1 54.34 50.78 5.83 4.44 0.00 0.00 0.00
12:40:01 AM lo 2.03 2.03 0.76 0.76 0.00 0.00 0.00
12:40:01 AM p4p1 56.65 50.03 5.98 4.40 0.00 0.00 0.00
12:50:01 AM lo 2.02 2.02 0.76 0.76 0.00 0.00 0.00
12:50:01 AM p4p1 56.80 50.10 5.99 4.41 0.00 0.00 0.00
01:00:01 AM lo 2.03 2.03 0.76 0.76 0.00 0.00 0.00
01:00:01 AM p4p1 56.73 50.07 5.99 4.41 0.00 0.00 0.00
01:10:01 AM lo 2.05 2.05 0.76 0.76 0.00 0.00 0.00
01:10:01 AM p4p1 56.84 50.03 5.99 4.40 0.00 0.00 0.00
01:20:01 AM lo 2.03 2.03 0.76 0.76 0.00 0.00 0.00
01:20:01 AM p4p1 56.66 50.02 5.98 4.40 0.00 0.00 0.00
01:30:01 AM lo 2.01 2.01 0.76 0.76 0.00 0.00 0.00
01:30:01 AM p4p1 56.78 50.04 5.99 4.40 0.00 0.00 0.00
rxerr/s是接受错误率;txerr/s是发送错误率;coll/s冲突率;rxdrop/s接受帧丢失率;txdrop/s发送帧丢失率;txcarr/s载波错误率;rxfram/s帧排列错误;rxfifo/s接受FIFO错误;txfifo/s发送FIFO错误。
sar命令,参见sar详帖。
从上面输出看出各种错误为零,证明网络工作良好。
总的来说监视网络性能,我们有遵循一下几点:
1. 检查所有网络接口确保他们都运行在正确的速率;
2. 检查每块网卡的吞吐量确保没有造成过载;
3. 检查流量的类型确保正确的数据流在传送。