nagios監控對于大家而言,已經并不陌生,相信它工作的原理及互相間的調用關系也有一定的了解,在生産環境中,監控linux伺服器很明顯大家都知道可以借助nrpe來檢測間接的監控。
其實,監控分為兩類【自己了解定義】,一類是主動式,比如像ping、ssh之類,隻需要監控主機執行相應的指令就可以實作監控;另一類是被動式,也就是監控主機這是抽象為了用戶端用于接收資料,借助nrpe插件實作與被監控端的通信,比如像disk、load等。
對于主動式的監控,自然主動在監控主機手裡,參數的設定與修改自然不是問題,而對于被動式的監控,比如以前我想監控伺服器的根分區使用情況,現在由于生産環境的改變需要去監控/home分區的使用,而且可能我磁盤使用的告警值也需要修改,如果還分别登入到被監牢主機上去修改相應的參數顯然不是很明智的選擇。如果我們監控主機能夠變被動為主動,獲得修改參數的權力,豈不很好,下面就來配置說明一下,供大家參考。
監控主機想變為主動,很明顯,被監控主機要允許傳參數,是以就要在被監控主機上下些功夫。
1、被監控主機上重新編譯nrpe
./configure --enable-command-args
make all
make install-plugin
make install-daemon
make install-daemon-config
2、打開允許傳遞參數
dont_blame_nrpe=0 ---》 dont_blame_nrpe=1
3、設定帶參數的檢測指令[示例]
command[check_disk]=/usr/local/nagios/libexec/check_disk -w$ARG1$ -c $ARG2$ -p $ARG3$
4、reload nrpe,
kil -HUP `ps-ef |grep nrpe |grep -v grep | awk'{print $2}'`
###########################################################
下面就監控主機上的操作
注意,監控主機的其餘配置不在此說明了,隻簡述與傳參配置相關的。
1、先直接執行指令測試:
[root@localhost libexec]# /usr/local/nagios/libexec/check_nrpe -H 192.168.15.183 -c check_disk -a 20% 15% /
DISK OK - free space: / 14250 MB (79% inode=91%);|/=3645MB;15083;16025;0;18854
2、定義指令模闆
添加
define command {
command_name check_remote_disk
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_disk -a $ARG1$ $ARG2$ $ARG3$
}
3、修改主機配置檔案
vi /usr/local/nagios/etc/objects/services.cfg
修改添加
define service{
use generic-service
host_name centos6
service_description check_load
check_command check_remote_load!20%!10%!/
4、檢測文法,重載nagios
[root@localhost~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
[root@localhost~]# service nagios reload
<a href="http://blog.51cto.com/attachment/201309/192407543.png" target="_blank"></a>
附上被監控主機的安裝及初始化腳本,
安裝腳本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<code>#! /bin/bash</code>
<code>#install nagios-plugins,nrpe</code>
<code>#auth colynn.liu</code>
<code>echo </code><code>'install nagios-plugins,nrpe....'</code>
<code>wget -t </code><code>3</code> <code>-T </code><code>15</code> <code>http:</code><code>//nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz</code>
<code>wget -t </code><code>3</code> <code>-T </code><code>15</code> <code>http:</code><code>//nchc.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.13/nagios-plugins-1.4.13.tar.gz</code>
<code>useradd nagios -s /sbin/nologin -M</code>
<code>tar zxf nagios-plugins-</code><code>1.4</code><code>.</code><code>13</code><code>.tar.gz</code>
<code>cd nagios-plugins-</code><code>1.4</code><code>.</code><code>13</code>
<code>./configure --prefix=/usr/local/nagios</code>
<code>make && make install</code>
<code>cd ..</code>
<code>tar zxf nrpe-</code><code>2.12</code><code>.tar.gz</code>
<code>cd nrpe-</code><code>2.12</code>
<code>sed -i </code><code>'1657 s/^/\/\*/'</code> <code>src/nrpe.c</code>
<code>sed -i </code><code>'1662 s/^/\*\//'</code> <code>src/nrpe.c</code>
<code>./configure --enable-command-args</code>
<code>make all</code>
<code>make install-plugin</code>
<code>make install-daemon</code>
<code>make install-daemon-config</code>
<code>echo </code><code>"/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d"</code> <code>>> /etc/rc.d/rc.local</code>
<code>echo </code><code>"DONE."</code>
通過參數實作更合理監控
<code>#</code>
<code>CONFFILE=/usr/local/nagios/etc/nrpe.cfg</code>
<code>MASTERIP=</code><code>192.168</code><code>.</code><code>15.188</code>
<code> </code>
<code>cd /usr/local/nagios/etc/ && cp nrpe.cfg nrpe.cfg.$(date +%Y%m%d-%H).bak && echo </code><code>"bakup is succeess nrpe.cfg.$(date +%Y%m%d-%H).bak"</code>
<code>sed -i </code><code>"/allowed_hosts/s/allowed_hosts=127.0.*/allowed_hosts=127.0.0.1,${MASTERIP}/"</code> <code>$CONFFILE && echo </code><code>"allowed_hosts add successfully"</code>
<code>sed -i </code><code>'/dont_blame_nrpe/s/dont_blame_nrpe=0/dont_blame_nrpe=1/'</code> <code>$CONFFILE</code>
<code>sed -i </code><code>'/^command\[/s/^/#/'</code> <code>$CONFFILE</code>
<code>sed -i </code><code>'/\$$/s/^#//'</code> <code>$CONFFILE</code>
<code>###start nrpe</code>
<code>PID=`ps -ef |grep nrpe |grep -v grep | awk </code><code>'{print $2}'</code><code>`</code>
<code>if</code> <code>[ -z $PID ]</code>
<code>then</code>
<code> </code><code>/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d</code>
<code>else</code>
<code> </code><code>kill -HUP $PID && echo </code><code>"reload nrpe is ok"</code>
<code>fi</code>
本文轉自 劉園 51CTO部落格,原文連結:http://blog.51cto.com/colynn/1302324