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

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

#!/bin/bash HELP(){     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" ] && HELP PID=$2 [ ! -f "$PID" ] && echo "`$DATE` Error: $PID not exist." && HELP if ! ps aux|grep "\<`cat $PID`\>"|grep -v grep &>$NUL;then    echo "`$DATE` Error: `cat $PID` not exist."    HELP else    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 ########## ########## ##能不能吐槽一下这个代码编辑器??? ########## ##########

测试使用如下:

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

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

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

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/soft/tools/

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

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

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

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索内存
, awk执行问题
, echo
, 进程
, osm
, pid
, mb
, MB HTTPInput
, cry
, c语言2048
, c语言2048代码
, Bin
V0.9
nagios 监控指定进程、nagios监控内存脚本、定时释放指定进程内存、释放指定进程的内存、c 释放指定进程内存,以便于您获取更多的相关知识。

时间: 2024-08-04 02:13:16

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

查看LINUX进程内存占用情况

  (1)top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程

shell脚本监控linux系统内存使用情况的方法(不使用nagios监控linux)_linux shell

一.安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 1.下载安装: 复制代码 代码如下: # tar jxvf msmtp-1.4.16.tar.bz2# cd msmtp-1.4.16# ./configure --prefix=/usr/local/msmtp# make# make install  2.创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名test,密码123456) 复制代码 代码如下: # vim ~/.msmtprcac

Android 获取进程内存使用情况方法

ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(memoryInfo); Log.i(TAG, " memoryInfo.availMem " + memoryInfo.

查看Win7系统下各进程内存消耗情况的方法

win7系统自带有Windows任务管理器,不但能帮助用户快捷查看系统进程或软件所占的物理内存大小,还能帮助用户快速查看软件所占虚拟内存的大小,下面小编给大家带来的是惠普笔记本win7系统下怎样查看软件所耗虚拟内存.具体操作方法如下: 1.按"ctrl+alt+delete"组合键打开"windows 任务管理器"窗口,点击菜单栏的"查看-选择列"命令. 2.在打开的"选择进程页列"窗口中,选中"内存--提交大小&q

使用Oracle脚本检查对象空间的使用情况

TOM有个非常好的查看对象空间使用情况的脚本show_space.sql,下面将介绍. 这里介绍的是相对而言比较简单的,下面演示中其实是针对表的空间信息,至于对象的,我将在下面改写. 下面例子演示的是delete和truncate对高水位的影响,其中用到了脚本space_usage.sql. [oracle@maa3 ~]$ cat space_usage.sql -- space_usage.sql declare   l_tabname varchar2(30) := '&1';   l_f

Shell脚本实现监视指定进程的运行状态

  这篇文章主要介绍了Shell脚本实现监视指定进程的运行状态,本文直接给出脚本代码,需要的朋友可以参考下 在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在LINUX上的主进程的)在异常退出之前的进程的运行状态,例如内存的使用率.CPU的使用率等. 现用shell脚本实现指定进程的运行状态.直接上代码. ? 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

Shell脚本实现监视指定进程的运行状态_linux shell

在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在LINUX上的主进程的)在异常退出之前的进程的运行状态,例如内存的使用率.CPU的使用率等. 现用shell脚本实现指定进程的运行状态.直接上代码. #!/bin/sh echo "`date`" echo "Start $0---------" echo "" #每十秒监视一下 sec=10 #取得指定进程名为mainAPP,内存的使用率,进程运行状态

Shell脚本判断Apache进程是否存在_linux shell

写一个脚本检查Apache进程是否存在,若不存在则显示不存在,若存在则显示进程个数,当不等于10个时用红色字体通知管理员,并询问管理员是否启动Apache服务. 复制代码 代码如下: #!/bin/bash #echo "$(service httpd status)" PIDNUM=$(pgrep httpd | wc -l) if [[ $PIDNUM -eq 0 ]];then         echo "Apache is stopped."        

Linux查看CPU和内存使用情况

在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等.退出 top 的命令为 q (在 top 运行中敲 q 键一次). top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命