根據自身需求撰寫 Shell 腳本,比單純使用開源軟體(Cacti、Nagios)更能滿足特定需求,細化主機監控全面性。
#!/bin/bash
while : ; do
time=$(date +%m-%d\ %k:%M)
rx_before=$(ifconfig eth0 | sed -n 8p | awk '{print $2}' | cut -c7-)
tx_before=$(ifconfig eth0 | sed -n 8p | awk '{print $6}' | cut -c7-)
sleep 2
rx_after=$(ifconfig eth0 | sed -n 8p | awk '{print $2}' | cut -c7-)
tx_after=$(ifconfig eth0 | sed -n 8p | awk '{print $6}' | cut -c7-)
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo "$time Now_In_Speed: ${rx_result}kbps Now_OUt_Speed: ${tx_result}kbps"
sleep 2
done
#!/bin/sh
IP=192.168.1.227
top -n 2 | grep Cpu > ./temp/cpu.txt
free -m | grep Mem > ./temp/mem.txt
df -k | grep sda1 > ./temp/drive_sda1.txt
df -k | grep /mnt/storage_0 > ./temp/mnt_storage_0.txt
df -k | grep /mnt/storage_pic > ./temp/mnt_storage_pic.txt
time=$(date +%m.%d\ %k:%M)
connect=$(netstat -na | grep 219.238.148.30:80 | wc -l)
echo "$time $connect" > ./temp/connect_count.txt
#!/bin/bash
SPACE=$(df | sed -n '/ \/ $/p' | gawk '{print $5}' | sed 's/%//')
if [ $SPACE -ge 90 ]; then
echo "磁碟使用率超過 90%" | mail -s "磁碟告警" admin@example.com
fi
#!/bin/bash
OUTFILE=/home/xu/capstats.csv
DATE=$(date +%m/%d/%Y)
TIME=$(date +%k:%m:%s)
TIMEOUT=$(uptime)
VMOUT=$(vmstat 1 2)
USERS=$(echo $TIMEOUT | gawk '{print $4}')
LOAD=$(echo $TIMEOUT | gawk '{print $9}' | sed 's/,//')
FREE=$(echo $VMOUT | sed -n '/[0-9]/p' | sed -n 2p | gawk '{print $4}')
IDLE=$(echo $VMOUT | sed -n '/[0-9]/p' | sed -n 2p | gawk '{print $15}')
echo "$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE" >> $OUTFILE
#!/bin/bash
DAT=$(date +%Y%m%d)
HOUR=$(date +%H)
DIR=/home/oslog/host_${DAT}/${HOUR}
DELAY=60
COUNT=60
[ ! -d ${DIR} ] && mkdir -p ${DIR}
export TERM=linux
/usr/bin/top -b -d ${DELAY} -n ${COUNT} > ${DIR}/top_${DAT}.log 2>&1 &
/usr/bin/sar -u ${DELAY} ${COUNT} > ${DIR}/cpu_${DAT}.log 2>&1 &
/usr/bin/vmstat ${DELAY} ${COUNT} > ${DIR}/vmstat_${DAT}.log 2>&1 &
/usr/bin/iostat ${DELAY} ${COUNT} > ${DIR}/iostat_${DAT}.log 2>&1 &
/usr/bin/sar -n DEV ${DELAY} ${COUNT} > ${DIR}/net_${DAT}.log 2>&1 &
加入 crontab 每小時自動執行:
0 * * * * /home/check_xu.sh
將在 /home/oslog/host_yyyymmdd/hh 目錄下生成各小時 CPU、記憶體、網路、IO 統計數據,便於事後問題分析。