Linux系統性能統計工具Sar和實時系統性能監控腳本


sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。

安裝(centos): yum -y install sysstat 

要啟動SAR,必須通過cron工具以周期性的間隔啟動。
安裝sysstat包后,默認創建一個/etc/cron.d/sysstat文件,其默認內容為:
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A
這里用到了兩個命令
/usr/lib/sa/sa1
/usr/lib/sa/sa2
sa1:是調用sadc(二進制文件),將數據收集到二進制日志文件的一個Shell腳本。sa1命令還確保每天使用不同的文件。每隔十分鍾運行一次該命令,最好不要改這個值,這是對一般系統折中的值。二進制日志文件存放在/var/log/sa/目錄下,命名為sa${DATE}。
sa2:是將當日二進制日志文件中所有的數據轉儲到文本文件(sar)的另一個Shell腳本,然后它將清除七天之前的所有日志文件。參數-A指定了從二進制文件中提取哪些數據轉儲到文本文件中。轉儲的文件存放在/var/log/sa/目錄下,命名為sar${DATE}。

 

啟動采集: service crond start 

 

關於sar如何使用可百度下,或者直接 man sar學習一番。直接給出一個實用監控腳本。

實時系統性能監控腳本

#! /bin/bash

export LC_ALL=en_US.UTF-8

# cpu load(5 min)
#cpu_usage=`uptime | awk '{print $11}' | cut -d , -f1`
#echo "cpu " $cpu_usage

# memery usage
mem_usage=`free | grep "buffers/cache" | awk '{print $3 * 100 /($3 + $4) }'`
echo "memory " $mem_usage

# cpu usage
cpu_usage=`sar -C 1 1 | grep "Average:" | awk '{print $3}'`
echo "cpu " $cpu_usage

disk_tps=`sar -b 1 1 | grep "Average:" | awk '{print $2}'`
echo "disk tps " $disk_tps

em1_load=`sar -n DEV 1 1 | grep "Average:" | grep "em1"`
net_recv_packet_em1=`echo $em1_load | awk '{print $3}'`
net_send_packet_em1=`echo $em1_load | awk '{print $4}'`

net_recv_kB_em1=`echo $em1_load | awk '{print $5}'`
net_send_kB_em1=`echo $em1_load | awk '{print $6}'`
echo "em1 net load " $net_recv_packet_em1 $net_send_packet_em1 $net_recv_kB_em1 $net_send_kB_em1

em2_load=`sar -n DEV 1 1 | grep "Average:" | grep "em2"`
net_recv_packet_em2=`echo $em2_load | awk '{print $3}'`
net_send_packet_em2=`echo $em2_load | awk '{print $4}'`

net_recv_kB_em2=`echo $em2_load | awk '{print $5}'`
net_send_kB_em2=`echo $em2_load | awk '{print $6}'`
echo "em2 net load " $net_recv_packet_em2 $net_send_packet_em2 $net_recv_kB_em2 $net_send_kB_em2

swap_page_num=`sar -W 1 1 | grep "Average:" | awk '{print $2 + $3}'`
echo "swap pages number " $swap_page_num

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM