linuxshell系统常用监控脚本

linuxshell系统常⽤监控脚本
监控指标包括:应⽤是否启⽤、磁盘使⽤率是否超过告警值、CPU使⽤率是否超过告警值、内存使⽤率是否超过告警值、IP能否ping通、远程IP的端⼝telnet能否成功、⽂件夹中最后修改时间、数据库是否能连接/查询数据库结果
做之前介绍下情况,正在做的系统,采⽤分布式,包括前台、后台、数据库⼀共10台机器,其中⼀台要是出现问题,例如某台机器磁盘空间满了,系统就会出异常,但是客户提供的运维⼯具简直⽆语,只能⾃⼰写⼀个极简监控⾃⾝系统相关的脚本。
思路:1.写⼀个监控配置⽂本,格式:要监控的IP|监控类型|监控指标|监控关键参数,例如,⽤于记录要监控的机器及监控参数,我这边每台机器都有挂载同⼀个⽂件⽬录,赶紧将配置⽂本放到挂载⽬录⾥⾯,2.再写⼀个监控shell脚本,从监控配置⽂本中读取监控参数,将监控结果返回到⼀个txt中,3.有了监控结果,是发短信还是告警之类的都好说,4定时监控可以在crontab中配置时间频率
r51<监控配置⽂本
11.211.19.21|PROGRAM|IS_ENABLED|PDFWorkServer
11.211.19.21|PROGRAM|IS_ENABLED|CompassServer
11.211.19.21|PROGRAM|IS_ENABLED|GrabServer
11.211.19.20|PROGRAM|IS_ENABLED|WorkServer
11.211.19.22|PROGRAM|IS_ENABLED|WorkServer
11.211.19.22|PROGRAM|IS_ENABLED|PDFWorkServer
11.211.19.23|PROGRAM|IS_ENABLED|tomcat
11.211.19.24|PROGRAM|IS_ENABLED|tomcat
11.211.19.25|PROGRAM|IS_ENABLED|tomcat
11.211.19.23|SYSTEMCFG|DISK_SPACE_USAGE|80
11.211.19.24|SYSTEMCFG|DISK_SPACE_USAGE|80
11.211.19.25|SYSTEMCFG|DISK_SPACE_USAGE|80
11.211.19.22|SYSTEMCFG|DISK_SPACE_USAGE|80
11.211.19.20|SYSTEMCFG|DISK_SPACE_USAGE|80
11.211.19.21|SYSTEMCFG|DISK_SPACE_USAGE|80
11.211.19.23|SYSTEMCFG|CPU_USAGE|90
11.211.19.24|SYSTEMCFG|CPU_USAGE|90
11.211.19.25|SYSTEMCFG|CPU_USAGE|90
11.211.19.22|SYSTEMCFG|CPU_USAGE|90
济南职业学院学报
11.211.19.20|SYSTEMCFG|CPU_USAGE|90
11.211.19.21|SYSTEMCFG|CPU_USAGE|90
11.211.19.23|NETWORK|NETWORK_PING|11.211.19.21
11.211.19.21|NETWORK|NETWORK_PING|11.211.19.23
11.211.19.23|NETWORK|NETWORK_TELNET|11.211.19.21,9090
11.211.19.21|NETWORK|NETWORK_TELNET|11.211.19.23,8300
11.211.19.21|FILES|FOLDER_OVERTIME_VALID|/filedata/ftp/as_gd/,GOrder
11.211.19.21|FILES|FOLDER_OVERTIME_VALID|/filedata/ftp/as_face/,FOrder
11.211.19.21|FILES|FOLDER_OVERTIME_VALID|/filedata/ftp/as_aicenter/,AOrder
11.211.19.21|DB|DB_CONN|ORACLE,smartItil,smart@2019,11.211.19.26:1522/smart
11.211.19.21|DB|DB_CONN|ORACLE,test,ddd,11.211.19.26:1522/test
11.211.19.21|DB|DB_DATA_MONIT|ORACLE,smartItil,smart@2019,11.211.19.26:1522/smart,select count(*) from tbl_wo 监控shell脚本monit.shell日落公园
#!/bin/bash
printf "*************************************\n"
searchMonitType=$1
searchMonitCode=$2
searchMonitPara=$3
#判断应⽤是否启⽤,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,procName,datetime,FILE procNameIsEnabled(){
isEnabled=`ps -ef |grep -w $4|grep -v grep|wc -l`
procNumber=`ps -ef | grep $4 |  grep -v "grep" | awk '{print $2}'`
资本资产定价模型
音译汉descs="IP:$1,应⽤:$4"
if [ $isEnabled -le 0 ];then
result=0
sendMsg=1
descs=$descs"未启⽤"
else
result=1
sendMsg=0
descs=$descs"已启⽤,进程ID:$procNumber"
fi
echo "$1|$2|$3|$4|$result|$sendMsg|$5|$descs" >> $6
}
#判断磁盘使⽤率是否超过告警值,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,diskAlarmNum,datetime,FILE diskSpaceUsage(){
isAlarm=0
diskPer=0
for diskArr in `df -Ph | grep / | awk '{print $6","$2","$3","$4","$5}' | sed 's/%//g'`
do
DISK_OLD_IFS="$IFS"
IFS=","
diskTmpArr=($diskArr)
IFS="$DISK_OLD_IFS"
diskPer=${diskTmpArr[4]}
if [ $diskPer -ge $4 ]; then
isAlarm=1
sendMsg=1
echo "$1|$2|$3|$4|$diskPer|$sendMsg|$5|IP:$localIpAddr,⽬录:${diskTmpArr[0]}磁盘使⽤率超过$diskPer%,其中⽬录总⼤⼩${diskTmpArr[1]},已⽤${diskTmpArr[2]},剩余${diskTmpArr[3]}" >> $6
fi
done
if [ $isAlarm -le 0  ]; then
sendMsg=0
echo "$1|$2|$3|$4|$diskPer|$sendMsg|$5|IP:$localIpAddr磁盘空间未超过上限$4%" >> $6
fi
}
#判断CPU使⽤率是否超过告警值,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,cpuAlarmNum,datetime,FILE cpuUsage(){
cpuCurUsage=`top -b -n 1|grep Cpu|awk '{print $2}'|cut -f 1 -d "."`
if [ $cpuCurUsage -ge $4 ]; then
sendMsg=1
echo "$1|$2|$3|$4|$cpuCurUsage|$sendMsg|$5|IP:$localIpAddr,CPU使⽤率:$cpuCurUsage%,异常,超过阀值$4," >> $6
else
sendMsg=0
echo "$1|$2|$3|$4|$cpuCurUsage|$sendMsg|$5|IP:$localIpAddr,CPU使⽤率:$cpuCurUsage%,正常" >> $6
fi
}
#判断内存使⽤率是否超过告警值,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,memAlarmNum,datetime,FILE memerySpaceUsage(){
memeryCurUsage=`free |grep Mem|awk '{print ($6+$7)*100/$2}'|cut -f 1 -d "."`
if [ $memeryCurUsage -ge $4 ]; then
sendMsg=1
echo "$1|$2|$3|$4|$memeryCurUsage|$sendMsg|$5|IP:$localIpAddr,内存使⽤率:$memeryCurUsage%,异常,超过阀值$4," >> $6
else
sendMsg=0
echo "$1|$2|$3|$4|$memeryCurUsage|$sendMsg|$5|IP:$localIpAddr,内存使⽤率:$memeryCurUsage%,正常" >> $6
fi
}
#判断IP能否ping通,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,testIp,datetime,FILE
networkPing(){
descs="IP:$1,ping:$4"
if ping -c1 $4 &>/dev/null
then
result=1
sendMsg=0
descs=$descs"成功"
else
result=0
sendMsg=1
descs=$descs"失败"
fi
echo "$1|$2|$3|$4|$result|$sendMsg|$5|$descs" >> $6
}
#判断远程IP的端⼝telnet能否成功,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,testIp|testPort,datetime,FILE networkTelnet(){
TELNET_OLD_IFS="$IFS"
IFS=","
telnetArr=($4)
IFS="$TELNET_OLD_IFS"
testIp=${telnetArr[0]}
testPort=${telnetArr[1]}
descs="IP:$1,telnet $testIp:$testPort"
num=`echo -n "\n"|telnet 10.253.58.36 8300|grep Connected|wc -l`
if [ $num -eq 1 ]
富通集团胡国强then
result=1
descs=$descs"成功"
sendMsg=0
else
result=0
descs=$descs"失败"
sendMsg=1
fi
echo "$1|$2|$3|$4|$result|$sendMsg|$5|$descs" >> $6
}
#获取⽂件夹中最后修改时间,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,path,datetime,FILE fileFolderOvertimeValid(){
FILE_OLD_IFS="$IFS"
IFS=","
telnetArr=($4)
IFS="$FILE_OLD_IFS"
testPath=${telnetArr[0]}
valiKey=${telnetArr[1]}
descs="IP:$1,⽂件夹 $testPath"
FILE_NAME=`ls -lt $testPath | grep $valiKey | head -n 1 |awk '{print $9}'`
if [ $valiKey = "" ]
then
FILE_NAME=`ls -lt $testPath | grep -v "total" | head -n 1 |awk '{print $9}'`
fi
descs=$descs"最后修改的⽂件名称$FILE_NAME"
FILE_NAME=$testPath$FILE_NAME
LAST_MODIFY_TIMESTAMP=`stat -c %Y $FILE_NAME`
echo "$LAST_MODIFY_TIMESTAMP"
result=`date '+%Y-%m-%d %H:%M:%S' -d @$LAST_MODIFY_TIMESTAMP`
echo "$result"
descs=$descs",最后修改时间:$result"
sendMsg=0
echo "$1|$2|$3|$4|$result|$sendMsg|$5|$descs" >> $6
}
#判断数据库是否能连接,并将结果存⼊txt⽂件 参数说明 localIpAddr,monitType,monitCode,path,datetime,FILE dbConn(){
DB_OLD_IFS="$IFS"
IFS=","
dbArr=($4)
IFS="$DB_OLD_IFS"
dbType=${dbArr[0]}
dbUser=${dbArr[1]}
dbPwd=${dbArr[2]}
dbSid=${dbArr[3]}
descs="IP:$1,连接$dbType类型数据库,⽤户:$dbUser,SID:$dbSid"
echo $descs
if [ $dbType == "ORACLE" ];
then
sqlplus /nolog >/dev/null <<!
whenever sqlerror exit 1;
connect $dbUser/$dbPwd@$dbSid;
exit
!
fi
if [ $? == 1 ]
then
result=0
descs=$descs",连接失败"
sendMsg=1
else
result=1
descs=$descs",连接成功"
sendMsg=0
fi
echo "$1|$2|$3|$dbType,$dbUser,$dbSid|$result|$sendMsg|$5|$descs" >> $6
}

本文发布于:2024-09-22 05:36:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/97031.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:监控   是否   超过   参数   告警   配置   连接   数据库
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议