用开源工具完成网络性能监控(1)


51CTO.com独家特稿】网络管理员的工作是很复杂的,只要网络出现异常,网络管理员就会想救火队员一样忙,他们不仅要负责安装、维护HUB、交换机、路由器、防火墙、IDSIPS),而且要确保这些部件全部都能有效协同工作,当然完成这些工作是在一定预算范围内完成。如今,经济危机导致IT开支缩减,这种预算通常会比较少。过去在网络性能工具上公司必须花费大量资金购买商业的监控软件如Cisco works 2000 、Hp Open View。而本文的目标就是向大家介绍些用于帮助监视网络并排除网络故障的基于Unix/Linux的免费开源工具,助你一臂之力。

一、定义网络性能

大多数网络性能工具都是通过四个指标来度量网络性能:可用性、响应时间、网络利用率、网络吞吐量

1.可用性:如果网络不通了,那么你遇到的问题就不仅仅是网络性能问题,测试网络可用性最简单的方法是用ping命令,尽管大多数网管员都知道什么是ping程序,不过很少有人知道使用ping去执行高级测试命令选项

例如下面的代码可以自动搜索到当前网段所有在线的主机的NetBios名,并记录到指定文本文件中。

#set -x
cat /dev/null > record.txt
nmblookup \*|grep '<00>'|awk '{print $1}' >record.txt
#ping -c 2 -b 192.168.0.255|grep 64|awk '{print $4}'|sed -e 's/://g'>record.txt
. /etc/bashrc
NO=`cat record.txt|wc -l`
cat /dev/null > result
cat /dev/null > netbios_name
color black_green
cat <
You will try $NO addresses
EOF
#color black_white
echo "press return to continue"
read test
while read ip_addr
do 
echo "We will try to test:$ip_addr"
nmblookup -A $ip_addr |grep  '<00> 
-         [B|M]'|awk '{print $1}' >>netbios_name
smbclient -I $ip_addr -M `nmblookup -A $ip_addr |grep  '<00> 
-         [B|M]'|awk '{print $1}'` << EOF
EOF
done < record.txt

尽管发送带个的ping数据包给远程主机可以确定网络路径的可用性,但执行单一的ping命令本身不是网络性能的最佳指示器。如何收集更多的信息才能确定客户端和服务器之间的连接性?默认情况下,Unix的ping会持续发送ping给指定的远程主机,直到管理员按下Ctrul+C,另外你还可以使用ping命令中的-c选项,制定特定数量的ping 包。再一个与度量可用性相关的问题是ping请求中数据包的大小。我们都知道Cisco交换机有三类数据包缓冲区:小型数据包、中型数据包、大型数据包。要测试这些网络设备就要发出不同大小的数据包。在UNIX系统中默认情况下ping 工具使用的数据包大小是64字节,其中56字节是数据,其余8字节是ICMP 头信息,你可以使用ping 加-c 开关来改变数据包大小,但别想试图超过1500字节。 

2.响应时间  

为了个更精确描述网络性能,必须了解数据包在网络中的传输华乐多长时间,这就是所谓的响应时间。我们可以轻松的从ping 那里显示输出中看到每个发出的ping包,回程响应时间。以ms为单位,一般而言内部100兆LAN响应时间小于1ms,WAN连接,响应时间小于300ms,不过大家注意所有Windows系统所显示的时间最短就是小于1ms,而Unix/Linux/Bsd系统则会精确到0.01ms。   在具有冗余路径的网络中,经常希望能确定数据包在给定时刻所经过的路径,如果发现数据包没有被发送到最高效的路径上,那么可以对route进行些简单的配置,以缩短响应时间。这是我们可以使用traceroute命令,如下图。 

 
图1

上述图像显示了沿着通往目的地主机的路径上,响应到期测试数据包的每个路由器。并显示回程响应时间。 

3.网络利用率   

计算网络利用率要求知道在设定的期间内网络所处理的网络流量的字节数是多少,在计算全双工连接的接口带宽时,更准确的方法是分别测量输入利用率和输出利用率如下式所示:    输入利用率=ifInOctets×8×100)/((秒数) *IfSpeed)

输出利用率=ifOutOctets×8×100)/((秒数) *IfSpeed)

对于半双工来说,在计算利用率时使用公式ifInOctets+?ifOutOctets)/((秒数) IfSpeed)×8×100

ifInOctets    表示输入流量的字节数。

ifOutOctets  表示输出量的字节数。

IfSpeed     表示接口速率。

4.网络吞吐量

确定了网络吞吐量,网管员就可以找出影响客户端与服务器之间给定网络连接性能的网络瓶颈。找出网络瓶颈通常不会是件容易的事在复杂网络中,客户与服务器之间的路径上可能会有多个网络设备,取定网络吞吐量最困难的部分就是计算机每个中间连接对整个端对端网络连接的影响。

 
图2


相关内容