Category

开发者博客

呼叫中心坐席主动回拨,通话结果分配结果问题解答

By | 常见问题解答 | No Comments

客户号码×××××××××××涉及座席××××,客户状态为成功,有呼叫记录可查是××××拨打的,但是客户资料却没有坐席归属。

案例:

客户数据被重复导入, 导入后未进行分配, 改客户不属于任何座席。预拨号开始工作客户应答,系统将客户送至坐席接线。客户应答后挂断,但坐席未能接起客户电话。 由于无人接到此客户电话, 客户依然处于未分配状态 看到的就是座席工号=0,名字null。但是此时坐席主动回拨了客户,通过弹屏界面保存了联络信息,但是系统不会将客户划分给坐席,所以客户所属坐席依然是0。

有四种途径使客户属于某个座席:

  1. 管理员分配
  2. 主动获取(座席工作界面有获取按钮)
  3. 成功接听预拨号分配的话务
  4. 座席自己添加的客户

可以在【外呼营销】->【外呼营销任务】-> 打开具体的外呼营销任务 -> “基本资料里”下“手动分配任务”里查询到该号码,手动将此客户分配给坐席解决此问题:

呼叫中心系统为坐席重新分配客户信息方法

By | 常见问题解答 | No Comments

使用的客户总表,出现想把其中的一个客户通过外呼营销任务手动分配给另外一个坐席时,无法查找到改客户。在外呼营销任务的客户管理里可以正常查询到,可如下方法解决。

案例操作:

由于该客户信息之前被调用时浏览器非正常关闭造成。可以在数据库里手动释放该客户,MySQL表名在客户集合包管理里该外呼营销任务对应的客户包里可以看到“cc10_x_individualpackages”,你在数据库里以id=xxx为索引查询该表的locked字段值,结果显示有具体时间值 ”2016-10-12 15:33:20“,说明该客户信息被占用未释放,你可以更改该值为“0000-00-00 00:00:00”释放该用户信息,然后你再执行你之前的查询。

asterCC呼叫中心 MySQL 分配客户信息 坐席

文件参考: asterCC的官方说明文档

使用Wireshark发现VoIP网络电话问题

By | 呼叫中心使用技巧, 开发者博客 | No Comments

