編程需求:
之前已經(jīng)編寫過一個性能監(jiān)控腳本.現(xiàn)在將其再次進(jìn)行功能的豐富,以達(dá)到企業(yè)生產(chǎn)環(huán)境的需求.
本文中涉及到需保密的內(nèi)容均以...省略,盡請諒解!
源代碼:
#!/bin/bash
#腳本功能描述:監(jiān)控服務(wù)器主要性能參數(shù)指標(biāo)
#監(jiān)控項目:內(nèi)核信息,主機(jī)名稱,IP地址,登錄賬戶,內(nèi)存與swap信息,磁盤信息,CPU負(fù)載
#內(nèi)核信息
kernel=$(uname -r)
#操作系統(tǒng)版本
release=$(cat /etc/redhat-release)
#主機(jī)名稱
hostname=$HOSTNAME
#本地IP地址列表
localip=$(ip a s | awk '/inet /{print $2}')
#總內(nèi)存容量
mem_total=$(free | awk '/Mem/{print $2}')
#剩余內(nèi)存容量
mem_free=$(free | awk '/Mem/{print $NF}')
#總swap容量
swap_total=$(free | awk '/Swap/{print $2}')
#剩余swap容量
swap_free=$(free | awk '/Swap/{print $NF}')
#磁盤信息
disk=$(df | awk '/^\/dev/{print $1,$2,$4}'|column -t)
#CPU最近1分鐘的平均負(fù)載
load1=$(uptime | sed 's/,//g' | awk '{print $(NF-2)}')
#CPU最近5分鐘的平均負(fù)載
load5=$(uptime | sed 's/,//g' | awk '{print $(NF-1)}')
#CPU最近15分鐘的平均負(fù)載
load15=$(uptime | sed 's/,//g' | awk '{print $(NF)}')
#登錄用戶數(shù)量
login_users=$(who | wc -l)
#進(jìn)程數(shù)量
procs=$(ps aux | wc -l)
#系統(tǒng)總賬戶數(shù)量
users=$(sed -n '$=' /etc/passwd)
#CPU型號
cpu_info=$(LANG=C lscpu |awk -F: '/Model name/ {print $2}')
#CPU內(nèi)核數(shù)量
cpu_core=$(awk '/processor/{core++} END{print core}' /proc/cpuinfo)
#安裝性能監(jiān)控軟件
yum -y -q? install sysstat &>/dev/null
echo -e "\033[34m提取磁盤性能指標(biāo),請稍后...\033[0m"
tps=$(LANG=C sar -d -p 1 6 | awk '/Average/' | tail -n +2 |awk '{print "["$2"]磁盤平均IO數(shù)量:"$3}') &
read_write=$(LANG=C sar -d -p 1 6 |awk '/Average/' | tail -n +2 | awk '{print "["$2"]平均每秒讀寫扇區(qū)量:"$4,$5}') &
#中斷數(shù)量
irq=$(vmstat 1 2 |tail -n +4 | awk '{print $11}')
#上下文切換數(shù)量
cs=$(vmstat 1 2|tail -n +4 | awk '{print $12}')
#占用內(nèi)存資源最多的10個進(jìn)程列表
top_proc_mem=$(ps --no-headers -eo comm,rss | sort -k2 -n |tail -10)
#占用內(nèi)存資源最多的10個進(jìn)程列表
top_proc_cpu=$(ps --no-headers -eo comm,rss | sort -k2 -n |tail -10)
#獲取網(wǎng)卡流量信息,接收|發(fā)送的數(shù)據(jù)流量,單位為字節(jié)(bytes)
net_monitor=$(cat /proc/net/dev | tail -n +3 |awk 'BEGIN{ print "網(wǎng)卡名稱 入站數(shù)據(jù)流量(bytes) 出站數(shù)據(jù)流量(bytes)"} {print $1,$2,$10}' | column -t)
#輸出數(shù)據(jù)信息
echo -e "\033[32m************************本機(jī)主要參數(shù)列表********************\033[0m"
echo -e "本機(jī)IP地址列表:\033[32m$localip\033[0m"
echo -e "本機(jī)主機(jī)名稱:\033[32m$hostname\033[0m"
echo -e "操作系統(tǒng)版本為:\033[32m$release\033[0m,內(nèi)核版本:\033[32m$kernel\033[0m"
echo -e "CPU型號為:\033[32m$cpu_info\033[0m,CPU內(nèi)核數(shù)量:\033[32$kernel\033[0m"
echo -e "本機(jī)總內(nèi)存容量:\033[32m$mem_total\033[0m,剩余可用內(nèi)存容量:\033[32m$mem_free\033[0m"
echo -e "本機(jī)swap總?cè)萘?\033[32m$swap_local\033[0m,剩余swap容量:\033[32m$swap_free\033[0m"
echo -e "CPU最近1分鐘,5分鐘,15分鐘的平均負(fù)載分別為:\033[32m$load1 $load5 $load15\033[0m"
echo -e "本機(jī)總賬戶數(shù)量為:\033[32m$users\033[0m,當(dāng)前登錄系統(tǒng)的賬戶數(shù)量:\033[32m$login_users\033[0m"
echo -e "當(dāng)前系統(tǒng)中啟動的進(jìn)程數(shù)量:\033[32m$procs\033[0m"
echo -e "占用CPU資源最多的10個進(jìn)程列表為:"
echo -e "\033[32m$top_proc_cpu\033[0m"
echo -e "占用CPU內(nèi)存資源最多的10個進(jìn)程列表為:"
echo -e "\033[32m$top_proc_mem\033[0m"
echo -e "CPU中斷數(shù)量為:\033[32m$irq\033[0m,CPU上下文切換數(shù)量:\033[32m$cs\033[0m"
echo -e "每個磁盤分區(qū)的總?cè)萘颗c剩余容量信息如下:"
echo -e "$disk"
echo -e "$tps"
echo -e "$read_write"
echo -e "$net_monitor"
echo -e "\033[32m************************巡檢結(jié)束********************\033[0m"
腳本的運行結(jié)果
/root/sys_info.sh
提取磁盤性能指標(biāo),請稍后...
************************本機(jī)主要參數(shù)列表********************
本機(jī)IP地址列表:127.0.0.1/8
....
本機(jī)主機(jī)名稱:? ..............
操作系統(tǒng)版本為:CentOS Linux release 7.5.1804 (Core) ,內(nèi)核版本:............
CPU型號為:? ? ? ? ? ? Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz,CPU內(nèi)核數(shù)量: ...............
本機(jī)總內(nèi)存容量:16324192,剩余可用內(nèi)存容量:14519016
本機(jī)swap總?cè)萘?,剩余swap容量:0
CPU最近1分鐘,5分鐘,15分鐘的平均負(fù)載分別為:1.19 0.44 0.37
本機(jī)總賬戶數(shù)量為:48,當(dāng)前登錄系統(tǒng)的賬戶數(shù)量:2
當(dāng)前系統(tǒng)中啟動的進(jìn)城數(shù)量:247
占用CPU資源最多的10個進(jìn)程列表為:
evolution-calen 65048
gnome-software? 65628
evolution-calen 67732
chrome? ? ? ? ? 74140
sogou-qimpanel? 79252
fcitx? ? ? ? ? 81160
mysqld? ? ? ? ? 91256
chrome? ? ? ? ? 103384
chrome? ? ? ? ? 121404
gnome-shell? ? 171912
占用CPU內(nèi)存資源最多的10個進(jìn)程列表為:
evolution-calen 65048
gnome-software? 65628
evolution-calen 67732
chrome? ? ? ? ? 74140
sogou-qimpanel? 79252
fcitx? ? ? ? ? 81160
mysqld? ? ? ? ? 91256
chrome? ? ? ? ? 103384
chrome? ? ? ? ? 121404
gnome-shell? ? 171912
CPU中斷數(shù)量為:294,CPU上下文切換數(shù)量:292
每個磁盤分區(qū)的總?cè)萘颗c剩余容量信息如下:
/dev/sda2? 103080888? 76076244
/dev/sda1? 307084240? 227897560
/dev/loop0? 9176232? ? 0
網(wǎng)卡名稱? ? ? 入站數(shù)據(jù)流量(bytes)? 出站數(shù)據(jù)流量(bytes)
rhce-nic:? ? ? 0? ? ? ? ? ? ? ? ? ? 0
rhce:? ? ? ? ? 0? ? ? ? ? ? ? ? ? ? 0
private1-nic:? 0? ? ? ? ? ? ? ? ? ? 0
public2-nic:? 0? ? ? ? ? ? ? ? ? ? 0
public1-nic:? 0? ? ? ? ? ? ? ? ? ? 0
private2-nic:? 0? ? ? ? ? ? ? ? ? ? 0
eth0:? ? ? ? ? 2247764? ? ? ? ? ? ? 562741
lo:? ? ? ? ? ? 248? ? ? ? ? ? ? ? ? 248
private1:? ? ? 0? ? ? ? ? ? ? ? ? ? 0
virbr0-nic:? ? 0? ? ? ? ? ? ? ? ? ? 0
virbr0:? ? ? ? 0? ? ? ? ? ? ? ? ? ? 0
private2:? ? ? 0? ? ? ? ? ? ? ? ? ? 0
vbr-nic:? ? ? 0? ? ? ? ? ? ? ? ? ? 0
public2:? ? ? 0? ? ? ? ? ? ? ? ? ? 0
public1:? ? ? 0? ? ? ? ? ? ? ? ? ? 0
vbr:? ? ? ? ? 0? ? ? ? ? ? ? ? ? ? 0
************************巡檢結(jié)束********************
目前本人正在進(jìn)行3.0版本的研究,需要完成對應(yīng)閥值郵件報警的功能;