Linux common system monitoring shell scripts
The following is a few of my common Linux system monitoring scripts, we can change according to their own situation, I hope to give you a little help.
1. Check the host network card traffic
#!/bin/bash
#network
#Mike. Xu
While:; Do
Time= ' Date +%m '-"%d" "%k": "%m"
day= ' Date +%m '-'%d '
Rx_before= ' ifconfig eth0|sed-n "8" P|awk ' {print $} ' |cut-c7-'
Tx_before= ' ifconfig eth0|sed-n "8" P|awk ' {print $6} ' |cut-c7-'
Sleep 2
Rx_after= ' ifconfig eth0|sed-n "8" P|awk ' {print $} ' |cut-c7-'
Tx_after= ' ifconfig eth0|sed-n "8" P|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
2. System condition Monitoring
#!/bin/sh
#systemstat. Sh
#Mike. Xu
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 sda2 >>./temp/drive_sda2.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
3, monitor the disk space of the host, when the use of more than 90% in space by sending mail to send a warning
#!/bin/bash
#monitor Available disk space
Space= ' DF | Sed-n '/\/$/P ' | Gawk ' {print $} ' | Sed ' s/%//'
If [$SPACE-ge 90]
Then
[Email protected]
Fi
4. Monitor CPU and Memory usage
#!/bin/bash
#script to capture system statistics
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 $} '
echo "$DATE, $TIME, $USERS, $LOAD, $FREE, $IDLE" >> $OUTFILE
5, all-round monitoring of the host
#!/bin/bash
# check_xu.sh
# 0 * * * */home/check_xu.sh
dat= "' Date +%y%m%d '"
Hour= "' Date +%h '"
Dir= "/home/oslog/host_${dat}/${hour}"
Delay=60
Count=60
# whether the responsible directory exist
if! Test-d ${dir}
Then
/bin/mkdir-p ${dir}
Fi
# General Check
Export Term=linux
/usr/bin/top-b-D ${delay}-n ${count} > ${dir}/top_${dat}.log 2>&1 &
# CPU Check
/usr/bin/sar-u ${delay} ${count} > ${dir}/cpu_${dat}.log 2>&1 &
#/usr/bin/mpstat-p 0 ${delay} ${count} > ${dir}/cpu_0_${dat}.log 2>&1 &
#/usr/bin/mpstat-p 1 ${delay} ${count} > ${dir}/cpu_1_${dat}.log 2>&1 &
# memory Check
/usr/bin/vmstat ${delay} ${count} > ${dir}/vmstat_${dat}.log 2>&1 &
# I/o check
/usr/bin/iostat ${delay} ${count} > ${dir}/iostat_${dat}.log 2>&1 &
# Network Check
/usr/bin/sar-n DEV ${delay} ${count} > ${dir}/net_${dat}.log 2>&1 &
#/usr/bin/sar-n Edev ${delay} ${count} > ${dir}/net_edev_${dat}.log 2>&1 &
Put it in crontab. Auto-execute every hour:
0 * * * */home/check_xu.sh
This generates hourly CPU, memory, network, and IO statistics in the/HOME/OSLOG/HOST_YYYYMMDD/HH directory.
If a time period is a problem, you can look at the corresponding log information to see how the host performance.
Linux common system monitoring shell scripts