监控,在检查系统问题或优化系统性能工作上是一个不可缺少的部分。通过操作系统监控工具监视操作系统资源的使用情况,间接地反映了各服务器程序的运行情况。根据运行结果分析可以帮助我们快速定位系统问题范围或者性能瓶颈点。
nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果。
nmon所记录的数据包含以下一些方面:
● cpu占用率
●内存使用情况
●磁盘I/O速度、传输和读写比率
●文件系统的使用率
●网络I/O速度、传输和读写比率、错误统计率与传输包的大小
●消耗资源最多的进程
●计算机详细信息和资源
●页面空间和页面I/O速度
●用户自定义的磁盘组
●网络文件系统
另外在AIX操作系统上,nmon还能监控到其他的一些信息,如异步I/O等。
关于这个工具的更加详细的说明请看IBM官方网站的说明:
1、nmon工具:
http://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/
2、nmon analyser工具:
http://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/
安装等自己上网找,本文主要将自己的操作记录下来,以备后面学习
1 简单使用
- 获取帮助文档
/nmon/nmon_x86_rhel66 -h
这里是列表文本 不同的操作系统,可能 nmon 命令不一样
启动命令:
/nmon/nmon_x86_rhel66
常用组合键nml
lnmonq16gqqqqqq[H for help]qqqHostname=dataflow-sit2Refresh= 2secs qqq19:49.46qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x CPU +---Long-Term--------User%-----System%------Wait%-----Steal%--------------+ x x
x100%-| | x x
x 95%-| | x x
x 90%-| | x x
x 85%-| | x x
x 80%-| | x x
x 75%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 70%-|UUU+UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 65%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 60%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 55%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 50%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 45%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 40%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 35%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 30%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 25%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 20%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 15%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 10%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x 5%-|UUU|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU x x
x +-------------------------------------------------------------------------+ x x
x Memory and Swap x x
x PageSize:4KB RAM-Memory Swap-Space High-Memory Low-Memory x x
x Total (MB) 7870.6 16904.0 - not in use - not in use x x
x Free (MB) 1490.5 15953.3 x x
x Free Percent 18.9% 94.4% x x
x Linux Kernel Internal Memory (MB) x x
x Cached= 612.1 Active= 2689.4 x x
x Buffers= 249.7 Swapcached= 168.6 Inactive = 1108.4 x x
x Dirty = 0.1 Writeback = 0.0 Mapped = 131.3 x x
x Slab = 110.0 Commit_AS = 11065.9 PageTables= 21.1 x
x Network I/O x
xI/F Name Recv=KB/s Trans=KB/s packin packout insize outsize Peak->Recv Trans x
x lo 0.1 0.1 1.5 1.5 52.0 52.0 0.6 0.6 x
x eth0 29.7 24.5 178.8 192.8 170.4 130.1 29.8 24.5 x
x x
x x
x x
输入c可显示CPU的信息,“m”对应内存、“n”对应网络,“d”可以查看磁盘信息;“t”可以查看系统的进程信息;
使用单键命令来查看您所需要的数据。例如,要获取CPU、内存和磁盘统计信息,启动nmon 并输入:cm d;
若需获取相关的帮助信息,按 h 键。
要需获取附加的帮助信息,可以尝试其他方法:
输入 nmon -? 命令可以获取简短的详细信息。
输入 nmon -h 命令可以获取完整的详细信息
2 数据采集
/nmon/nmon_x86_rhel66 -f -t -m /nmon -s 30 -c 180
参数说明:
- -f:按标准格式输出文件:_YYYYMMDD_HHMM.nmon;
- -t:输出中包括占用率较高的进程;
- -s30:每30秒进行一次数据采集
- -c180:一共采集180次,生成一个 xxx.nmon 文件
- -N 指定需要对 NFS 活动情况进行监控
- -m 指定生成的 xxx.nmon 存放的目录
输入命令回车后,将自动在当前目录生成一个hostname_timeSeries.nmon的文件,nmon输出文件的命名方式是服务器名_日期时间.nmon
- 特别说明:
该命令启动后,会在nmon所在目录下生成监控文件,并持续写入资源数据,直至360个监控点收集完成——即监控1小时,这些操作均自动完成,无需手工干预,测试人员可以继续完成其他操作。如果想停止该监控,需要通过“#ps–ef|grepnmon”查询进程号,然后杀掉该进程以停止监控。
通过sort命令可以将nmon结果文件转换为csv文件:
sort -A hostname_timeSeries.nmon> hostname_timeSeries.nmon.csv
执行完sort命令后即可在当前目录生产hostname_timeSeries.nmon.csv文件。
###数据图形展示
为了分析nmon监控获得的结果,IBM还提供了相应的图形化分析工具nmon_analyser,通过nmonanalyser.xls工具可以把监控的结果文件转换成excel文件,方便分析系统的各项资源占用情况。
nmon_analyser工具的下载:
http://www-941.haw.ibm.com/collaboration/wiki/display/Wikiptype/nmonanalyser
然后就可以使用了,
具体见:http://blog.csdn.net/linabc123000/article/details/70833427
- 查看diskbusy时找到服务器写数据的目录所在的磁盘:即对应关系,命令:
ls -trl /dev/mapper
crontab使用
1.安装及操作:
yum install vixie-cron -y
yum install crontabs -y
操作:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
查看状态:
service crond status
查看crontab服务是否已设置为开机启动,执行命令:
chkconfig --level 35 crond on
- 设置定时任务:
crontab -e
打开设置定时任务的文件进行修改:
30 * * * * /nmon/nmon_x86_rhel66 -f -N -m /opt/nmon/ -s 60 -c 1440 -y
00 01 * * * find /opt/nmon /nmon -name "*.nmon" -atime +30 -exec rm {} \;
修改完成后都需要进行重启服务操作
service crond restart
最后查看定时任务是否上线
crontab -l
crond的运行日志在/var/log/cron中
查看服务是否已经运行用 ps -ax | grep cron
- cron文件语法:
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
-
任务调度设置文件的写法:
可用crontab -e命令来编辑,可以直接修改/etc/crontab文件
具体格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选
字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
举例如下:
5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,
以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]
每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
- crontab文件的一些例子:
复制代码代码示例:
每月每天每小时的第 0 分钟执行一次 /bin/ls :
0 * * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
*/20 6-12 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex_mail_name :
0 17 * * 1-5 mail -s "hi" alex_mail_name < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
在hp unix,中,每20分钟执行一次,表示为:0,20,40 * * * * 而不能采用*/n方式,否则出现语法错误。
复制代码代码示例:
30 18 * * * /usr/local/etc/rc.d/lighttpd restart
每天的18:30重启apache。
30 8 1,15,30 * * /usr/local/etc/rc.d/lighttpd restart
每月1、15、30日的08 : 30重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 22 * * 6 /usr/local/etc/rc.d/lighttpd restart
每星期六的10 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
* 22-8/2 * * * /usr/local/etc/rc.d/lighttpd restart
晚上10点到早上8点之间,每隔2小时重启apache
0 8 15 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的15号与每周一到周三的8点重启apache
0 8 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的8点重启apache
*/60 * * * * /usr/sbin/ntpdate 210.72.145.44
每小时同步一下时间
注意
当crontab执行脚本中包含的命令需要使用到环境变量时,例如:jps等,这种情况喜爱的crontabu 不会加载PATH全部路径,导致在执行定时任务时会出现问题。
此时的解决方案时在该执行脚本中加入jps所在的环境变量,例如:
$ which jps
/home/dtc/java/bin
那么就需要在执行脚本中加入;
export PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/dtc/java/bin
即可。