Wireshark(原名:Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是捕获网络封包,并尽可能显示出详细的网络封包信息。

供应商希望你相信需要用数千美元的协议分析软件去解决IP电话(VoIP)网络语音。毕竟,数据包的延迟、丢失或乱序会直接影响通话质量。幸运的是,Wireshark是一个开放源代码的软件包,它可以实现这类工具所能实现的功能,甚至更多。

Wireshark,即以前被人们所熟知的 Ethereal,它是网络封包分析软件,使用WinPCAP作为接口,直接与网卡进行数据报文交换。它要做的就是监听网络流量,并用你需要的格式来显示包内容,帮助你发现问题。VOIP涉及一系列Wireshark可以解码并相互关联的复杂协议包。例如,建立一个通话的流程会用到很多协议,而不仅仅是语音流本身。Wireshark使用建立呼叫的信息来更好地理解语音流。用你手中的这些数据,可以进一步隔离VOIP中存在的问题。

想要查找的VoIP问题的原因,你必须能够跟踪从开始到结束的流程,并确保他们产生的是正确的事件。这不但要求你懂得基础协议,而且要理解一些电话的概念。幸运的是,Wireshark提供了一些优秀的工具,以帮助你解释数据。本文将把如何使用Wireshark工具作为重点,来解决3个最常遇到的VOIP问题。

第一个例子是,电话不工作。每次拨打一个号码,即使话机处于空闲状态,也不会有振铃。Wireshark这时就该查看话机和PBX(Private Branch Exchange)交换机之间的数据了。

以root身份启动Wireshark,点击 Capture->Option ,将会弹出捕获选项对话框,如图1所示,确保接口正在使用中,否则,你不会看到的流量。在这个例子中,我们捕获PBX唯一接口eth0的数据流量:

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f1.jpg(图1:使用Wireshark分析VOIP的捕获选项对话框)
在捕获包之前,需要指定捕获数据包的过滤器选项,来限制你将要处理的数据包数量。因为,无论是信令流(SIP)还是语音流(RTP)都是基于UDP协议的,那我就可以指定UDP作为我捕获的过滤条件。为方便起见,我还可以用实时查询选项检查数据包的更新列表,以便我可以确认我得到适当的流量。点击开始按钮,开始捕捉,很快上方窗格中会显示几个数据包(图2)。

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f2.jpg(图2:使用Wireshark捕获的IP电话的数据流量)

图2显示出了该分组的列表。前四列显示数据包的号,来源,时间以及所涉及的主机的地址。因为Wireshark抓SIP,它能够识别作为SIP数据包的协议列,并在信息栏上给出详细信息。

图2中信息的粗略检测表明:同样的三个数据包,来回重复了四次。第一个,IP话机主机向PBX主机发送了一个SIP INVITE信令,用以开始一个对话。接下来,PBX通过产生ACK返回给该话机“407代理服务器身份验证”响应,然后用数据包6做了第二次INVITE。由于这是个不断重复的过程,因此我们可以大致猜测是用户名或密码的错误导致身份验证失败。

监听:关于本地数据包的捕获

如果你要捕获的那些数据包,很多都没有到达运行Wireshark机器的网络接口,说明网络交换出了问题。只对某个抓包的通信端口进行限制以提高性能。生成树协议 和 IP协议只会在你试图捕获数据包的地方造成干扰。

你最好直接在那台参与工作的机器抓包,如果那台机器不能使用Wireshark,你总可以使用Tcpdump进行抓取本地的数据包,然后将其移动到其他计算机上,进行数据包分析。如果做不到,或者数据流量跨越多台机器,是时候该从你的网络硬件上寻求突破口了。

大多数管理型交换机可映射一个端口到其他端口所有的数据帧。因此,你可以用Internet将Wireshark 工作平台连接到你的交换机端口上,将所有的网络数据包映射到工作平台上。并且你还可以分析所有的互联网流量。思科 称之为 交换机端口分析器(SPAN),惠普 称之为 端口监控器,3Com公司称其为 巡回分析端口。

选择哪个端口来做镜像取决于你网络情况,一般说来,连接到其他的交换机或路由器的端口是一个不错的选择,这也是降噪过滤器必须要解决的问题。

第一个例子利用了Wireshark的高级解析单个数据包的功能,以突出一个单调的问题。接下来的例子需要更加全面的分析VOIP。Wireshark 用来查看SIP呼叫的建立和确认关键数据包。在这个例子中,这个话机正用于 单通音频。外呼的电话振铃,然后接通,但是仅有一方可以听到声音。会话数据包以与前面的例子相同的方式被捕获,总共140帧。如果没有Wireshark中先进的分析工具提供支持,数据太多以至于无法进行分析。

随着捕获工具的加载,选择 Statistics Telephony->VoIP calls,Wireshark会分析捕获到的任何与VOIP相关的数据包,并显示数据包摘要。点击通话(如果有多个呼叫被显示出来,按住Ctrl可以选择其他通话),然后点击Graph按钮。你会看到有关SIP呼叫的摘要,如图3所示:

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f3.jpg(图3:SIP会话在Wireshark的图形界面中的显示)

该分析图表对话框显示了各方发来的SIP消息。图3中的第一消息是INVITE消息,这是建立呼叫的第一步。在这个例子中,IP电话访问PBX发出呼叫到SIP地址为:613@fwd.pulver.com,这是测试SIP呼叫FreeWorldDialup提供的回拨服务。这个是用于认证请求的响应,这是公认的。这话机再次尝试并给出了“尝试”的PBX的状态。然后,PBX继续通过联系fwd.pulver.com邀请远程端口。在呼叫被正确建立之前,已经有很多消息发生了交换。

眼下的问题是单通。实际上,图形分析窗口显示IP电话发送实时协议(RTP)的语音数据包到因特网上的SIP终端,但它并没有显示在相反方向的数据流。为了确定为什么没有音频被送回,有必要更深入地读取SIP包。

SIP的功能之一就是建立两个终端之间的RTP数据流,它正是通过带有编码信息,IP地址,以及必要的VoIP工作端口号的会话描述协议(SDP)。需要注意的是,终端发出SDP不一定非得是互相交谈!在图3中,pbxhost主机和fwd.pulver.com 正通过互联网相会谈判,但他们各自指定不同的终端终止语音呼叫。RTP流是单向的,所以一个全双工会话需要在每个方向上都设置一个独立的RTP,用来区分两个SDP信息。

考虑到这一点,找出从pbxhost发送到fwd.pulver.com的SDP信息看起来有点难度。这个SDP消息将包含IP地址,UDP端口和 对端到本地IP电话会话的编码。但SDP消息在图形分析窗口将被SDP标记,来帮助你发现他们,该数据包的偏移量在图3中的0.490。当您单击图形分析窗口中的消息,相应的数据包将在 Wireshark 主窗口的数据包列表窗格中高亮显示。

Wireshark 还可以解析协议,那些协议被包含在当前分组细节窗口选中的数据包里。另外,还提供所述报文列表窗格中报文的摘要。解码是分层的,比如:以太网层,IP协议层,UDP协议 和 SIP协议。你可以通过点击窗口的左侧的箭头深入信息。图4显示的是与以上SDP(会话描述协议)相关字段的扩展信息。 

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f4.jpg(图4:包含SDP信息的SIP数据包在Wireshark图形界面中的显示)

每一行SDP消息,描述的是将要创建会话的特定属性,并遵循简单的形式,即:属性=值。其中”属性”是一个单个字母,而”值”是一个文本字符串。 Wireshark使用该协议的知识来添加一些额外的文本,比如属性的描述。对于VoIP会话,最重要的属性如下:
a—attributes,属性,例如编解码器和静音抑制
c—connection information,连接信息,包括IP地址期望的RTP流值
m—media description,间媒体描述,包括在RTP终端侦听的端口号
t—active time,工作时间。

从连接信息(c)行,可以确定正在发送数据的主机是IP为192.168.1.151的机器。m属性指定的是34008端口的RTP的期望值。通过属性,可以看到他提供 PCMU和PCMA的编码,包括GSM压缩格式和通过电话事件的按键音媒体格式。这个问题就是,提供的IP地址192.168.1.151是一个私有地址,无法到达网络。当远程主机尝试向192.168.1.151发送数据包时,数据包丢失,因为在网络上不存在这个路由。

完整起见,会话另一端的SDP信息在7.554时间线处。当提供的数据被确认后,在刚开始的SDP信息中,这两部电话开始相互向指定的IP和端口发送语音数据包,因为pbxhost提供了一个无效的地址fwd.pulver.com,语音呼叫的另一半是从未见过此这个请求的。

这是使用网关进行VoIP网络地址转换的常见问题,这个问题是可以根据需求,使用多种方法来解决的,当然这是另一个话题了!

至此,故障排除一直集中在网络电话的呼叫信令方面。一旦终端开始发送RTP流,网络质量又会成为话音质量的影响因素了。影响VoIP的网络因素有 延迟、波动(不稳定)、丢包。延迟即数据包从A终端到B终端所花费的时间。波动是数据序列包中延迟的变量。丢包是指从A终端发出,从未到达B终端的的报文数量。由于VoIP音频是通过实时UDP协议进行传输的,如果头域在乱序的数据包到达之前就已经打开了,那么这个数据包将被丢弃。

举最后一个案例,我发起一个通话,并捕获包括呼叫建立在内的数据包。Wireshark使用所述SIP信息以获得有关RTP分组流,使用RTP分析工具来获取更多详细信息。点击 Statistics→RTP→Show All Streams,Wireshark使用经过解码的数据包,以提供所有的音频对话和一些基本统计数据的列表,如图5所示。

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f5.jpg(图5:Wireshark捕获的RTP数据流信息列表)

上图中显示出了4个RTP数据流,因为每个音频流包括两个方向的数据流,并且 PBX 主机用来桥接两个话机。用来判断数据流是否有问题的是最后一个字段,即Pb列。如果显示”X”字样,则表示与VoIP相关问题。这条数据流的最大延迟是84毫秒,质量还算可以。最大波动值也算不错,11毫秒(单向延迟150毫秒,波动20毫秒 都是可以接受的极限范围),但 丢包却达到了将近20%,这是很可怕的。
点击并选中这条有问题的数据流,可做进一步的分析,然后 点击”Find Reverse”按钮,再选择会话的另一半,最后 点击”Analyze”按钮可以看到一个接一个的数据包流。丢失的数据包将会被标记上”Wrong sequence nr.”并显示出来,如图6所示。在该图上,还显示了一些有用的统计数据信息,比如当前的带宽,延迟 和 波动。

http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/093/9398/9398f6.jpg(图6:有关大量丢包的RTP数据流分析)

图6可以清晰地表明一些网络问题,因为丢包异常(稳定的带宽和固定间隔的丢包可以有力证明队列优先级超负荷或者加强了网络设备的监管)。这些丢包在反方向是看不到的,因为捕获包是在靠近会话的源端。点击”Save as CSV…”按钮,你可以保存窗口的内容。

网络问题是比较难解决的,因为它们需要与网络设备和其它潜在方的交互。如果你的VoIP环境不使用互联网,你可以在网络上捕获不同终端的数据包来查找是哪些因素导致的。如果通话数据流是通过互联网进行传输,你必须检查你与互联网的连接,或者需要运营商配合工作。

RTP分析可使用具有特殊配置的专用系统。如果遇到Wireshark的不识别的信令,它将不能够解码所有的RTP信息。点击 Edit->Preferences->Protocols->RTP 按钮,并试图检查解码会话以外的RTP数据包。分析可能会有点慢,但Wireshark的将尝试确定每一个属于RTP流的UDP数据包,让您使用RTP工具来查看通话。

我们在这里检测的最后一个特性是监听语音通话内容的能力。在打开的流分析窗口上点击”Save Payload…”按钮,选择.au格式的文件,并提供一个文件名,然后点击”OK”按钮,语音呼叫将自动保存到硬盘驱动器上。录音文件可以使用 XMMS,soxplay或其他音频播放器进行播放。

解决VoIP的问题不同于大多数其他网络故障诊断,因为独立的信令和语音协议,以及语音的实时性。这三个例子体现Wireshark的重要功能,他可以通过分析SIP呼叫的建立和RTP语音流来做专门的处理。对手的这些商业产品的功能,可以使你找到VoIP问题的根源所在。

 

呼叫中心使用技巧 之 Ngrep捕获系统数据包

By | 呼叫中心使用技巧, 开发者博客 | No Comments

Ngrep:致力于支持绝大部分的GNU的共同特性,将他们应用于网络层。它是一个抓包工具,允许指定各种规则或16进制表达式来匹配数据包的有效载荷。目前它可以识别到 IPv4/6, TCP, UDP, ICMPv4/6, IGMP和整个以太网的PPPSLIPFDDI,令牌环和空接口,并支持与常见抓包工具同样的方式BPF过滤逻辑,如:tcpdump 和 snoop 。   —-by Jordan Ritter

如何使用?原文阅读:点击这里

在下列实施例中,除特殊说明外,均假定使用eth0网络接口

例:基本数据包的捕获

$ ngrep -d any port 25
$ ngrep -d any 'error' port syslog
$ ngrep -wi -d any 'user|pass' port 21

例:调试HTTP交互

$ ngrep port 80
$ ngrep -W byline port 80

例:处理PCAP转储文件寻找.dump格式的包

$ ngrep -O /tmp/dns.dump -d any -T port domain
$ ngrep -w 'm' -I /tmp/dns.dump
$ ngrep -tD ns3 -I /tmp/dns.dump
$ ngrep -I /tmp/dns.dump port 80
监听所有无法通过22端口的流量(即SSH)
$ ngrep not port 22 | strings 8

监听来自某个主机的流量

$ ngrep host 192.168.0.103

捕获并显示从eth0接口呼入/呼出的HTTP(TCP/80) GET方法或POST方法参数的网络流量

$ ngrep -l -q -d eth0 -i "^GET |^POST " tcp and port 80

捕获并显示从eth0接口呼入/呼出HTTP(TCP/80)含有”User-Agent”字符串的网络流量

$ ngrep -l -q -d eth0 -i "User-Agent: " tcp and port 80

捕获并显示从eth0接口呼入/呼出的DNS(UDP/53)查询和响应的网络流量

$ ngrep -l -q -d eth0 -i "" udp and port 53

显示用SELECT语句查询你的MySQL服务器的语句和结果

$ ngrep -d eth0 -i 'select' port 3306

 

显示用SELECT语句查询你的MySQL服务器的语句和结果,并且查询会返回以下结果:

$ mysql -B -e 'select * from foo;' sandbox
 id	name	age
 1	Bob	23
 2	Alice	20
通过ngrep查看网络流量
$ ngrep -d lo -wi "" port 3306
interface: lo (127.0.0.0/255.0.0.0)
filter: (ip or ip6) and ( port 3306 )
match: ((^\W)|(\W$)|(\W\W))
####
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
[...
5.5.43-0ubuntu0.14.04.1.....!!!#+N'v...................?wZ=bUblw5=t.mysql_native_password.
##
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
[...........!.......................sandusr...e....=_.P`..W...mQ.sandbox.mysql_native_password.
##
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
...........
#
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
!....select @@version_comment limit 1
#
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
.....'....def....@@version_comment..!.........................(Ubuntu).........
#
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
.....select * from foo
#
T 127.0.0.1:3306 -> 127.0.0.1:55741 [AP]
.....'....def.sandbox.foo.foo.id.id.?.......B...+....def.sandbox.foo.foo.name.name.!...........)....def.sandbox.foo.foo.age.age.?.................."......1.Bob.23.....2.Alice.20.......".
#
T 127.0.0.1:55741 -> 127.0.0.1:3306 [AP]
.....
###
监听所有发生报错“error“字样的syslog系统日志的网络流量(注:ngrep’知道如何将服务端口名称转换成端口号。例如,可以在/etc/services 中找到)
$ ngrep -d any "error" port syslog

监听特殊的数据流

# Start `ngrep`:
$ ngrep -t '^(GET|POST|HEAD) ' 'dst host 67.207.152.20 and tcp and dst port 80'
# Then send a header request to a specific URL:
$ curl -I xtof.ch
interface: wlan0 (192.168.1.0/255.255.255.0)
filter: (ip or ip6) and ( dst host 67.207.152.20 and tcp and dst port 80 )
match: ^(GET|POST|HEAD) 
###
T 2015/06/11 12:05:09.321783 192.168.1.15:34116 -> 67.207.152.20:80 [AP]
  HEAD / HTTP/1.1..User-Agent: curl/7.35.0..Host: xtof.ch..Accept: */*....                                                                                                                                                          
###

或者,用新的命令行终止系统响应:

$ ngrep -t '^(GET|POST|HEAD) ' 'dst host 67.207.152.20 and tcp and dst port 80' -W byline
interface: wlan0 (192.168.1.0/255.255.255.0)
filter: (ip or ip6) and ( dst host 67.207.152.20 and tcp and dst port 80 )
match: ^(GET|POST|HEAD) 
###
T 2015/06/11 12:11:07.697041 192.168.1.15:34153 -> 67.207.152.20:80 [AP]
HEAD / HTTP/1.1.
User-Agent: curl/7.35.0.
Host: xtof.ch.
Accept: */*.
.

###

 

 

 

呼叫中心使用技巧 之 Tcpdump捕获系统数据包

By | 呼叫中心使用技巧, 开发者博客 | No Comments

Tcpdump:是常用的命令行捕获分析器。它允许用户捕获并显示TCP/IP和其他正通过网络发送或接收的隶属于该计算机的数据包。还可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

  • 1.用法案例

注:在以下案例中,我用类似 192.x.x.x IP地址 来代替实际的IP,用类似于 example.com 域名 代替实际域名。然而 例子中的本地主机名是“stine”,IP地址使用192.168.0.14”。此外,某些输出出于说明目的已被删除修改。

从一个特定的以太网接口抓包:

$ tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:40:54.940904 IP stine.local.15342 > example.com.domain: 46527+ PTR? 14.0.168.192.in-addr.arpa. (42)
13:40:54.940918 IP stine.local.15342 > example.com.domain: 46527+ PTR? 14.0.168.192.in-addr.arpa. (42)
13:40:54.963406 IP example.com.domain > stine.local.15342: 46527 NXDomain* 0/1/0 (119)
13:40:54.964613 IP example.com.domain > stine.local.15342: 46527 NXDomain* 0/1/0 (119)
13:40:54.964656 IP stine.local > example.com: ICMP stine.local udp port 15342 unreachable, length 15
...
9 packets captured
32 packets received by filter
0 packets dropped by kernel

注意:当你不带任何选项执行tcpdump”时,它会捕获所有流经的所有接口的报文。而”-i”选项则是用来捕获一个既定的以太网接口进行过滤。

仅捕获N个流经eth0接口的数据包

$ tcpdump -c 2 -i eth0
14:05:49.749471 IP6 fe80::21a:d6ff:fe2b:4641 > ip6-allnodes: ICMP6, router advertisement, length 56
14:05:49.711275 IP stine.local.62198 > example.com.domain: 38572+ PTR? 1.4.6.4.2.6.e....0.8.e.f.ip6.arpa. (90)

用ASCII码显示捕获的数据包:

$ tcpdump -A -i eth0

捕获数据包并将其输出写入到二进制文件(利于今后对包的分析,如 wireshark):

$ tcpdump -w tcpdump-20140103.pcap -i eth0

从以前保存的文件中的读取数据包(例如,用以前的命令):

$ tcpdump -tttt -r tcpdump-20140103.pcap

用他们的实际IP地址来抓包(而不使用默认的反向DNS(RDNS)查找):

$ tcpdump -n -i eth0

使用完整时间戳捕捉数据包

$ tcpdump -tttt -n -i eth0
2014-01-03 14:19:16.882379 IP6 fe80::21a:d6ff:fe2b:4641 > ff02::1: ICMP6, router advertisement, length 56
2014-01-03 14:19:19.882169 IP6 fe80::21a:d6ff:fe2b:4641 > ff02::1: ICMP6, router advertisement, length 56
捕获大于N个字节的数据包
$ tcpdump -i eth0 greater 1024
捕获小于N个字节的数据包
$ tcpdump -i eth0 less 1024
只捕获特定协议类型的数据包(如:IPIP6ARPRARPDECNET,TCP,UDP,FDDI,TR,WLAN等):
$ tcpdump -i eth0 arp
捕获所有的数据包,但是过滤掉某些协议的(例如,ARP和“RARP”)
$ tcpdump -i eth0 not arp and not rarp
注意:可以通过,”非”组合条件来实现。
捕获特定端口的数据包流:
$ tcpdump -i eth0 port 22
 捕获特定目的IP和端口的数据包:
$ tcpdump -i eth0 dst 192.x.x.x and port 22
  • 2.从Tcpdump操作手册派生出的案例

打印所有到达或从sundown发出的包内容:

$ tcpdump host sundown
打印helios和hot之间,或者helios和ace之间的包:
$ tcpdump host helios and \( hot or ace \)
 打印所有ace和除helios的任意主机之间的IP包:
$ tcpdump ip host ace and not helios

打印本地主机与Berkeley网络上的主机之间的所有通信数据包(注: ucb-ether, 此处可理解为’Berkeley网络’的网络地址,此表达式最原始的含义可表达为: 打印网络地址为ucb-ether的所有数据包)

tcpdump net ucb-ether

打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)

tcpdump 'gateway snup and (port ftp or ftp-data)'

打印所有源地址或目标地址是本地主机的IP数据包(如果本地网络通过网关连到了另一网络, 则另一网络并不能算作本地网络.(nt: 此句翻译曲折,需补充).localnet 实际使用时要真正替换成本地网络的名字)

tcpdump ip and not net localnet

打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机.(注: localnet, 实际使用时要真正替换成本地网络的名字))

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本的表达式可做练习)(注: 可理解为, ip[2:2]表示整个ip数据包的长度, (ip[0]&0xf)<<2)表示ip数据包包头的长度(ip[0]&0xf代表包中的IHL域, 而此域的单位为32bit, 要换算成字节数需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为 ((tcp[12]&0xf0) >> 4)<<2,即 ((tcp[12]&0xf0)>>2). ((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0 表示: 整个ip数据包的长度减去ip头的长度,再减去
tcp头的长度不为0, 这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的’Payload Length’ 与 ‘tcp头的长度’的差值, 并且其中表达方式’ip[]’需换成’ip6[]’.)

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

打印长度超过576字节, 并且网关地址是snup的IP数据包

tcpdump 'gateway snup and ip[2:2] > 576'

打印所有IP层广播或多播的数据包, 但不是物理以太网层的广播或多播数据报

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

打印除’echo request’和’echo reply’类型以外的ICMP数据包( 比如,需要打印所有非ping 程序产生的数据包时可用到此表达式 .(注: ‘echo reuqest’ 与 ‘echo reply’ 这两种类型的ICMP数据包通常由ping程序产生))

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
  • 3.过滤器
    TCP报头格式(TCP V4)(注一个刻度代表一个位的位置)
    源端口(即,源端口号):16位
    目的地端口(即,目的地端口号):16位
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |           |U|A|P|R|S|F|                               |
| Offset| Reserved  |R|C|S|S|Y|I|            Window             |
|       |           |G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             data                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

控制位:6位(从左至右):
URG紧急指针字段显著
ACK确认字段显著
PSH推送功能
RST:重置连接
SYN:同步序列号
FIN:从发送方没有更多的数据

请注意以下联想记忆
OSI模型All People Seem To Need Data Processing (所有的人看起来都需要数据处理)
层数:7.应用层=> 6.表示层=>5.会话层=>4.传输层=>3.网络层=>2.数据链路层=>1.物理层
TCP标志Unskilled Attackers Pester Real Security Folks
标志:
Unskilled = URG(紧急指针有效标志)
Attackers = ACK(应答域有效标志)
Pester = PSH(推送标志)
Real = RST(重置连接标志)
Security = SYN(同步序列号标志)
Folks = FIN(数据结束标志)
U  A  P R S F
32 16 8 4 2 1
 获取所有的SYN的数据包:
$ tcpdump 'tcp[13] & 2 != 0'
如何读取用”tcpdump ‘tcp[13] & 2 != 0″捕获的SYN数据包:抓取TCP头部的前13个字节并且第2位不为0的标志,其中”2″指字符串”UAPRSF”从右往左第2位(SYN= S=2)。因此,该命令只捕获SYN包。
通过变量过滤或者捕捉 控制位”U A P R S F” 的数据包(即,用XXX标志TCP的数据包):
$ tcpdump 'tcp[13] & 32!=0' # OR: 'tcp[13] & 32 == 32' # Capture all URG (URGENT) packets
$ tcpdump 'tcp[13] & 16!=0' # OR: 'tcp[13] & 16 == 16' # Capture all ACK (ACKNOWLEDGE) packets
$ tcpdump 'tcp[13] & 8!=0'  # OR: 'tcp[13] & 8 == 8'   # Capture all PSH (PUSH) packets
$ tcpdump 'tcp[13] & 4!=0'  # OR: 'tcp[13] & 4 == 4'   # Capture all RST (RESET) packets
$ tcpdump 'tcp[13] & 2!=0'  # OR: 'tcp[13] & 2 == 2'   # Capture all SYN (SYNCHRONIZE) packets
$ tcpdump 'tcp[13] & 1!=0'  # OR: 'tcp[13] & 1 == 1'   # Capture all FIN (FINISH) packets
$ tcpdump 'tcp[13]=18'      # OR: 'tcp[13] == 18'      # Capture all SYNACK (SYNCHRONIZE/ACKNOWLEDGE) packets
其他常用的过滤器:
'ether host 00:00:00:00:00:00'  # (replace with your MAC) Traffic to or from your MAC address
'!ether host 00:00:00:00:00:00' # (replace with your MAC) Traffic not to or from your MAC address
'broadcast'                     # Broadcast traffic only
icmp                            # ICMP traffic
'icmp[0:2] == 0x0301'           # ICMP destination unreachable, host unreachable
ip                              # IPv4 traffic only
ip6                             # IPv6 traffic only
udp                             # UDP traffic only
捕获所有带有”RST”和”SYN”标志的数据包(R+S = 4+2 = 6):
$ tcpdump 'tcp[13] = 6'
Capture TCP Flags 的数据包:
$ tcpdump 'tcp[tcpflags] & tcp-syn != 0'
注意:除了使用比特/字节,我们也可以通过名称过滤,如下:
显示所有带TCP标志的数据包,其中TCPRST位设置(即所有TCP RST包)为:
$ tcpdump 'tcp[tcpflags] & (tcp-rst) != 0'
  • 4.常用过滤器表达式格式
host A.B.C.D — 所有使用IP地址为A.B.C.D的数据源目的数据包
net A.B.C/n — 所有以IP地址为A.B.C.n 为数据源或者目的地址的数据包
port X — 所有使用X为源端口或目的端口的 TCP 或 UDP 数据包
ether broadcast — 所有以以太网广播为其目标的所有数据包
tcp — 所有 TCP 的数据包
udp — 所有 UDP 的数据包
icmp — 所有 ICMP 的数据包
arp — 所有 ARP 的数据包

AsterCC呼叫中心系统常见问题及解答

By | 呼叫中心使用技巧, 呼叫中心常用功能, 解决方案 | No Comments

AsterCC呼叫中心系统常见问题及解答

1.如何修改默认sip注册端口

2.如何取消IP访问限制

3.语音问卷功能的使用方法

4.如何配置主叫号码

5.如何配置坐席评分功能

6.费率管理下的四个费率都是做什么用的_如何使用

7.分机无法注册的原因及解决方案

8.如何对呼入号码进行限制

9.如何给外呼营销任务指定中继进行外呼

10.如何修改发送voicemail的smtp服务器

11.如何设置启用谷歌地图

12.如何从系统的备份文件中恢复系统

13.如何设置录音

14.如何在页面迁移asterCC系统

15.关于asterCC系统相关日志的介绍

16.如何使用知识库

17.如何使用脚本配置主备服务器以及集中管理

18.如何修改AsterCC系统的数据库地址

19.如何批量删除导入/导出任务列表数据

20.如何修改录音文件地址

21.如何设置坐席挂机后自动推送邮件或短信

22.如何添加/修改astercc系统模块参数字段注解

23.常见系统提示窗口

24.影响预拨号并发数的参数设置

25.如何使用驻留号码进行通话驻留

26.如何使用话机快捷键获取客户进行外拨并保存呼叫状态和结果

27.如何对asterCC服务器进行磁盘清理

28.如何使用link类型的自定义字段传递参数

29.如何解决坐席频繁变动导致分机不匹配的问题

30.如何设置管理员页面搜索栏字段的显示与隐藏

31.如何为asterCC系统配置多台PHP服务器

32.

实际案例指导

31.如何利用astercc统计坐席工作情况

32.asterCC对于被叫号码的处理流程

33.如何使用带有通配符功能的电子邮箱模板群发邮件

34.astercc支持的短信(SMS)供应商列表

35.如何立刻拨打预拨号任务中有预约时间的号码

36.如何利用IVR功能验证信用卡的有效性

37.如何取消正在进行的导入/删除数据的任务

38.如何分配或回收总表客户资料数据

39.如何实现局域网内两套独立系统的分机之间互拨

40.如何配置典型的呼叫中心呼入流程

41.如何搭建基于astercc系统的OpenVPN

42.如何使用时间判断控制IVR转向

43.如何实现astercc系统的备份

44.如何在外呼营销模块中使用短信模板

45.如何在外呼营销中利用通配符把模板内容用客户资料信息替换

 

用途和案例

46.如何建立一个语音广播系统

47.如何使用短信和电子邮件模板

48. 如何自定义弹屏地址

49. 如何利用astercc统计坐席工作情况

50. 如何导入电话销售号码段进行外呼拨号_自动拨号和预拨号

51. 如何进行电话转接

52. 如何利用电话键盘进行外呼任务

53.如何结合外呼计划使用问卷进行市场调查

 

 

 

 

 

 

 

 

 

 

 

 

 

 

呼叫中心VPN

By | 开发者博客 | No Comments

构建一个企业集团的IP分布式呼叫中心,其成本、安全性、稳定性、高效性是必须要考虑的重要因素,本文正是基于这样的环境,提出了采用开源的软交换和VPN系统来构建企业集团IP分布式呼叫中心的方案,即 呼叫中心VPN – IPPBX

 

一、VPN Tutorial —VPN的软件、硬件 和 协议

虚拟专用网 – VPN – 吸引了许多既希望扩大其网络功能又降低成本的公司(组织)。这种VPN可以在 允许员工安全登录公司网站的工作场所和家庭 中找到。远程办公人员,和那些能够很快捷地与公司内部网保持连接的出差人员。无论你是否参与(使用)了VPN,对它有所了解是一项很好的技术。该VPN教程涉及了很多有趣的方面,比如:网络协议设计、网络安全、网络服务外包 和 技术标准。

 

二、究竟什么是VPN?—VPN解决方案和主要特点

VPN,提供了一个尽可能长的物理距离的网络连接。在这方面,VPN是广域网(WAN)的一种形式。它可以实现文件共享,视频会议 和 类似的网络服务。虚拟专用网络一般不会提供尚未通过其他机制提供的任何新功能,但在大多数情况下,VPN会更有效地、更便宜地实现这些服务。

VPN的一个主要特点是:它可以用一种叫做通道的方法,通过像Internet公共网络一样的专用网络 来工作。VPN使用的基础硬件设施与现有的Internet或Intranet连接所使用的一样。VPN技术,包括各种用以保护虚拟专用连接的安全机制 。具体来说,一个VPN支持至少三种不同的使用模式:

  • 互联网远程访问客户端连接
  •  LAN到LAN互联
  • 在内部网中控制访问

 

VPN互联网的远程访问

近年来,许多公司(组织)通过允许更多的员工远程办公来提高员工的流动性。不断出差的员工面临一个日益增长的需求,那就是想与公司网络保持连接。VPN可以设置远程支持,保护互联网上企业家庭办公室访问。互联网VPN的解决方案采用如下的客户机/服务器设计的工作原理:

  • 一个远程主机(客户端)想登录到公司网络,首先要连接到一个公共的  互联网服务提供商(ISP)。
  • 接下来,主机要发起一个要连接公司VPN服务器的连接。这种连接是通过安装在远程主机上的VPN客户端运行的。
  • 一旦连接被建立,远程客户端就可以通过因特网,就像本地主机一样与公司内部系统进行通信。

之前的VPN,远程的工作人员要访问公司网络,是通过私人租用线路或通过拨号远程访问服务器。然而,VPN客户端和服务器端是需要安装软硬件的,因此在某种程度上,互联网VPN是一个不错的解决方案。

 

VPN的互联网互联

除了使用虚拟专用网络进行远程访问外,VPN也可以将两个网络桥接在一起。在这种操作模式下,一个完整的远程网络(而非仅是一个单一的远程客户端)可以连接到不同的公司网络以形成一个更广大的内联网。

 

内网/局域网的VPN

内部网络也可以利用VPN技术,来实现控制对专用网下单个子网的访问。在这种操作模式下,VPN客户端连接到作为网络网关的VPN服务器。这种类型的VPN的使用不涉及因特网服务提供商(ISP)或公共网络布线。但是,它允许在一个组织内部配置VPN的安全保护。这种作为为企业保护本地无线网络的方法,已经变得十分流行。

 

三、VPN的优缺点

像许多商业化网络技术一样,大量的销售和营销炒作包围着VPN。实际上,虚拟专用网只提供了一些超过传统广域网形式的具体潜在优势。这些优势当然非常明显,但是凡事都有两面性。VPN的潜在问题超过它的优点,这一点并不难理解,虽然缺点未必比优点多。从安全和性能的角度来考虑,去应对各式各样的厂商产品不兼容问题,在没有计划和准备的情况下,无法作出是否使用VPN的决定。

 

四、支持VPN的技术

VPN的发展使得很多网络协议变得流行起来。比如:

  • PPTP(Point to Point Tunneling Protocol):点对点隧道协议。
  • L2TP:工业标准的Internet隧道协议。
  • IPsec(InternetProtocolSecurity):安全联网。
  • SOCKS:防火墙安全会话转换协议。

这些协议强调VPN的身份验证和加密。在网络上,身份验证允许VPN客户端和服务器能够正确地建立信任。加密则允许来自公众的潜在敏感数据被隐藏。许多厂商已经开始开发VPN硬件 和/或 软件产品。不幸的是,未成熟的VPN标准意味着一些产品仍然互不兼容。

 

VPN的未来

对那些远程连接公司网络的员工来说,虚拟专用网络已经因为节省公司开支而变得越来越流行。很多公司还采用VPN作为私人Wi-Fi无线网络安全的解决方案。预计在未来几年,VPN技术的使用将逐步继续扩大。

 

五、VPN的优势及前景

问:VPN的优势以及给呼叫中心带来的益处?

VPN虚拟专用网是一个建立长距离或安全的网络连接。VPN一般是由企业或组织而不是个人 来实施(部署),但从家庭内部网络即可连接上。与其他技术相比而言,VPN为无线局域网提供了多种优势和明显的效益。

答:对于希望提供一种安全网络基础设施的组织(公司)客户群体而言,在技术上VPN具有了两大主要优势:节约成本和网络的可测性。对于访问网络的客户端而言,VPN可以带来易用性的优势。

 

用VPN来节约成本

VPN节省开支在以下几个方面:

  • 省去了昂贵的长途租线费用
  • 降低了长途电话费用
  • 减少技术支持成本

VPN与租线

组织(公司)通常需要租用网络容量,比如用T1线路去实现办公场所之间的安全连接。用VPN,就可用包括因特网在内的公共网络基础设施使得它们相互连接。并且还可以通过更便宜的本地租线甚至只是宽带连接到附近的Internet服务提供商(ISP),进入虚拟网络。

长途电话费用

VPN也可以代替远程服务器访问,在过去,出差在外的员工通常用远程拨号进行网络连接来访问公司内部网。例如:用因特网VPN,通常客户端仅需连接到本地服务提供者的访问点。

支持成本

使用VPN来维护服务器的成本往往低于其他方法,因为组织(公司)可以从专业的第三方服务提供商获取所需要的支持。这将通过 为很多企业客户提供服务获得的规模经济,来取得低成本。

 

VPN给呼叫中心带来的好处

强安全性

目前VPN主要采用四项技术来保证数据通信安全,这四项技术分别是:隧道技术(Tunneling)、加解密技术(Encryption & Decryption)、密钥管理技术(Key Management)、身份认证技术(Authentication)。在用户身份验证安全技术方面,VPN是通过使用点到点协议(PPP)用户级身份验证的方法来进行验证,这些验证方法包括;密码身份验证协议(PAP)、质询握手身份验证协议 (CHAP)、Shiva 密码身份验证协议 (SPAP)、Microsoft 质询握手身份验证协议(MS-CHAP) 和可选的可扩展身份验证协议 (EAP);

数据加密和密钥

VPN采用微软的点对点加密算法(MPPE)和网际协议安全(IPSec)机制对数据进行加密,并采用公、私密钥对的方法对密钥进行管理。MPPE使 Windows 95、98和NT 4.0终端可以从全球任何地方进行安全的通信。MPPE加密确保了数据的安全传输,并具有最小的公共密钥开销。以上的身份验证和加密手段由远程VPN服务器强制执行。对于采用拨号方式建立VPN连接的情况下,VPN连接可以实现双重数据加密,使网络数据传输更安全。

网络协议支持

VPN支持最常用的网络协议,这样基于IP、IPX和NetBEUI协议网络中的客户机都可以很容易地使用VPN。这意味着通过VPN连接可以远程运行依赖于特殊网络协议的应用程序。新的VPN技术可以全面支持如:AppleTalk、DECNet、SNA等几乎所有的局域网协议,应用更加全面。

安全的IP地址

因为VPN是加密的,VPN数据包在因特网中传输时,因特网上的用户只看到公用的IP地址,看不到数据包内包含的专有网络地址。因此远程专用网络上指定的地址是受到保护的。IP地址的不安全性也是在早期的VPN没有被充分重视的根本原因之一。

VPN网络的可扩展性

最开始,一个组织(公司)建立一个专用网络的成本是合理的。但是,它会随着企业的成长而呈指数增长。例如,一个公司有2个分公司,那么1根线即可将互联,但4家分公司则需要6根线才可以实现直接地两两互联,6家分公司则需要15根线才可以实现直接地两两互联,依次类推…。基于互联网的VPN通过简单地窃听公共线路和即时获取网络功能避免这种扩展性问题。特别是对偏远和国际地区,互联网VPN提供了优越的覆盖面和服务质量。

 

VPN的使用

要使用VPN,每个客户端必须拥有支持适合他们本地网络和电脑的网络软硬件。正确设置后,VPN解决方案易于使用,有时也可作为注册网络的一部分而自动工作。VPN技术也可以通过Wi-Fi无线局域网络良好地运行。很多组织(公司)在办公室内工作时,使用VPN来保护自己本地接入点的无线连接。这些解决方案提供了强有力的保障,而且不会过分影响性能。

 

VPN的局限性

尽管VPN有很高的知名度,但是它并不完美,它的局限性像其他技术一样真实地存在着。当配置和使用虚拟专用网络时,企业应该注意以下操作:

  • VPN的网络安全问题需要详细了解,并且要关注它的安装及配置。这样一来,在那些像Internet的公共网络上才会被足够的保护。
  • 企业并不能够直接控制基于互联网的VPN的可靠性和性能。相反,该解决方案依赖于ISP以及它们的服务质量。
  • 长远来看,由于VPN技术标准的问题,来自不同厂商的VPN产品和解决方案并不总是兼容。试图混搭设备可能会引起技术问题,并且使用一个不会给你节约大量成本的供应商手中的设备。

 

六、VPN隧道

虚拟专用网络技术是基于隧道的想法。VPN隧道包括建立和维护一个逻辑网络连接(可能包含中间跳)。在这类连接中,包被创建在特定的封装在某些其他基础或载体的VPN协议格式的分组内,然后在客户端和服务器之间传输,并最终在接收端解封装。对于基于互联网的VPN,VPN协议中的一个数据包将被封装在IP包中。VPN协议还支持身份验证和加密来保证隧道安全。

 

VPN隧道的类型

VPN支持两种类型的隧道 – 自愿隧道和强制隧道,这两种类型的隧道都很常用。自愿隧道,客户端提供连接设置的管理。客户端首先使连接到网络提供商的载体(因特网VPN下的ISP),然后,VPN客户端应用程序通过这种实时连接创建隧道到VPN服务器。强制隧道,网络运营商载体提供连接设置的管理。当客户首次与载体建立普通连接,所述载体会反过来立即断掉客户端和VPN服务器之间的连接。从客户端角度看,VPN的连接 的设置只需一步的步骤,而不像自愿隧道需要两步程序。

强制VPN隧道的客户端认证和它们相关连用特定VPN服务器,用逻辑连接到代理设备。该网络设备有时被称为VPN的前端处理器(FEP),网络接入服务器(NAS) 或 实时服务器热点(POS)。强制隧道会隐藏从VPN客户端到服务器连接的详细信息,并有效地转移了从客户端到ISP的隧道管理控制。作为回应,服务提供商必须附加安装和维护FEP设备的额外负担。

 

VPN隧道的协议

很多计算机网络协议已经专为VPN隧道的使用实现。下面列出的三种最流行的VPN隧道协议。它们在这个行业中相互竞争,因此这些协议通常彼此是不兼容的。

 

点对点隧道协议(PPTP)

多家公司合作,共同打造PPTP规范。人们通常会把 PPTP 和 微软联系在一起,因为几乎所有客户端的协议包括内置此协议都会支持微软。虽然微软一直改善PPTP的支持,但在最初发布时,就有很多专家声称在使用方面,安全功能弱爆了。

 

第二层隧道协议(L2TP)

在VPN隧道中,PPTP起初的竞争对手是L2F,L2F是思科产品实现的主要协议。在试图改善L2F上,它和PPTP的最佳功能相结合,以创建一个名为L2TP的标准。就像PPTP,在OSI模型中,L2TP存在于数据链路层(第二层),因此它的名字由此而来。

 

互联网协议安全(IPsec)

IPsec是实际上的多个相关协议的集合。它可以作为一个完整的VPN协议解决方案或者单纯地作为L2TP或PPTP的加密格式。IPsec存在于OSI模型的网络层(第三层)。

 

相关阅读:《什么是 呼叫中心VPN 安全技术的关键?》 http://compnetworking.about.com/od/vpn/f/vpn-security.htm

 

 

 

 

监控呼叫中心Linux服务器上网络带宽

By | 开发者博客 | No Comments

监控呼叫中心Linux服务器网络带宽的18个常用命令行工具

本文介绍一些用来监控呼叫中心linux服务器带宽使用情况的命令行工具。这些工具可以监控通过网络接口传输的数据,并测量当前那些数据传输的速度。入站流量和出站流量分开来显示。有的命令可以显示单个进程所使用的带宽。这样一来,用户很容易发现过度使用网络带宽的某个进程。这些工具使用不同的机制来制作流量报告,nload等一些工具可以读取”proc/net/dev”文件,以获得流量统计信息;而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载。

下面是按功能划分的命令名称。

  • 监控总体带宽使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
  • 监控总体带宽使用(批量式输出)――vnstat、ifstat、dstat和collectl
  • 每个套接字连接的带宽使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
  • 每个进程的带宽使用――nethogs

1. nload

nload是一个命令行工具,让用户可以分开来监控入站流量和出站流量。它还可以绘制图表以显示入站流量和出站流量,视图比例可以调整。用起来很简单,不支持许多选项。

所以,如果你只需要快速查看总带宽使用情况,无需每个进程的详细情况,那么nload用起来很方便。

  1. $ nload

安装nload:Fedora和Ubuntu在默认软件库里面就有nload。CentOS用户则需要从Epel软件库获得nload。

  1. # fedora或centos
  2. $ yum install nload -y
  3. # ubuntu/debian
  4. $ sudo apt-get install nload

2. iftop

iftop可测量通过每一个套接字连接传输的数据;它采用的工作方式有别于nload。iftop使用pcap库来捕获进出网络适配器的数据包,然后汇总数据包大小和数量,搞清楚总的带宽使用情况。

虽然iftop报告每个连接所使用的带宽,但它无法报告参与某个套按字连接的进程名称/编号(ID)。不过由于基于pcap库,iftop能够过滤流量,并报告由过滤器指定的所选定主机连接的带宽使用情况。

  1. $ sudo iftop -n

n选项可以防止iftop将IP地址解析成主机名,解析本身就会带来额外的网络流量。

安装iftop:Ubuntu/Debian/Fedora用户可以从默认软件库获得它。CentOS用户可以从Epel获得它。

  1. # fedora或centos
  2. yum install iftop -y
  3. # ubuntu或 debian
  4. $ sudo apt-get install iftop

3. iptraf

iptraf是一款交互式、色彩鲜艳的IP局域网监控工具。它可以显示每个连接以及主机之间传输的数据量。下面是屏幕截图。

  1. $ sudo iptraf

安装iptraf:

  1. # Centos(基本软件库)
  2. $ yum install iptraf
  3. # fedora或centos(带epel)
  4. $ yum install iptraf-ng -y
  5. # ubuntu或debian
  6. $ sudo apt-get install iptraf iptraf-ng

4. nethogs

nethogs是一款小巧的”net top”工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。万一出现带宽使用突然激增的情况,用户迅速打开 nethogs,就可以找到导致带宽使用激增的进程。nethogs可以报告程序的进程编号(PID)、用户和路径。

  1. $ sudo nethogs

安装nethogs:Ubuntu、Debian和Fedora用户可以从默认软件库获得。CentOS用户则需要Epel。

  1. # ubuntu或debian(默认软件库)
  2. $ sudo apt-get install nethogs
  3. # fedora或centos(来自epel)
  4. $ sudo yum install nethogs -y

5. bmon

bmon(带宽监控器)是一款类似nload的工具,它可以显示系统上所有网络接口的流量负载。输出结果还含有图表和剖面,附有数据包层面的详细信息。

安装bmon:Ubuntu、Debian和Fedora用户可以从默认软件库来安装。CentOS用户则需要安装repoforge,因为Epel里面没有bmon。

  1. # ubuntu或debian
  2. $ sudo apt-get install bmon
  3. # fedora或centos(来自repoforge)
  4. $ sudo yum install bmon

bmon支持许多选项,能够制作HTML格式的报告。欲知更多信息,请参阅参考手册页。

6. slurm

slurm是另一款网络负载监控器,可以显示设备的统计信息,还能显示ASCII图形。它支持三种不同类型的图形,使用c键、s键和l键即可激活每种图形。slurm功能简单,无法显示关于网络负载的任何更进一步的详细信息。

  1. $ slurm -s -i eth0

安装slurm

  1. # debian或ubuntu
  2. $ sudo apt-get install slurm
  3. # fedora或centos
  4. $ sudo yum install slurm -y

7. tcptrack

tcptrack类似iftop,使用pcap库来捕获数据包,并计算各种统计信息,比如每个连接所使用的带宽。它还支持标准的pcap过滤器,这些过滤器可用来监控特定的连接。

安装tcptrack:Ubuntu、Debian和Fedora在默认软件库里面就有它。CentOS用户则需要从RepoForge获得它,因为Epel里面没有它。

  1. # ubuntu, debian
  2. $ sudo apt-get install tcptrack
  3. # fedora, centos(来自repoforge软件库)
  4. $ sudo yum install tcptrack

8. vnstat

vnstat与另外大多数工具有点不一样。它实际上运行后台服务/守护进程,始终不停地记录所传输数据的大小。之外,它可以用来制作显示网络使用历史情况的报告。

  1. $ service vnstat status
  2. * vnStat daemon is running

运行没有任何选项的vnstat,只会显示自守护进程运行以来所传输的数据总量。

  1. $ vnstat
  2. Database updated: Mon Mar 17 15:26:59 2014
  3. eth0 since 06/12/13
  4. rx:  135.14 GiB      tx:  35.76 GiB      total:  170.90 GiB
  5. monthly
  6. rx      |     tx      |    total    |   avg. rate
  7. ————————+————-+————-+————-
  8. Feb ’14      8.19 GiB  |    2.08 GiB  |   10.27 GiB |   35.60 kbit/s
  9. Mar ’14      4.98 GiB  |    1.52 GiB  |    6.50 GiB |   37.93 kbit/s
  10. ————————+————-+————-+————-
  11. estimated       9.28 GiB |    2.83 GiB  |   12.11 GiB |
  12. daily
  13. rx      |     tx      |    total    |   avg. rate
  14. ————————+————-+————-+————-
  15. yesterday     236.11 MiB |   98.61 MiB |  334.72 MiB |   31.74 kbit/s
  16. today    128.55 MiB |   41.00 MiB |  169.56 MiB |   24.97 kbit/s
  17. ————————+————-+————-+————-
  18. estimated       199 MiB |      63 MiB |     262 MiB |

想实时监控带宽使用情况,请使用”-l”选项(实时模式)。然后,它会显示入站数据和出站数据所使用的总带宽量,但非常精确地显示,没有关于主机连接或进程的任何内部详细信息。

  1. $ vnstat -l -i eth0
  2. Monitoring eth0…    (press CTRL-C to stop)
  3. rx:       12 kbit/s    10 p/s          tx:       12 kbit/s    11 p/s

vnstat更像是一款制作历史报告的工具,显示每天或过去一个月使用了多少带宽。它并不是严格意义上的实时监控网络的工具。

vnstat支持许多选项,支持哪些选项方面的详细信息请参阅参考手册页。

安装vnstat

  1. # ubuntu或debian
  2. $ sudo apt-get install vnstat
  3. # fedora或 centos(来自epel)
  4. $ sudo yum install vnstat

9. bwm-ng

bwm-ng(下一代带宽监控器)是另一款非常简单的实时网络负载监控工具,可以报告摘要信息,显示进出系统上所有可用网络接口的不同数据的传输速度。

  1. $ bwm-ng
  2. bwm-ng v0.6 (probing every 0.500s), press ‘h’ for help
  3. input: /proc/net/dev type: rate
  4. /         iface                   Rx                   Tx                T
  5. ot=================================================================
  6. ==           eth0:           0.53 KB/s            1.31 KB/s            1.84
  7. KB             lo:           0.00 KB/s            0.00 KB/s            0.00
  8. KB————————————————————————————————————-
  9. total:           0.53 KB/s            1.31 KB/s            1.84
  10. KB/s

如果控制台足够大,bwm-ng还能使用curses2输出模式,为流量绘制条形图。

  1. $ bwm-ng -o curses2

安装bwm-ng:在CentOS上,可以从Epel来安装bwm-ng。

  1. # ubuntu或debian
  2. $ sudo apt-get install bwm-ng
  3. # fedora或centos(来自epel)
  4. $ sudo apt-get install bwm-ng

10. cbm:Color Bandwidth Meter

这是一款小巧简单的带宽监控工具,可以显示通过诸网络接口的流量大小。没有进一步的选项,仅仅实时显示和更新流量的统计信息。

  1. $ sudo apt-get install cbm

11. speedometer

这是另一款小巧而简单的工具,仅仅绘制外观漂亮的图形,显示通过某个接口传输的入站流量和出站流量。

  1. $ speedometer -r eth0 -t eth0

安装speedometer

  1. # ubuntu或debian用户
  2. $ sudo apt-get install speedometer

12. pktstat

pktstat可以实时显示所有活动连接,并显示哪些数据通过这些活动连接传输的速度。它还可以显示连接类型,比如TCP连接或UDP连接;如果涉及HTTP连接,还会显示关于HTTP请求的详细信息。

  1. $ sudo pktstat -i eth0 -nt
  2. $ sudo apt-get install pktstat

13. netwatch

netwatch是netdiag工具库的一部分,它也可以显示本地主机与其他远程主机之间的连接,并显示哪些数据在每个连接上所传输的速度。

  1. $ sudo netwatch -e eth0 -nt
  2. $ sudo apt-get install netdiag

14. trafshow

与netwatch和pktstat一样,trafshow也可以报告当前活动连接、它们使用的协议以及每条连接上的数据传输速度。它能使用pcap类型过滤器,对连接进行过滤。

只监控TCP连接

  1. $ sudo trafshow -i eth0 tcp
  2. $ sudo apt-get install netdiag

15. netload

netload命令只显示关于当前流量负载的一份简短报告,并显示自程序启动以来所传输的总字节量。没有更多的功能特性。它是netdiag的一部分。

  1. $ netload eth0
  2. $ sudo apt-get install netdiag

16. ifstat

ifstat能够以批处理式模式显示网络带宽。输出采用的一种格式便于用户使用其他程序或实用工具来记入日志和分析。

  1. $ ifstat -t -i eth0 0.5
  2. Time           eth0
  3. HH:MM:SS   KB/s in  KB/s out
  4. 09:59:21       2.62      2.80
  5. 09:59:22       2.10      1.78
  6. 09:59:22       2.67      1.84
  7. 09:59:23       2.06      1.98
  8. 09:59:23       1.73      1.79

安装ifstat:Ubuntu、Debian和Fedora用户在默认软件库里面就有它。CentOS用户则需要从Repoforge获得它,因为Epel里面没有它。

  1. # ubuntu, debian
  2. $ sudo apt-get install ifstat
  3. # fedora, centos(Repoforge)
  4. $ sudo yum install ifstat

17. dstat

dstat是一款用途广泛的工具(用python语言编写),它可以监控系统的不同统计信息,并使用批处理模式来报告,或者将相关数据记入到CSV或类似的文件。这个例子显示了如何使用dstat来报告网络带宽。

安装dstat

  1. $ dstat -nt
  2. -net/total- —-system—-
  3. recv  send|     time
  4. 0     0 |23-03 10:27:13
  5. 1738B 1810B|23-03 10:27:14
  6. 2937B 2610B|23-03 10:27:15
  7. 2319B 2232B|23-03 10:27:16
  8. 2738B 2508B|23-03 10:27:17

18. collectl

collectl以一种类似dstat的格式报告系统的统计信息;与dstat一样,它也收集关于系统不同资源(如处理器、内存和网络等)的统计信息。这里给出的一个简单例子显示了如何使用collectl来报告网络使用/带宽。

  1. $ collectl -sn -oT -i0.5
  2. waiting for 0.5 second sample…
  3. #         <———-Network———->
  4. #Time       KBIn  PktIn  KBOut  PktOut
  5. 10:32:01      40     58     43      66
  6. 10:32:01      27     58      3      32
  7. 10:32:02       3     28      9      44
  8. 10:32:02       5     42     96      96
  9. 10:32:03       5     48      3      28

安装collectl

  1. # Ubuntu/Debian用户
  2. $ sudo apt-get install collectl
  3. #Fedora
  4. $ sudo yum install collectl

结束语

上述几个使用方便的命令可以迅速检查Linux服务器上的网络带宽使用情况。不过,这些命令需要用户通过SSH登录到远程服务器。另外,基于Web的监控工具也可以用来实现同样的任务。

ntop和darkstat是面向Linux系统的其中两个基本的基于Web的网络监控工具。除此之外还有企业级监控工具,比如nagios,它们提供了一批功能特性,不仅仅可以监控服务器,还能监控整个基础设施。

原文链接:http://www.binarytides.com/linux-commands-monitor-network/

 

呼叫中心Linux服务器系统故障排除-第一部分:高负载

By | 开发者博客 | No Comments

呼叫中心Linux服务器系统故障排除

当你得到一个系统负载高的警告时,你会怎么办?寻找高负载的原因只是需要一些时间、一些经验 和 一些Linux工具。

      这个专栏是我喜欢的文献中第一个主题:故障排除。尽管我一天到晚是一个系统管理员,但我很喜欢我工作的方方面面,很难打消我追踪复杂服务器问题的热情。就像有许多故障诊断方法一样,也有很多原因会让Linux文本编译器无法工作。在过去的几年里,我发现我执行相同的步骤来避免问题,因为我的专栏通常更多针对技巧办法,并且减少理和设计。我不会大谈整体解决问题的方法,相反,在本系列中,我描述了一些你可能会在Linux系统上发现的基本问题。然后我将讨论如何使用那些大部分可能已经在系统上的常用工具,去避免和解决同类问题。

      对于第一个专栏,我将以你在运行Linux系统时,最常见问题之一开始入手。我谈论的是一个缓慢的服务器高负载问题。在我解释如何诊断和修复高负载之前,退一步讲我们先搞清楚Linux机器上都有什么负载,并且我们如何知道何时负载会过高。

正常运行时间和负载

管理员所说的高负载,通常他们说的是平均负载。我要诊断服务器缓慢的原因,我登录到系统敲入的第一条命令就是:uptime:

$ uptime

显示结果:
18:30:35 up 365 days, 5:29, 2 users, load average: 1.37, 10.15, 8.10

正如你看到的,截至到今天,服务器已经运行了365天。同时你还可以看到,平均负载为:1.37, 10.15, 8.10。这些数字分别代表最后1分钟,5分钟,15分钟的系统的平均负载。技术上讲,平均负载是指在过去的1分钟,5分钟,15分钟内 进程等待CPU响应时间 的平均数。例如:如果负载为0,那么系统是完全空闲的。如果负载为1,那么CPU会忙得以至于等待CPU响应时间。如果有一个负载为1,并且它引发通常占用CPU的一些进程,这样一来,负载就会变为2了。正是因为平均负载,系统会统计在过去的1分钟,5分钟,15分钟里是如何持续运行的。

另一个重要的是,要知道当你看到的平均负载并不是完全的记录系统里的CPU数量。一般说来,一个准确的负载意味着在系统上只有一个CPU被占用。简言之,这就意味着负载为1的单核CPU系统和一个负载为4的4核CPU一样忙。所以在上面的例子中,假设我有一个单核CPU系统。如果我想登录去并且去看他们的平均负载,最好假设在过去的15分钟服务器有相当高的负载(8.10),大约在5分钟前(10.15)。但最近,至少在最后1分钟,负载已大幅下降。如果我看到了这现象,我甚至可以假设负载的真正原因已经消退。另一方面,如果平均负载分别为20.68,5.01,1.03,我得出的结论是:高负载有可能开始在最后5分钟,并且负载变得更加糟糕。

负载多高算高?

但当你明白了平均负载的含义以后,接下来你就会问:什么样的平均负载是好?什么样的是坏? 答案是“看情况”。很多不同的事务可以导致高负载,并且每个事务的影响也不同。一个服务器可能有一个负载为50,仍然运行良好,而另一个服务器可能有一个负载10并采取永远登录。我有一个非常慢的平均负载数成百上千的服务器,但并没有崩溃。还有服务器一直有50个负载,也运行良好,而且运行了好多年。

当你诊断一个高负载的系统时,什么才是负载高的真正重要因素。当你开始排除高负载的故障时,你会发现大多数负载似乎分为三类:中央处理器受限负载、内存不足引起的负载 以及 I / O密集型负载。我在下面详细解释每一类问题,该如何使用工具,比如用top和iostat去阻止根原。

 

top命令

如果说登录一个缓慢的系统时,使用的第一个工具是uptime,那么使用的第二个工具就是top。top的伟大之处就在于它可以获取Linux系统的所有主要因素,而且可以提供很多有用的信息,显示在一张屏幕上。top是一个有很多参数选项的十分复杂的工具,多的以至于可以写满整个文章。但对于这个专题,我仍坚持如何通过解释其输出来诊断高负载。

使用“top”,只需在命令行上输入“top”。默认情况下,“top”将以交互模式运行,并每隔几秒更新其输出。下面的列表1显示了从终端输出的“top”示例。

 

Listing 1. Sample top Output   —top案例输出

$top

显示结果:
top - 14:08:25 up 38 days, 8:02, 1 user, load average: 1.70, 1.77, 1.68
Tasks: 107 total,   3 running, 104 sleeping,   0 stopped,   0 zombie
Cpu(s): 11.4%us, 29.6%sy, 0.0%ni, 58.3%id, .7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem:   1024176k total,   997408k used,    26768k free,    85520k buffers
Swap:  1004052k total,     4360k used,   999692k free,   286040k cached

  PID USER    PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 9463 mysql   16   0  686m 111m 3328 S   53  5.5 569:17.64 mysqld
18749 nagios  16   0  140m 134m 1868 S   12  6.6   1345:01 nagios2db_status
24636 nagios  17   0 34660  10m  712 S    8  0.5   1195:15 nagios
22442 nagios  24   0  6048 2024 1452 S    8  0.1   0:00.04 check_time.pl
... ...

正如你所看到的,在仅有的几行中,却包含了很多信息。

第一行显示的是,可以从uptime命令获取的每隔几秒就会更新的平均负载的 信息。在这个例子中,你可以看到系统非常繁忙,但不是我所说的高负载。尽管如此,这个输出被分解到不同负载的类别。当我对这个缓慢的系统进行故障排除时,通常会排除掉CPU受限负载、内存负载问题 以及 I / O密集型负载,所以让我们先从CPU受限负载开始吧。

 

CPU受限负载

CPU负载:是指一次运行过多的CPU密集型进程,所引起的负载。因为每个进程都需要占用CPU资源,他们必须按顺序等待。想检查CPU负载是否受限,用top命令后即可看到CPU行信息:

Cpu(s): 11.4%us, 29.6%sy, 0.0%ni, 58.3%id, .7%wa, 0.0%hi, 0.0%si, 0.0%st

每一个百分数都是CPU处理特定任务所占时间的百分比。其次,top命令出来的内容很多,下面是几个常用值,做简单说明:

  • us: 用户CPU时间比(user CPU time),通常情况下,CPU受限负载,都是由于系统上进程由一个用户运行,如:Apache、MySQL或者shell脚本。如果这个比例较高,最可能引起的负载。
  • sy: 系统CPU时间比(system CPU time),是由内核CPU和其他系统进程占用的百分比。CPU受限负载体现在高百分比的用户或系统CPU时间上。
  • id: CPU 空闲时间比(CPU idle time),这是CPU空闲的时间的百分比。数值越高越好,实际上,如果你看到一个很高的CPU空闲比,那将是一个任何高负载都达不到CPU负载首先的迹象。
  • wa: I/O 等待时间比(I/O wait),这个值表明CPU花费时间在等待I/O(通常是磁盘I / O)上的百分比。如果你有高负载并且这个值很高,很可能负载不是CPU受限,而是由于内存问题或磁盘I/O。

 

追踪CPU受限负载

如果你看到一个高百分比的用户或系统时间比,很有可能你的负载是CPU受限。寻找问题的根源,跳过几行到顶部显示当前系统上运行的进程的列表。默认情况下,top命令将基于进程的CPU使用百分比 进行排序,如下列表2:

 

Listing 2. Current Processes Example  —当前进程事例

  PID USER   PR NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 9463 mysql  16  0  686m 111m 3328 S   53  5.5 569:17.64 mysqld
18749 nagios 16  0  140m 134m 1868 S   12  6.6   1345:01 nagios2db_status
24636 nagios 17  0 34660  10m  712 S    8  0.5   1195:15 nagios
22442 nagios 24  0  6048 2024 1452 S    8  0.1   0:00.04 check_time.pl

%CPU这列表示每个进程占用多少CPU。在这个例子中,可以看到MySQL占用了53%。当你注意这个CPU受限负载输出,你可能会发现两个问题:要么有一个占用99%CPU的进程,要么你会看到许多加起来还不到1%的小进程,在这两种情况下,可以看到相对简单的进程导致的问题。最后,我想增加一下CPU限制负载,我可以看到系统获得令人难以置信的高负载,是因为在一个没有多核CPU的系统上,一个多线程程序会催生出一个巨大的负载。如果在一个单核CPU系统上催生20个线程,你会看到一个高平均负载,尽管没有占用CPU时间的具体进程。

 

内存问题

第二个引起系统高负载的原因是内存不足,并且已经进入交换分区了。由于交换分区的空间通常在比RAM慢很多的硬盘上,所以当RAM用完并进入交换分区时,每个进程的运行会随使用硬盘而急剧减缓。通常这会导致一个恶性循环进程,这个进程 交换运行缓慢、响应时间长 并且会引起更多的栈,直到耗尽内存。交换分区最棘手的问题是,由于它对磁盘的重创,很容易误判为是I/O密集型负载。毕竟,当硬盘空间被用作内存时,任何那些实际要访问磁盘文件的进程,都不得不排队等候。所以当我看到CPU行较高的I/O等候时,在我排除所有I/O问题之前,我会检查RAM并排除它。

要诊断内存问题时,我们首先观察以下top输出的两行记录:

Mem: 1024176k total, 997408k used, 26768k free, 85520k buffers
Swap: 1004052k total, 4360k used, 999692k free, 286040k cached

这些记录可以表明RAM和交换分区的总量,以及占用多少,空余多少。然而,仔细观察这些可能会误导你的数字。我看到许多新的甚至有经验的管理员看到以上记录后,因仅有 26768k 空余而得出系统内存不足的结论。尽管这显示的的确是当前未被使用的内存,但是他并没有告诉我们总存储空间。

 

Linux文件缓存

当你访问一个文件时,Linux内核会将其加载到RAM中,并且不再需要他们时,内核也不会卸载掉它们。如果RAM有足够的可用空间时,内核会试图尽可能多地存储文件到RAM中。这样的话,当你第二次访问这个文件的时候,内核可以从RAM而不是从硬盘检索它,并且可以提供更好的性能。当一个系统一直运行时,你会发现RAM的空闲会变得非常小。如果一个进程需要更多的RAM,内核会直接使用文件缓存。事实上,我见到过很多可以提高性能的超频技术,创建一个虚拟内存盘来存储文件。他们没有意识到的是,通常情况下,他们仅使用内核就可以看到更好的结果并且更高效地使用RAM。

想要获得一个更准确的RAM空闲值,需要结合free列和cached列的值来得出。在这个例子中,我们用26768k + 286040k,RAM超过300Mb。在这个事例中,我可以很肯定地说,系统没有内存不足问题。当然,即使系统有很小的RAM空余,那是还没进入交换分区。这就是为何我们必须要检查交换分区:假如很高一部分的swap分区被使用。

 

追踪高内存使用率

如果你发现空闲RAM较低,再看一次同一进程输的数据,但这一次看%MEM列。默认情况下,top命令的输出数据是按照%CPU列排列的,按M它将重新显示内存的最高使用比率。在下面列表3中,我们排序相同内存的进程,并且易知 nagios2db_status 进程占内存最高,占了6.6%。

 

Listing 3. Processes Sorted by RAM —按内存大小排序进程

PID USER   PR NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18749 nagios 16  0  140m 134m 1868 S   12  6.6   1345:01 nagios2db_status
 9463 mysql  16  0  686m 111m 3328 S   53  5.5 569:17.64 mysqld
24636 nagios 17  0 34660  10m  712 S    8  0.5   1195:15 nagios
22442 nagios 24  0  6048 2024 1452 S    8  0.1   0:00.04 check_time.pl

 

 I / O密集型负载

I / O密集型负载的追踪,有时比较棘手。正如前面所说,如果系统发生了交换,它可以容易判断是I / O密集型负载。一旦你排除了交换,并且还存在一个高I/O等待,那么下一步我们将尝试追踪那些有大量I/O量的硬盘和分区。为了这么做,我们需要一个类似于 iostat 的命令工具。

这个 iostat 工具,就如 top工具,也是一个功能齐全而且复杂的工具。但又不同于 top 工具,它首先要在系统上可以运行,它不会默认的安装到你的系统,所以你要寻找可用的安装包。在red-hat和debian-based的系统上,你可以在 sysstat 的包中获取。一旦被安装,iostat 可以不带任何参数单独运行,来获取一个完整的硬盘I/O统计数据。

$ iostat

显示结果:
Linux 2.6.24-19-server (hostname) 	01/31/2009

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.73    0.07    2.03    0.53    0.00   91.64

Device:    tps  Blk_read/s  Blk_wrtn/s   Blk_read   Blk_wrtn
sda       9.82       417.96        27.53   30227262    1990625
sda1      6.55       219.10         7.12   15845129     515216
sda2      0.04         0.74         3.31      53506     239328
sda3      3.24       198.12        17.09   14328323    1236081

就像top命令一样,iostat 也会输出CPU使用百分比。在下面,他还提供了系统内崩溃的每个驱动和分区的统计数据:

  • tps:每秒处理的事物数(transactions per second)。
  • Blk_read/s:每秒读取的块数(blocks read per second)。
  • Blk_wrtn/s:每秒写入的块数(blocks written per second)。
  • Blk_read:读取的总块数(total blocks read)。
  • Blk_wrtn:写入的总块数(total blocks written)。

通过观察和比较这些值之间的不同,你首先应该看到哪个(哪些)分区可以获得大量的I/O数据,其次 大多数的量是否被读或者被写。就如我所说,追踪引起I/O负载的问题比较棘手,但是有希望,这些值将会帮助我们筛选出哪些进程可能引起负载。

例如,如果你有一个I / O密集型负载,并且你怀疑你的远程备份事务可能是罪魁祸首。比较读写数据。因为你知道,远程的备份任务主要从硬盘读,如果你看到大部分的磁盘在写入,你可以合理地认为这不是在备份。另一方面,当你看到一个大量读取某个分区上的I / O,你可以运行 lsof 命令和grep命令来查看这个备份进程,看他是否真的在分区上打开了文件句柄。

正如你所看到的,用 iostat 追踪I/O密集型负载并不直观。尽管不需要参数,但需要时间和经验来判断。也就是说,iostat 有很多可以获得更多不同类型I / O信息 的参数,包括寻找 NFS 共享细节的模式。如果你想知道更多,请查看 iostat 手册。

直到现在,诸如 iostat 的工具已经被系统管理员放到解决I/O问题的工具箱里了,由于内核技术的发展,在进程层面上的I/O原因变得更容易发现。假如你有一个相对较新的系统,查看你的 iotop 工具。就像iostat一样,也许他也被默认安装了。顾名思义,它的功能就像top,只针对硬盘I/O。在下面的列表4中,你可以看到在这台机器上,一个使用I/O最多的 rsync 进程 (在本例中是读取I / O)。

 

Listing 4. Example iotop Tool Output —iotop工具案例输出

$ sudo iotop

显示结果:
Total DISK READ: 189.52 K/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER  DISK READ   DISK WRITE SWAPIN   IO>  COMMAND          
 8169  be/4  root  189.52 K/s   0.00 B/s  0.00%  0.00%  rsync --server --se
 4243  be/4  kyle    0.00 B/s   3.79 K/s  0.00%  0.00%  cli /usr/lib/gnome-
 4244  be/4  kyle    0.00 B/s   3.79 K/s  0.00%  0.00%  cli /usr/lib/gnome-
    1  be/4  root    0.00 B/s   0.00 B/s  0.00%  0.00%  init

 

一下你就找到问题的根源

你如何处理这些引起负载问题的进程,取决于你自己和很多其他因素。在某些情况下,您可能有一个脚本,该脚本已经失去控制,但你可以很容易地结束掉它。在其他情况下,比如在数据库的进程中,简单的结束进程可能是不安全的,因为它可能会破坏数据。另外,它可能是你控制能力意外运行的服务,真正的解决方案是在服务器上添加更多的资源,或者添加更多的服务器来分担负载。它甚至可能从工作的计算机上一次性加载运行,并且不影响负载,所以尽管让这个进程完成。由于很多因素会导致进程占用服务器资源,此处很难全部列出,但幸运的是能确定引起高负载的原因,并且让你在下次得到机器过慢的警报时,能够变得正常。

 

10个有效的unix-linux-呼叫中心服务器性能监控-的sar sysstat 案例

By | 开发者博客 | No Comments

在呼叫中心系统中, 如何进行 呼叫中心服务器性能监控 是管理员经常遇到的一个问题. 使用sar,你可以即时地监视各种Linux子系统(如:CPU, Memory, I/O…),还可以收集并存储一个正在运行的基础性能数据,做一个历史性的分析来识别瓶颈。

Sar是sysstat包的一部分。本文解释如何安装和配置sysstat包(包含sar工具),并解释如何使用sar监控以下Linux性能统计数据。

  1. Collective CPU usage
  2. Individual CPU statistics
  3. Memory used and available
  4. Swap space used and available
  5. Overall I/O activities of the system
  6. Individual device I/O activities
  7. Context switch statistics
  8. Run queue and load average data
  9. Network statistics
  10. Report sar data from a specific time

 

一. 安装和配置sysstat

安装sysstat包

首先,确保最新版本的sar系统在你的机器上可以运行。根据您的系统版本,使用下列适合的方法进行安装。

sudo apt-get install sysstat
(or)
yum install sysstat
(or)
rpm -ivh sysstat-10.0.0-1.i586.rpm

从源代码安装Sysstat

从sysstat下载页面下载最新版本:http://sebastien.godard.pagesperso-orange.fr/download.html

当然,你也可以使用wget下载:

wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2

tar xvfj sysstat-10.0.0.tar.bz2

cd sysstat-10.0.0

./configure --enable-install-cron

注意:确保 – -enable-install-cron 配置选项。这确保接下来是自动安装。如果你不配置sysstat的这个选项,你必须自己手动创建了。

  • 创建/etc/rc.d/init.d/sysstat
  • 从/etc/rc.d/rc*.d/directories 到 /etc/rc.d/init.d/sysstat创建适当的链接,Linux引导过程会自动启动sysstat。
  • 例如,/etc/rc.d/rc3.d/S01sysstat会自动链接到/etc/rc.d/init.d/sysstat

执行./configure命令后,再执行以下命令,继续安装:

make

make install

注意:这将安装sar和其他systat实用程序 到/usr/local/bin下面。

一旦安装完毕,可使用“sar -V”命令来验证sar的版本,sysstat 10是当前的稳定版本。

$ sar -V

显示结果:
sysstat version 10.2.0
(C) Sebastien Godard (sysstat  orange.fr)

最后,确保sar可以运行。例如,下面给出了系统CPU统计3次(1秒间隔) 的数据。

$ sar 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)
01:27:32 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:27:33 PM       all      0.00      0.00      0.00      0.00      0.00    100.00
01:27:34 PM       all      0.25      0.00      0.25      0.00      0.00     99.50
01:27:35 PM       all      0.75      0.00      0.25      0.00      0.00     99.00
Average:          all      0.33      0.00      0.17      0.00      0.00     99.50

Sysstat的实用程序部分

以下是其他sysstat实用工具:

  • sar 收集和显示所有系统活动的统计数据。
  • sadc 代表“系统活动数据收集器”,这是sar进行数据收集的后端数据。
  • sa1 在二进制数据文件存储系统活动。 sa1要基于sadc完成存储。sa1从cron开始运行。
  • sa2 创建日常收集到的统计数据摘要。sa2从cron开始运行。
  • sadf 可以生成CSV,XML和其他多种格式的sar报告。用它可以和其他工具来集成sar数据。
  • iostat 生成 CPU, I/O 统计数据。
  • mpstat 显示 CPU 的统计结果。
  • pidstat 报告基于进程号 (PID)的统计数据。
  • nfsiostat 显示 NFS I/O (网络文件系统)统计数据。
  • cifsiostat 生成 CIFS (通用Internet文件系统)统计数据。

本文主要关注sysstat基本面和sar工具。

使用cron收集sar统计数据–sa1和sa2的统计数据

在/etc/cron.d目录下创建sysstat文件,可用来收集sar的历史数据。

# vi /etc/cron.d/sysstat

显示结果:
*/10 * * * * root /usr/local/lib/sa/sa1 1 1   #表示每10分钟
53 23 * * * root /usr/local/lib/sa/sa2 -A   #表示 23:53

如果已经用源码安装了sysstat,那么sa1和sa2的默认位置是 /usr/local/lib/sa。如果你使用发行版安装更新方法(例如:yum, up2date, 或 apt-get),默认位置一般为:/usr/lib/sa/sa1 和 /usr/lib/sa/sa2。

注意: 想全面了解 cron , 阅读 Linux Crontab: 15 Awesome Cron Job Examples.

 

/usr/local/lib/sa/sa1

  • 这个是每10分钟收集一次sar数据作为历史参考。
  • 如果你想每5分钟收集一次sar的统计数据,将/etc/cron.d/sysstat文件里的 */10 改成 */5 即可。
  • 这样一来,数据将被写到/var/log/sa/saXX 文件中。XX代表一个月中的几日。saXX文件是一个二进制文件,不能使用文本编辑器打开它而进行预览。
  • 例如:如果今天是某月的26号,那么sa1将会把sar数据写到/var/log/sa/sa26文件里。
  • 您可以传递两个参数给sa1:时间间隔(以秒为单位)和计数。
  • 在上面的crontab的例子:sa1 1 1意味着sa1每1秒收集1次sar数据(每隔10分钟)。

 

/usr/local/lib/sa/sa2

  • 这个是在接近午夜(在23:53)的时候创建sar数据日常的数据报告。
  • sa2创建 /var/log/sa/sarXX 文件 (注意,这个是不同于sa1中saXX 文件的). 这个 sarXX 文件是由sa2创建的一个可通过文本编辑器查看的ascii文件。
  • 这将删除超过一个星期的saXX文件。因此,需要写一个每周都会运行的快捷shell脚本,将/var/log/sa/*文件复制到其他目录中,以便进行历史的 sar数据分析。

 

二. 10个 Sar 用法的实际案例

 

有以下两种方法可以调用sar:

  1. sar 后面跟着一个选项 (不指定 saXX 数据文件)。这将寻找 当天的saXX数据文件和 截至到当前天之前的报告性能数据记录。
  2. sar后面跟着一个 -f 选项,指定一个 saXX 数据文件。这将报告特定某天的性能数据,即 XX是某月里XX号。

下面的例子中,我们将解释如何查看某些特定某日的性能数据。为了找到特定某日的,在sar命令后面加“-f /var/log/sa/saXX”语句。

所有的sar命令将有以下输出的第一行:

$ sar -u

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)
  • Linux 2.6.18-194.el5PAE – Linux系统的内核的版本。
  • (dev-db) – 收集sar数据的主机名。
  • 03/26/2011 – 收集sar数据的日期。
  • _i686_ – 系统构架。
  • (8 CPU) – 系统上可用的cpu数量。在多核心系统中, 用来表明cpu核心的总数。

1. CPU Usage of ALL CPUs (sar -u) —所有CPU的CPU使用率

sar -u 给出所有CPU的累积实时CPU使用率。”1  3″表示:每1秒报告一次,共报告3次。你可以通过最后一列的“%idle”(闲置百分比)来判断cpu的负载。

$ sar -u 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:27:32 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:27:33 PM       all      0.00      0.00      0.00      0.00      0.00    100.00
01:27:34 PM       all      0.25      0.00      0.25      0.00      0.00     99.50
01:27:35 PM       all      0.75      0.00      0.25      0.00      0.00     99.00
Average:          all      0.33      0.00      0.17      0.00      0.00     99.50

以下是一些参数:

  • sar -u 显示当前天的CPU使用率,直到当前时间点。
  • sar -u 1 3 显示实时 CPU 使用率, 每1秒报告一次,共报告3次。
  • sar -u ALL 功能和“sar -u”相同,只是多显示几列性能指标。
  • sar -u ALL 1 3 功能和“sar -u 1  3”相同,只是多显示几列性能指标。
  • sar -u -f /var/log/sa/sa10/var/log/sa/下的sa10文件中获取并显示一个月中10号的CPU使用率。

 

2. CPU Usage of Individual CPU or Core (sar -P) —单个CPU或单核的CPU使用率

假如在你的机器上有4个核(CPU),并且想查看个别核的使用情况,请按照如下操作:

“-P  ALL”表示:它应该显示所有单个核的统计数据

在接下来的例子中,“CPU”一列中的0,1,2,3表示对应的CPU核的编号。

$ sar -P ALL 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:34:12 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:34:13 PM       all     11.69      0.00      4.71      0.69      0.00     82.90
01:34:13 PM         0     35.00      0.00      6.00      0.00      0.00     59.00
01:34:13 PM         1     22.00      0.00      5.00      0.00      0.00     73.00
01:34:13 PM         2      3.00      0.00      1.00      0.00      0.00     96.00
01:34:13 PM         3      0.00      0.00      0.00      0.00      0.00    100.00

“-P 1″表示:表明它会只显示第2核的统计数据。(注意:核的编号从0开始)

$ sar -P 1 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:36:25 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:36:26 PM         1      8.08      0.00      2.02      1.01      0.00     88.89

以下是一些参数:

  • sar -P ALL 按所有核分解显示当前天的CPU使用率。
  • sar -P ALL 1 3 实时显示所有核CPU使用率,每1秒报告一次,共报告3次(按所有核分解显示)。
  • sar -P 1 显示当前天的核编号为1的CPU使用率。
  • sar -P 1 1 3 实时显示核号为1,每1秒显示1次,共显示3次 的CPU使用率。
  • sar -P ALL -f /var/log/sa/sa10 显示来自sa10文件,10号的CPU利用率,并且按所有核分解显示。

 

3. Memory Free and Used (sar -r) —内存空闲 和 内存使用

这个用来报告内存的统计数据。”1  3″表示:每1秒报告一次,共报告3次。你可以通过 “kbmemfree” 和 “kbmemused”两指标来得知 空闲内存 和 使用中内存。

$ sar -r 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

07:28:06 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact
07:28:07 AM   6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204
07:28:08 AM   6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204
07:28:09 AM   6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204
Average:      6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204

以下是一些参数:

  • sar -r
  • sar -r 1 3
  • sar -r -f /var/log/sa/sa10

 

4. Swap Space Used (sar -S) —交换空间的使用情况

这个用来报告交换空间的统计数据。”1  3″表示:每1秒报告一次,共报告3次。如果“kbswpused” 和 “%swpused”都是0,则系统没发生交换。

$ sar -S 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

07:31:06 AM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
07:31:07 AM   8385920         0      0.00         0      0.00
07:31:08 AM   8385920         0      0.00         0      0.00
07:31:09 AM   8385920         0      0.00         0      0.00
Average:      8385920         0      0.00         0      0.00

以下是一些参数:

  • sar -S
  • sar -S 1 3
  • sar -S -f /var/log/sa/sa10

注意:

  • 使用“sar -r”来确定 空闲的、使用的 和 缓存 的内存页,在系统内(/秒)的数量情况。
  • 使用“sar -H”来识别 已使用 和 可用 的大内存页(hugepages) (单位:KB)。
  • 使用“sar -B”生成分页数据,即每秒有多少KB的数据页从硬盘写入或读出。
  • 使用“sar -W”生成交换页数据,即每秒有多少交换页。

 

5. Overall I/O Activities (sar -b) —总体的I/O活动

这个用来报告I/O(输入输出)的统计数据。”1  3″表示:每1秒报告一次,共报告3次。

以下字段出现在下面的例子中:

  • tps – 每秒处理事务数 (包括读和写,又叫做 系统吞吐量)。
  • rtps – 每秒读事务的数量。
  • wtps – 每秒写事务的数量。
  • bread/s – 每秒读字节数。
  • bwrtn/s – 每秒写字节数。
$ sar -b 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:56:28 PM       tps      rtps      wtps   bread/s   bwrtn/s
01:56:29 PM    346.00    264.00     82.00   2208.00    768.00
01:56:30 PM    100.00     36.00     64.00    304.00    816.00
01:56:31 PM    282.83     32.32    250.51    258.59   2537.37
Average:       242.81    111.04    131.77    925.75   1369.90

以下是一些参数:

  • sar -b
  • sar -b 1 3
  • sar -b -f /var/log/sa/sa10

注意:用“sar -v”显示 inode handlers, file handlers 和 pseudo-terminals 的数量

 

6. Individual Block Device I/O Activities (sar -d) —单个的I / O块设备活动

识别单个的块设备活动情况(即 特定的挂载点 或 逻辑单元号 或 分区)

$ sar -d 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:59:45 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:59:46 PM    dev8-0      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM    dev8-1      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM dev120-64      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM dev120-65      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM  dev120-0      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM  dev120-1      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM dev120-96      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91
01:59:46 PM dev120-97      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91

在上面的例子中,“DEV”表示:特定的块设备。

例如:“dev53-1″表示:53号主设备号,1号分设备号。

设备名称(DEV列)可以显示实际的设备名称(例如:sda sda1,sdb1等) ,如果加上 -p 参数,将显示如下:

$ sar -p -d 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:59:45 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:59:46 PM       sda      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM      sda1      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM      sdb1      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM      sdc1      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM      sde1      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM      sdf1      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM      sda2      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91
01:59:46 PM      sdb2      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91

以下是一些参数:

  • sar -d
  • sar -d 1 3
  • sar -d -f /var/log/sa/sa10
  • sar -p -d

 

7. Display context switch per second (sar -w) —显示每秒上下文交换

这个用来报告每秒创建的进程总数 和 上下文交换数量。”1  3″表示:每1秒报告一次,共报告3次。

$ sar -w 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

08:32:24 AM    proc/s   cswch/s
08:32:25 AM      3.00     53.00
08:32:26 AM      4.00     61.39
08:32:27 AM      2.00     57.00

下面是一些参数:

  • sar -w
  • sar -w 1 3
  • sar -w -f /var/log/sa/sa10

 

8. Reports run queue and load average (sar -q) —运行中队列 和 平均负载的统计报告

这个用来报告最后1分钟、5分钟 和 15分钟的运行队列数量 以及 平均负载情况。”1  3″表示:每1秒报告一次,共报告3次。

$ sar -q 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

06:28:53 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
06:28:54 AM         0       230      2.00      3.00      5.00         0
06:28:55 AM         2       210      2.01      3.15      5.15         0
06:28:56 AM         2       230      2.12      3.12      5.12         0
Average:            3       230      3.12      3.12      5.12         0

注意:“blocked” 列显示的是当前已经阻塞并等待I/O操作完成的任务数。

以下是一些参数:

  • sar -q
  • sar -q 1 3
  • sar -q -f /var/log/sa/sa10

 

9. Report network statistics (sar -n) —网络统计报告

这个用来报告各种网络统计数据。例如:通过网卡接包(传送包)的数量、失败的数量 等。”1  3″表示:每1秒报告一次,共报告3次。

sar -n KEYWORD

KEYWORD 可以为下面的任意一个:

  • DEV – 显示eth0, eth1等的网络设备的重要统计数据。
  • EDEV – 显示网络设备的失败数据。
  • NFS – 显示NFS(网络文件系统)客户端活动情况。
  • NFSD – 显示NFS(网络文件系统)服务端活动情况。
  • SOCK – 显示IPV4使用的套接字。
  • IP – 显示IPv4 网络流量。
  • EIP – 显示IPv4 网络错误。
  • ICMP – 显示ICMPv4 网络流量。
  • EICMP – 显示ICMPv4 网络错误。
  • TCP – 显示 TCPv4 网络流量。
  • ETCP – 显示 TCPv4 网络错误。
  • UDP – 显示 UDPv4 网络流量。
  • SOCK6, IP6, EIP6, ICMP6, UDP6 are for IPv6
  • ALL – 这将显示以上所有信息,输出统计数据将非常长。
$ sar -n DEV 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:11:13 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
01:11:14 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:11:14 PM      eth0    342.57    342.57  93923.76 141773.27      0.00      0.00      0.00
01:11:14 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

10. Report Sar Data Using Start Time (sar -s) —统计特定开始时间的Sar数据

当你用“sar -f”参数从/var/log/sa/saXX 文件中查看sar历史数据时,假如你使用“sar -s 10:00:00″,则显示从早上10点开始的sar数据,而不是23:53,正如下面案例。

你可以结合-s参数和其他sar参数。

例如:统计本月26号从早上10点开始的平均负载数据,下面结合-q 和 -s参数。

$ sar -q -f /var/log/sa/sa23 -s 10:00:01

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

10:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:10:01 AM         0       127      2.00      3.00      5.00         0
10:20:01 AM         0       127      2.00      3.00      5.00         0
...
11:20:01 AM         0       127      5.00      3.00      3.00         0
12:00:01 PM         0       127      4.00      2.00      1.00         0

没有参数可以指定结束时间,只能像下面一样去使用头命令:

例如:从早上10点开始,你只想看到7项,你必须在输出时使用过滤,加一句“head -n 10″。

$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

10:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:10:01 AM         0       127      2.00      3.00      5.00         0
10:20:01 AM         0       127      2.00      3.00      5.00         0
10:30:01 AM         0       127      3.00      5.00      2.00         0
10:40:01 AM         0       127      4.00      2.00      1.00         2
10:50:01 AM         0       127      3.00      5.00      5.00         0
11:00:01 AM         0       127      2.00      1.00      6.00         0
11:10:01 AM         0       127      1.00      3.00      7.00         2

Linux性能监控和调优还有很多,这只是很小的一部分,我们会用更多文章来展示。

 

 

 

 

 

 

 

 

 

 

 

 

 

索克维尔旗下产品 · CXMind AI联络中心 · WCC全渠道联络中心