参考文章: https://blog.csdn.net/liyongbing1122/article/details/89517282
默认监控: sar 1 1 // CPU和IOWAIT统计状态
(1) sar -b 1 1 // IO传送速率
(2) sar -B 1 1 // 页交换速率
(3) sar -c 1 1 // 进程创建的速率
(4) sar -d 1 1 // 块设备的活跃信息
(5) sar -n DEV 1 1 // 网路设备的状态信息
(6) sar -n SOCK 1 1 // SOCK的使用情况
(7) sar -n ALL 1 1 // 所有的网络状态信息
(8) sar -P ALL 1 1 // 每颗CPU的使用状态信息和IOWAIT统计状态
(9) sar -q 1 1 // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 1 1 // 内存和swap空间使用情况
(11) sar -R 1 1 // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 1 1 // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 1 1 // inode, file and other kernel tablesd的状态信息
(14) sar -w 1 1 // 每秒上下文交换的数目
(15) sar -W 1 1 // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 1 1 // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 1 1 // TTY设备的活动状态
(18) 将输出到文件(-o)和读取记录信息(-f)
小脚本
#! /bin/bash
if [ "$#" -lt 1 ] # $# 传递给脚本或函数的参数个数
then
echo "Usage: $0 program" # $0 脚本名称
exit -1;
fi
SLEEP_TIME=$1
#LOG=$2
while true
do
#线程数
thread_num=`sar -q 1 1 | awk '/^Average:/{print $3}'`
#句柄数
open_files=`sar -v 1 1 | awk '/^Average:/{print $3}'`
#cpu占用率
cpu_info=`sar -u 1 1 | awk '/^Average:/{print 100-$8}'`
#内存使用量
mem=`sar -r 1 1 | awk '/^Average:/{print ($3-$5-$6)/($2+$3)*100}'`
#IO传输总量
io=`sar -b 1 1 | awk '/^Average:/{print $2}'`
#输出到日志文件
echo -e "`date +"%Y-%m-%d %H:%M:%S"`,cpu_info:${cpu_info},mem:${mem},io:${io},thread_num:${thread_num},open_files:${open_files}" #>> ${LOG}
sleep $SLEEP_TIME
done