linux 基本服务检测脚本
这里是我自己写的一些监控linux基本服务的脚本,基于公司的实际生产环境,公司已经在使用zabbix,但是由于和公司要求不符合,这里就都使用了自己手写的脚本进行取值,有不合理的地方希望大家能够指出来。
1. cpu_load.sh
#!/bin/bash
#这里是做的一个cpu load负载的一个脚本,取的值为一分钟。
uptime | awk '{print $10}' | awk -F "," '{print $1}'
2. cpu_used.sh
#!/bin/bash
#这里取值取的是cpu的使用百分比, 单位%
File=cpu_`date +%Y%m%d`
sar -u >/tmp/$File
free=`tac /tmp/$File|sed -n 2p|awk '{print $NF}'`
echo $free|awk '{printf "%.2f\n", 100-$1}'
3. Mem_free.sh
#!/bin/bash
# 这个一个计算内存可用容量脚本 可用容量等于free+buffers+cached,单位为M
Free=`free -m| grep Mem| awk '{print $4}'`
Buffers=`free -m| grep Mem| awk '{print $6}'`
Cached=`free -m| grep Mem| awk '{print $7}'`
Avial=$(($Free+$Bufers+$Cached))
echo $Avial
4. Mem_total.sh
#!/bin/bash
#单位名称为M
free -m | grep Mem| awk '{print $2}'
5. Mem_usage.sh
#!/bin/bash
#这个一个计算内存可用使用率脚本 可用容量等于free/total
Free=`free -m| grep Mem| awk '{print $4}'`
Buff=`free -m| grep Mem| awk '{print $6}'`
Cach=`free -m| grep Mem| awk '{print $7}'`
Total=`free -m | grep Mem| awk '{print $2}'`
Tused=$(($Total-$Free-$Buff-$Cach))
echo "$Tused $Total"|awk '{printf ("%.2f\n",$1*100/$2)}'
6.IO_read.sh
#!/bin/bash
#原始单位:块 换算单位:M
file=ior_`date +%Y%m%d`
sar -b > /tmp/$file
Read=`tac /tmp/$file|sed -n 2p|awk '{print $(NF-1)}'`
echo $Read|awk '{printf ("%.2f\n", $1*4/1024)}'
7.IO_write.sh
#!/bin/bash
#原始单位:K 换算单位:M
file=iow_`date +%Y%m%d`
sar -b > /tmp/$file
Write=`tac /tmp/$file|sed -n 2p|awk '{print $NF}'`
echo $Write|awk '{printf ("%.2f\n", $1*4/1024)}'
8. disk_total.sh
#!/bin/bash
#这里取值取的是disk total值,单位名称是GB
df -hT| grep '/$'| awk '{print $2}'| awk '{print$1}'|sed 's/G//g'
9. disk_usage.sh
#!/bin/bash
#这里取值取的是disk 使用率值,单位名称是%
df -hT| grep '/$'| awk '{print $5}'| awk '{print$1}'|sed 's/%//g'
10. disk_used.sh
#!/bin/bash
#这个是取值 取的是disk used的值,单位是GB
df -hT| grep '/$'| awk '{print $3}'| awk '{print$1}'|sed 's/G//g'
11. Network_in.sh
#!/bin/bash
#这是一个检测网卡入口流量的脚本,单位名称为Mb
File=net_`date +%Y%m%d`
for i in `ls /etc/sysconfig/network-scripts/|grep ifcfg|grep -v lo|awk -F "-" '{print $2}'`
do
mii-tool $i >/dev/null 2>&1
if [ $? -eq 0 ];
then
sar -n DEV 1 2|grep $i >/tmp/$File
Net_in=`tac /tmp/$File|sed -n 2p|awk '{print $6}'`
echo $Net_in|awk '{printf ("%.2f\n", $1*8/1000)}'
else
continue
fi
done
12. Network_out.sh
#!/bin/bash
# 这是一个检测网卡出口流量的脚本,单位名称为Mb
File=net_`date +%Y%m%d`
for i in `ls /etc/sysconfig/network-scripts/|grep ifcfg|grep -v lo|awk -F "-" '{print $2}'`
do
mii-tool $i >/dev/null 2>&1
if [ $? -eq 0 ];
then
sar -n DEV 1 2|grep $i >/tmp/$File
Net_out=`tac /tmp/$File|sed -n 2p|awk '{print $7}'`
echo $Net_out|awk '{printf ("%.2f\n", $1*8/1000)}'
else
continue
fi
done