91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nagios自寫插件監控某個程序使用物理內存情況

發布時間:2020-07-11 00:46:56 來源:網絡 閱讀:1345 作者:815632410 欄目:移動開發

前幾天在工作中遇到了一個問題,nagios自寫插件,單獨測試命令和插件沒有問題,但是通過check_nrpe插件調用自寫插件的時候會出現問題。

下面是我寫的一個插件,主要功能是:輸入一個端口號,就可以知道監聽該端口號的程序使用物理內存情況。

#!/bin/bash
if [ $# -ne 1 ];then
    echo "Usage:$0 num1"
    exit 5;
fi

PORT="$1"
LINE=$(sudo netstat -lnutp|awk -F '[: ]+' '{print $5}'|grep -w ${PORT}|wc -l)
if [ $LINE -eq 1 ];then
   PID=$(sudo netstat -lnutp|awk -F '[: ]+' '$5=='$PORT'{print $(NF-1)}'|awk -F '/' '{print $1}')
   PS_NAME=$(sudo netstat -lnutp|awk -F '[: ]+' '$5=='$PORT'{print $(NF-1)}'|awk -F '/' '{print $2}' )
   MEM=$(ps -p ${PID} -o rss|grep -v RSS)
   MEMD=$(expr ${MEM}  "*" 1024)
   echo "OK port-${PORT} ${PS_NAME} use mem ${MEMD}b |MEM=${MEMD}b;5000;10000;0"
   exit 0
else
   
   echo "port-${PORT} is not  exist"
   exit 2

fi

編寫該插件的時候有兩個細節需要注意

1、nagios賬號執行netstat命令時沒有權限查看其它賬號啟動的程序。所以需要用sudo ,所以在/etc/sudoers添加如下內容:

nagios ALL=(ALL) NOPASSWD: /bin/netstat

使用nagios賬號免密碼執行/bin/netstat命令。

2、查看某個程序使用物理內存情況:

我的80端口nginx程序PID是:643

方法一:

ps -p PID -o rss

[root@nagios-server libexec]# ps -p 643 -o rss
  RSS
 2700

方法二:

cat /proc/PID/status

[root@nagios-server libexec]# cat /proc/643/status | grep RSS
VmRSS:      2700 kB


測試:

我們用80端口測試:

首先我們查看80端口是否開啟和監控的程序:

[root@nagios-server libexec]# netstat -lntp|awk -F '[ :]+' '$5=="80"{print}'
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      643/nginx

1、測試插件:

[root@nagios-server libexec]# sh check_ps_mem.sh 80
OK port-80 nginx use mem 2764800b |MEM=2764800b;5000;10000;0

由以上結果可知,80端口的nginx程序使用的物理內存情況插件執行成功。

2、編輯/usr/local/nagios/etc/nrpe.cfg文件:

command[check_ps_mem]=/usr/local/nagios/libexec/check_ps_mem.sh 80

3、用check_nrpe插件測試:

[root@nagios-server libexec]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem               
port-80 is not  exist

用root賬號,通過check_nrpe沒有抓到數據;

4、用nagios賬號執行check_nrpe測試:

[root@nagios-server libexec]# sudo -u nagios /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem
port-80 is not  exist

結果:用nagios賬號也是是沒有抓到數據。如果nagios賬號無法抓取到數據,就算添加到監控也是無法抓到數據。


問題原因:

腳本里/bin/netstat 命令是用sudo執行的。sudo無法在后端執行,執行sudo時要開啟tty終端的。用check_nrpe調用腳本時,是在后端執行的sudo  。 好了,問題原因找到了。

解決方法:

在/etc/sudoers文件里添加如下內容:

Defaults:nagios !requiretty


再次測試:

添加  Defaults:nagios !requiretty 后測試:

[root@nagios-server libexec]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem               
OK port-80 nginx use mem 2764800b |MEM=2764800b;5000;10000;0


[root@nagios-server libexec]# sudo -u nagios /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem
OK port-80 nginx use mem 2764800b |MEM=2764800b;5000;10000;0



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邢台市| 淄博市| 玉树县| 怀宁县| 天门市| 济宁市| 依安县| 禄劝| 汕尾市| 方正县| 定西市| 仪征市| 页游| 仁化县| 泾川县| 临汾市| 内乡县| 堆龙德庆县| 张家川| 钟祥市| 石河子市| 高安市| 黎平县| 从化市| 林州市| 界首市| 集安市| 治多县| 汝城县| 吉水县| 甘泉县| 山东省| 耿马| 灵宝市| 彭阳县| 西华县| 容城县| 大悟县| 台湾省| 甘南县| 民权县|