加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

检查指定进程内存使用情况的nagios脚本

发布时间:2020-12-15 07:17:20 所属栏目:安全 来源:网络整理
导读:由于近来线上环境的某些进程总是内存溢出,所以需要添加一下对于某些进程的内存使用情况监控,搜到的别人的脚本大都不太满意,于是自己写了个,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3

由于近来线上环境的某些进程总是内存溢出,所以需要添加一下对于某些进程的内存使用情况监控,搜到的别人的脚本大都不太满意,于是自己写了个,代码如下:


1234567891011121314151617181920212223242526272829303132333435363738394041424344 #!/bin/bashHELP(){ echo " Usage: $0 -p /var/run/pidfile -w used% -c used%" echo " Exam: $0 -p /var/run/pidfile -w 85 -c 90" exit 3}OK=0 ; WA=1 ; CR=2 ;UN=3 ; WAR=$4 ; CRI=$6 ; MI=${7:-0.9} ; MX=${8:-0.8}#MX:性能数据的CRITICAL线,计算方式为内存总量乘以MX值,此处为0.9等于 当前系统总内存 * 0.9,取结果整数部分#MI:性能数据的WARNING线,计算方式为内存总量乘以MX值,此处为0.8等于 当前系统总内存 * 0.8,取结果整数部分DATE="date +%Y-%m-%d~%k:%M:%S" ; NUL=/dev/nullTAG=$1 ; [ "$TAG" != "-p" ] && HELPPID=$2[ ! -f "$PID" ] && echo "`$DATE` Error: $PID not exist." && HELPif ! ps aux|grep "&;`cat $PID`&;"|grep -v grep &>$NUL;then echo "`$DATE` Error: `cat $PID` not exist." HELPelse TOTAL=`/usr/bin/free -m|grep Mem|awk '{print $2}'` MIN=`echo "$TOTAL * $MI"|/usr/bin/bc|awk -F. '{print $1}'` MAX=`echo "$TOTAL * $MX"|/usr/bin/bc|awk -F. '{print $1}'` OSM=`/usr/bin/free -m|grep "&;cache&;"|awk '{print $NF}'` ID=`cat $PID` BMEM=`/usr/bin/top -bn 1|grep "&;$ID&;"|awk '{print $10}'` declare -u MMEM=`/usr/bin/top -bn 1|grep "&;$ID&;"|awk '{print $6}'` RES=`echo "$BMEM > $CRI"|/usr/bin/bc` if [ "$RES" -eq 1 ];then echo "CRITICAL - PID:$ID Memory usage = $BMEM% ["$MMEM"B]. OS free memory="$OSM"MB|Used="$MMEM"B;"$MIN"MB;"$MAX"MB;0;"$TOTAL"MB" exit $CR fi RES=`echo "$BMEM > $WAR"|/usr/bin/bc` if [ "$RES" -eq 1 ];then echo "WARNING - PID:$ID Memory usage = $BMEM% ["$MMEM"B]. OS free memory="$OSM"MB|Used="$MMEM"B;"$MIN"MB;"$MAX"MB;0;10877MB" exit $WA else echo "OK - PID:$ID Memory usage = $BMEM% ["$MMEM"B]. OS free memory="$OSM"MB|Used="$MMEM"B;"$MIN"MB;"$MAX"MB;0;10877MB" exit $OK fifiHELP######################能不能吐槽一下这个代码编辑器???####################


测试使用如下:

12 ./check_mem_pid.sh -p /var/run/hadoop/hdfs/hadoop-hdfs-namenode.pid -w 80 -c 90OK - PID:5534 Memory usage = 6.6% [720MB]. OS freememory=9179MB|Used=720MB;9789MB;8701MB;0;10877MB

# -w 指内存使用的warning比例,-c为critical,其大小均为top -bn 1取出的指定pid的第10列字段


不足之处,欢迎指正...


昨天同事又提了点要求,说能不能给这个进程指定可以内存的大小,在可用的范围内监控,所以,今天又修改了下,在nagios服务端执行,结果如下:

123 # /usr/lib64/nagios/plugins/check_nrpe -H node63 -c check_test -a /var/run/hadoop/hdfs/hadoop-hdfs-namenode.pid 80 90 2048OK - 719.59MB / 2048MB. (35.14% used)|Used=35.14%;1843MB;1638MB;0;2048MB# 第一个参数是进程pid文件,第二个是warning报警值,第二个critical报警值(85就是已用85就开始报警),最后一个给监听的目标进程共分配多少内存,单位MB。

在本地执行则直接使用脚本如下:

12 # ./check_mem_pid.sh -p /var/run/hadoop/hdfs/hadoop-hdfs-namenode.pid -w 30 -c 40 -t 2048WARNING - 719.53MB / 2048MB. (35.13% used)|Used=35.13%;1843MB;1638MB;0;2048MB



代码就不再列出了,直接上传到附件了(带有nagios相关使用配置文档哦,亲),有兴趣的同学自行下载哈。

脚本下载.zip

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读