在企业应用中,除了经常会用到企业级的性能监控和告警工具(如nagios、zabbix、Prometheus),还会在服务器设备出现性能问题时,可以通过部署一些可以进行性能回溯和追踪的性能分析工具,便于在主机hang死或挂机时,定位主机各项指标是否过载,也可以定位到具体是哪些程序引发了性能瓶颈。
运维人员一般接触到性能分析工具非常多,win平台下的有perfmon、java下的jprofile、系统下的sysstat工具包、nmon、top、htop、atop、iftop、iotop…… ,如果我们想列,这个名单还可以更长。不过大部分工具都是即时查看的,如果想要对历史数据进行存储,就需要配合脚本进行数据处理。不过显然很多运维前辈们肯定也想到了此问题,这里我选择了几个可以进行性能回溯的工具---sysstat、atop、oswatch、nmon。
SYSSTAT是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手”。对这个工具包我们有了一个大致的了解,那么接着看下他都包含了那些工具:
yum install -y sysstat
查看sysstat安装位置
shell> rpm -ql sysstat
/etc/cron.d/sysstat --自动新增一个crontab任务:
/etc/sysconfig/sysstat
/etc/sysconfig/sysstat.ioconf
/usr/bin/cifsiostat
/usr/bin/iostat
/usr/bin/mpstat
/usr/bin/nfsiostat-sysstat
/usr/bin/pidstat
/usr/bin/sadf
/usr/bin/sar
/usr/bin/tapestat
/usr/lib/systemd/system/sysstat.service
/usr/lib64/sa
/usr/lib64/sa/sa1
/usr/lib64/sa/sa2
/usr/lib64/sa/sadc
......
2.sysstat常用工具使用
sdac
准备的说只是一个搜集写入工具,并不直接回显于屏幕上。sadc 是把数据写在一个二进制的文件中,如果想查看数据内容,需要用sadf工具来显示。
[view@node2 ~]$ /usr/lib64/sa/sadc --help #查看sadc搜集工具帮助
Usage: /usr/lib64/sa/sadc [ options ] [ <interval> [ <count> ] ] [ <outfile> ]
Options are:
[ -C <comment> ] [ -F ] [ -L ] [ -V ]
[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]
[view@node2 ~]$ /usr/lib64/sa/sadc 1 10 sa55 #搜集工具:每秒搜集一次、搜集10次、输出到sa55文件
[view@node2 ~]$ ls -lh sa55
-rw-r--r-- 1 view view 28K Nov 13 14:55 sa55
[view@node2 ~]$ sar -f sa55 #查看该时间段搜集的性能指标
Linux 3.10.0-957.el7.x86_64 (node2) 11/13/2020 _x86_64_ (4 CPU)
02:55:05 PM CPU %user %nice %system %iowait %steal %idle
02:55:06 PM all 0.52 0.00 1.04 0.00 0.00 98.44
02:55:07 PM all 0.63 0.00 1.88 0.00 0.00 97.49
02:55:08 PM all 0.00 0.00 0.78 0.26 0.00 98.96
02:55:09 PM all 0.78 0.00 2.86 0.00 0.00 96.35
02:55:10 PM all 0.26 0.00 1.58 0.00 0.00 98.16
02:55:11 PM all 0.52 0.00 0.78 0.00 0.00 98.70
02:55:12 PM all 0.26 0.00 0.79 0.00 0.00 98.95
02:55:13 PM all 0.26 0.00 0.52 0.26 0.00 98.96
02:55:14 PM all 0.26 0.00 1.04 0.00 0.00 98.70
Average: all 0.38 0.00 1.24 0.06 0.00 98.32
[view@node2 ~]$ cd /var/log/sa/ #查看历史的性能指标默认保存60天
[view@node2 sa]$ ls -lth
total 696K
-rw-r--r-- 1 root root 63K Nov 13 15:00 sa13
-rw-r--r-- 1 root root 80K Nov 7 14:40 sa07
......
-rw-r--r-- 1 root root 49K Oct 12 17:10 sa12
-rw-r--r--. 1 root root 61K Oct 9 17:10 sa09
[view@node2 sa]$ sadf sa13
node2 -1 2020-11-13 01:05:03 UTC LINUX-RESTART
node2 600 2020-11-13 01:20:01 UTC all %user 5.13
node2 600 2020-11-13 01:20:01 UTC all %nice 0.00
node2 600 2020-11-13 01:20:01 UTC all %system 2.33
node2 600 2020-11-13 01:20:01 UTC all %iowait 0.08
node2 600 2020-11-13 01:20:01 UTC all %steal 0.00
node2 600 2020-11-13 01:20:01 UTC all %idle 92.46
......
sar
工具比较强大,既能收集系统CPU、硬盘、动态数据,也能显示动态显示,更能查看二进制数据文件;sar
的应用比较多,而且也比较复杂,数据更为精确。我们只了解一下常用的内容就行,大多数内容我们了解就行。
查看CPU的利用率:
[view@node2 ~]$ sar -u 1 5 #动态更新;下面的例子是每秒更新一次数据,总共更新五次;
Linux 3.10.0-957.el7.x86_64 (node2) 11/13/2020 _x86_64_ (4 CPU)
03:15:34 PM CPU %user %nice %system %iowait %steal %idle
03:15:35 PM all 1.55 0.00 3.88 0.00 0.00 94.57
03:15:36 PM all 0.52 0.00 1.30 0.00 0.00 98.19
03:15:37 PM all 1.82 0.00 2.34 0.00 0.00 95.84
03:15:38 PM all 30.39 0.00 17.14 0.26 0.00 52.21
03:15:39 PM all 24.29 0.00 1.03 0.26 0.00 74.42
Average: all 11.71 0.00 5.13 0.10 0.00 83.06
#%user 表示CPU的利用率;#%nice 表示CPU在用户层优先级的百分比,0表示正常;#%system表示当系统运行时,在用户应用层上所占用的CPU百分比;#%iowait 表示请求硬盘I/0数据流出时,所占用CPU的百分比;#%idle表示空闲CPU百分比,值越大系统负载越低;
查看网络吞吐量
[view@node2 ~]$ sar -n DEV 2 5 #每2秒更新一数据,共更新5次
Linux 3.10.0-957.el7.x86_64 (node2) 11/13/2020 _x86_64_ (4 CPU)
03:20:18 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
03:20:20 PM ens32 1527.00 9683.50 108.76 25226.37 0.00 0.00 0.00
03:20:20 PM lo 3.00 3.00 0.33 0.33 0.00 0.00 0.00
03:20:20 PM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:20:20 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
03:20:22 PM ens32 1507.00 9621.00 107.40 25081.19 0.00 0.00 0.00
03:20:22 PM lo 11.00 11.00 174.84 174.84 0.00 0.00 0.00
03:20:22 PM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00
#IFACE:设备名;#rxpck/s:每秒收到的包;#rxbyt/s:每秒收到的所有包的数量 ;#txbyt/s:每秒发送的所有包的数量 ;#txbyt/s:每秒发送的所有包的大小;#rxcmp/s:每秒收到数的据压缩包的数量;#txcmp/s :每秒传输的数据压缩包的数据;#rxmcst/s: 每秒收到的多播的包数量;
#如果想获取某块网卡的流量情况,我们可以使用grep过滤
iostat
是sysstat包中重要性仅次于sar工具的又一重量级工具。其参数也比较多。其可以搜集CPU使用情况、磁盘IO状态。
#Usage: iostat [ options ] [ <interval> [ <count> ] ]#
#-c : 仅显示cpu的状态-d : 仅显示存储设备的状态,不可以和-c一起使用-k :默认显示的是读入读出的block信息,用-k可以改成KB大小来显示-t : 显示日期-p device | ALL :device为某个设备或者某个分区,如果使用ALL,就表示要显示所有分区和设备的信息-x 显示扩展状态,显示出更多内容
[view@node2 ~]$ iostat -x
Linux 3.10.0-957.el7.x86_64 (node2) 11/13/2020 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
8.24 0.00 4.53 0.21 0.00 87.02
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.00 2.86 1.28 15.52 1.88 8.40 0.00 0.94 0.83 1.16 0.88 0.36
sdc 0.00 0.00 2.77 1.32 12.28 2.04 7.00 0.00 0.86 0.71 1.16 0.84 0.34
sdd 0.00 0.00 2.78 1.33 14.30 2.17 8.00 0.00 0.78 0.69 0.97 0.75 0.31
sda 0.05 0.85 6.25 11.82 922.29 107.43 114.03 0.07 4.14 10.04 1.02 1.22 2.20
mpstat
用于多处理器系统中的CPU的利用率的统计。细化到具体某个cpu的状态时可以使用参数-p,处理器的ID从0开始。这个和top中按1的效果相同。
[view@node2 ~]$ mpstat 2 10
Linux 3.10.0-957.el7.x86_64 (node2) 11/13/2020 _x86_64_ (4 CPU)
03:29:25 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
03:29:27 PM all 35.27 0.00 6.47 0.00 0.00 0.79 0.00 0.00 0.00 57.46
03:29:29 PM all 34.21 0.00 7.34 0.13 0.00 0.66 0.00 0.00 0.00 57.67
#mpstat的取值来自于/proc/stat文件
atop是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析,其比较强大的地方是其支持我们分析数据时进行排序、视图切换、正则匹配等处理。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。
1.安装netatop
登录官网查看最新版工具版本及相关要求
[root@node3 Software]# wget https://www.atoptool.nl/download/atop-2.5.0-1.x86_64.rpm
[root@node3 Software]# yum install -y atop-2.5.0-1.x86_64.rpm
通用视图
相关输出视图:
g —— 默认输出
m —— 内存相关输出
d —— 磁盘相关输出
n —— 网络相关输出
c —— 命令行输出
u 查看对应的用户资源使用情况
p 显示所有每个进程的所有信息占用情况(disk、mem、io)
P(大写) 正则匹配,显示所有匹配到的进程
快捷键汇总
读取atop日志文件: atop -r XXX
前进翻页: t
后退翻页: T
进程列表前进翻页: ctrl + f
进程列表后退翻页: ctrl + b
atopsar
是一个类似于sar 的工具,其可以实时获取数据,也可以通过读取历史文件获取主机的 cpu、load 、io、mem等信息
[view@node3 ~]$ atopsar -c 3 5 #每3s刷新一次结果,共显示5次,如果有多个CPU,会显示每个core的占用情况
node3 4.14.35-1902.300.11.el7uek.x86_64 #2 SMP Tue Mar 17 17:11:47 PDT 2020 x86_64 2020/11/18
-------------------------- analysis date: 2020/11/18 --------------------------
10:46:09 cpu %usr %nice %sys %irq %softirq %steal %guest %wait %idle _cpu_
10:46:12 all 5 0 1 0 0 0 0 0 93
10:46:15 all 0 0 1 0 0 0 0 0 99
10:46:18 all 0 0 1 0 0 0 0 0 99
10:46:21 all 0 0 1 0 0 0 0 0 99
10:46:24 all 2 0 1 0 0 0 0 0 97
OSWatch工具是由 oracle 搞出来的一个性能监控工具,不过其需要依赖sysstat这样的工具包里的工具,其调用的命令有iostat、ps、top、vmstat、tracert 等,通过简单的脚本,以定期间隔将数据保留在相应的目录文件中,也可以指定参数,保证其保留最近多长时间的文件。为了便于汇图,在该工具包中还提供了一个 jar文件,通过该jar文件可以方便的将收集到的数据以图示的形式展示出来。
1.安装
登录Oracle mos 搜索文章oswbb 734 download (6.03 MB) OSWatcher (Includes: [Video]) (文档 ID 301137.1)下载
[view@node2 ~]$ cd /u01/
[view@node2 u01]$ tar xvf oswbb734.tar
[view@node2 u01]$ cd oswbb
[root@node2 u01]# chmod o+x /tmp/
[view@node2 oswbb]$ nohup ./OSWatcher.sh 20 24 gzip /u01/oswbb/archive &
#参数1:指定两次获取数据的间隔,默认不指定为30s;
#参数2:指定保留多少小时的数据,默认保留最近48小时;
#参数3:gzip 是否进行gzip压缩;
#参数4:指定采集到的数据保存的位置,不指定默认保存在当前目录下的archive目录下。
[view@node2 oswbb]$ tail -100f nohup.out #查看nohup无错误就没问题
Data is stored in directory: /u01/oswbb/archive
Starting Data Collection...
oswbb heartbeat:Wed Nov 18 11:11:31 CST 2020
oswbb heartbeat:Wed Nov 18 11:11:51 CST 2020
oswbb heartbeat:Wed Nov 18 11:12:11 CST 2020
oswbb heartbeat:Wed Nov 18 11:12:32 CST 2020
oswbb heartbeat:Wed Nov 18 11:12:52 CST 2020
[view@node2 oswbb]$ ps auxf|grep -i osw #查看进程
view 2296 0.0 0.0 113312 1616 pts/2 S 15:15 0:00 | \_ /bin/sh ./OSWatcher.sh 20 24 gzip /u01/oswbb/archive
view 2441 0.0 0.0 113176 1456 pts/2 S 15:15 0:00 | | \_ /bin/sh ./OSWatcherFM.sh 24 /u01/oswbb/archive
view 3403 0.0 0.0 113180 1392 pts/2 S 15:16 0:00 | | \_ /bin/sh ./vmsub.sh /u01/oswbb/archive/oswvmstat/node2_vmstat_20.11.18.1500.dat vmstat 1 3 1
view 3405 0.0 0.0 113180 1392 pts/2 S 15:16 0:00 | | \_ /bin/sh ./mpsub.sh /u01/oswbb/archive/oswmpstat/node2_mpstat_20.11.18.1500.dat mpstat -P ALL 1 2 1
view 3412 0.0 0.0 113180 1392 pts/2 S 15:16 0:00 | | \_ /bin/sh ./iosub.sh /u01/oswbb/archive/oswiostat/node2_iostat_20.11.18.1500.dat iostat -xk 1 3 1
view 3421 0.0 0.0 113180 1384 pts/2 S 15:16 0:00 | | \_ /bin/sh ./xtop.sh /u01/oswbb/archive/oswtop/node2_top_20.11.18.1500.dat 1
[view@node2 oswbb]$ ll archive/ #归档目录内容如下
total 0
drwxrwxr-x 2 view view 258 Nov 18 15:00 oswifconfig
drwxrwxr-x 2 view view 246 Nov 18 15:00 oswiostat
drwxrwxr-x 2 view view 252 Nov 18 15:00 oswmeminfo
drwxrwxr-x 2 view view 246 Nov 18 15:00 oswmpstat
drwxrwxr-x 2 view view 252 Nov 18 15:00 oswnetstat
drwxrwxr-x 2 view view 6 Nov 18 10:55 oswprvtnet
drwxrwxr-x 2 view view 222 Nov 18 15:00 oswps
drwxrwxr-x 2 view view 46 Nov 18 15:10 oswslabinfo
drwxrwxr-x 2 view view 228 Nov 18 15:00 oswtop
drwxrwxr-x 2 view view 246 Nov 18 15:00 oswvmstat
[view@node2 oswbb]$ ./stopOSWbb.sh #关闭oswatcher
使用图形化查看信息
[view@node2 ~]$ java -version #确保JAVA和DISPLAY能用
[view@node2 ~]$ echo $DISPLAY
[view@node2 oswbb]$ java -jar oswbba.jar -i /u01/oswbb/archive/ #使用gnuplot生成图
Enter 1 to Display CPU Process Queue Graphs
Enter 2 to Display CPU Utilization Graphs
Enter 3 to Display CPU Other Graphs
Enter 4 to Display Memory Graphs
Enter 5 to Display Disk IO Graphs
Enter 6 to Generate All CPU Gif Files
Enter 7 to Generate All Memory Gif Files
Enter 8 to Generate All Disk Gif Files
Enter L to Specify Alternate Location of Gif Directory
Enter T to Alter Graph Time Scale Only (Does not change analysis dataset)
Enter D to Return to Default Graph Time Scale
Enter R to Remove Currently Displayed Graphs
Enter A to Analyze Data
Enter S to Analyze Subset of Data(Changes analysis dataset including graph time scale)
Enter P to Generate A Profile
Enter X to Export Parsed Data to File
Enter Q to Quit Program
#输入需要查看的资源类型
1、sysstat 服务获得的数据反映的是系统的整体性能情况,sysstat的数据文件通过sar命令读取的结果较人性化,易理解;
2、而atop工具,可以细化到每个进程的性能数据,atop的分析结果比较接近动态,类似于直接执行 top一样,可以按 cpu、内存情况进行排序,又可以正则匹配 。而 atopsar 更类似于sar 工具输出的结果 。
3、OSWatch工具是在sysstat、ps、top等常用工具的基础上,又以shell 脚本的方式进行了二次开发和封装,当然输出结果比较人性化 ,安装 tar包解压后即可使用,可以将可执行程序和结果存放在任一位置 。也支持通过调用gzip命令对输出内容进行压缩。
4、nmon工具输出的结果感觉比较乱(非实时模式),通过查看其输出文件处理比较不方便,不过取出数据后,结合excel 出图这个比较人性化,对于技能要求比较低,任何人取下来数据,点下excel 里的宏按钮即可生成漂亮的走势图。
所以在遇到对系统问题进行定位和分析时,可以结合起来用。从现网使用的经验来看,以上工具占用系统都不多 。一般公司比较重要的节点上,除部署zabbix、nagios这类的工具外,还可以再部署oswatch、atop两个工具,便于出现问题后结合分析。可以利用前者查看趋势图情况、利用后者进行文本数据对比。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。