作為Nagios的一個擴充功能插件,NRPE可在遠端的linux主機上執行的插件程式。遠端的liux伺服器通過安裝NRPE及Nagios的相關插件程式可以向Nagios服務端監控平台提供自身的情況例如:CPU負載,記憶體使用以及磁盤使用等情況。這裡依舊将node1.cn主機作為Nagios監控端,node2.cn作為被監控端。
一、NRPE簡介
Nrpe作為Nagios的一個擴充功能,其可以在遠端Linux主機上執行插件程式,通過遠端伺服器自身安裝的NRPE插件和Nagios插件程式向Nagios監控平台提供自身負載:CPU負載,記憶體使用以及磁盤使用等等。
NRPE作為Nagios遠端主機監控插件,它被用于讓Nagios監控端基于安裝的方式觸發遠端主機檢測指令,并發送給Nagios監控端。且執行開銷低于SS和的檢查方式,并由檢測過程不需要遠端主機上的系統賬号資訊,是以安全性方面優于SSH的檢測方式。
1.1 NRPE工作原理
NRPE構成:
check_nrpe:位于監控主機
nrpe daemon:位于遠端主機(npre daemon需要Nagios-plugins插件的支援,否則daemon在遠端主機無效)
Nagios監控某個遠端linux主機的服務或資源的過程如下:
第一:Nagios運作check_nrpe插件,使nrpe知道需要做什麼檢查;
第二:check_nrpe插件會連結到遠端的daemon,所用的方式是SSL;
第三:NRPE daemon運作相應Nagios插件執行相關檢查;
最後:NRPE daemon将檢查結果傳回check_nrpe插件,進而check_nrpe将結果遞交給Nagios進行處理。
二、遠端主機Nagios-plugins插件和NRPE的安裝
2.1添加運作使用者nagios
<code> </code><code>[root@node2 src]</code><code># useradd -s /sbin/nologin nagios</code>
2.2安裝nagios-plugins插件
<code> </code><code>[root@node2 src]</code><code># yum -y install gcc gcc-c++ make openssl openssl-devel</code>
<code> </code><code>[root@node2 src]</code><code>#cd /usr/local/src/</code>
<code> </code><code>[root@node2 src]</code><code>#tar xvf nagios-plugins-2.2.1.tar.gz </code>
<code> </code><code>[root@node2 src]</code><code>#cd nagios-plugins-2.2.1</code>
<code> </code><code>[root@node2 nagios-plugins-2.2.1]</code><code># ./configure --with-nagios-user=nagios --with-nagios-group=nagios</code>
<code> </code><code>[root@node2 nagios-plugins-2.2.1]</code><code># make && make install</code>
2.3安裝nrpe
<code> </code><code>[root@node2 src]</code><code># tar xvf nrpe-2.15.tar.gz </code>
<code> </code><code>[root@node2 src]</code><code># cd nrpe-2.15</code>
<code> </code><code>[root@node2 nrpe-2.15]</code><code># ./configure --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --enable-command-args --enable-ssl</code>
<code> </code>
<code>*** Configuration summary </code><code>for</code> <code>nrpe 2.15 09-06-2013 ***:</code>
<code> </code><code>General Options:</code>
<code> </code><code>-------------------------</code>
<code> </code><code>NRPE port: 5666</code>
<code> </code><code>NRPE user: nagios</code>
<code> </code><code>NRPE group: nagios</code>
<code> </code><code>Nagios user: nagios</code>
<code> </code><code>Nagios group: nagios</code>
<code>Review the options above </code><code>for</code> <code>accuracy. If they </code><code>look</code> <code>okay,</code>
<code>type</code> <code>'make all'</code> <code>to compile the NRPE daemon and client.</code>
<code>[root@node2 nrpe-2.15]</code><code># make all</code>
<code>[root@node2 nrpe-2.15]</code><code># make install-plugin</code>
<code>cd</code> <code>.</code><code>/src/</code> <code>&& </code><code>make</code> <code>install</code><code>-plugin</code>
<code>[root@node2 nrpe-2.15]</code><code># make install-daemon</code>
<code>cd</code> <code>.</code><code>/src/</code> <code>&& </code><code>make</code> <code>install</code><code>-daemon</code>
<code>[root@node2 nrpe-2.15]</code><code># make install-daemon-config</code>
2.4 配置NRPE
<code>[root@node2 ~]</code><code># grep -E -v "^#|^$" /usr/local/nagios/etc/nrpe.cfg</code>
<code>log_facility=daemon</code>
<code>pid_file=</code><code>/var/run/nrpe</code><code>.pid</code>
<code>server_port=5666</code>
<code>nrpe_user=nagios</code>
<code>nrpe_group=nagios</code>
<code>allowed_hosts=127.0.0.1,192.168.31.101 </code><code>#允許的位址,在127.0.0.1後添加nagios伺服器位址即可,以都好分割</code>
<code> </code>
<code>dont_blame_nrpe=0</code>
<code>allow_bash_command_substitution=0</code>
<code>debug=0</code>
<code>command_timeout=60</code>
<code>connection_timeout=300</code>
<code>command</code><code>[check_users]=</code><code>/usr/local/nagios/libexec/check_users</code> <code>-w 5 -c 10</code>
<code>command</code><code>[check_load]=</code><code>/usr/local/nagios/libexec/check_load</code> <code>-w 15,10,5 -c 30,25,20</code>
<code>command</code><code>[check_hda1]=</code><code>/usr/local/nagios/libexec/check_disk</code> <code>-w 20% -c 10% -p </code><code>/dev/hda1</code>
<code>command</code><code>[check_zombie_procs]=</code><code>/usr/local/nagios/libexec/check_procs</code> <code>-w 5 -c 10 -s Z</code>
<code>command</code><code>[check_total_procs]=</code><code>/usr/local/nagios/libexec/check_procs</code> <code>-w 150 -c 200</code>
2.5 NRPE守護程序啟動
<code>[root@node2 ~]</code><code># /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d</code>
<code>[root@node2 ~]</code><code># netstat -tulpn | grep nrpe</code>
<code>tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 26018</code><code>/nrpe</code>
<code>tcp 0 0 :::5666 :::* LISTEN 26018</code><code>/nrpe</code>
NRPE的運作模式:
<code> </code><code>-i = Run as a service under inetd or xinetd</code>
<code> </code><code>-d = Run as a standalone daemon</code>
<code> </code><code>-d -s = Run as a subsystem under AIX</code>
2.6 nrpe啟動腳本的編輯
<code> </code><code>[root@node2 ~]</code><code># vim /etc/init.d/nrped </code>
<code>#!/bin/bash</code>
<code>#date: 2017-11-05</code>
<code># chkconfig: - 64 36</code>
<code># description: NRPE server.</code>
<code>NPRE=</code><code>/usr/local/nagios/bin/nrpe</code>
<code>NRPECFG=</code><code>/usr/local/nagios/etc/nrpe</code><code>.cfg</code>
<code>case</code> <code>"$1"</code> <code>in</code>
<code> </code><code>start)</code>
<code> </code><code>echo</code> <code>-n </code><code>"Starting NPRE daemon..."</code>
<code> </code><code>${NPRE} -c ${NRPECFG} -d</code>
<code> </code><code>echo</code> <code>"Start NPRE daemon done..."</code>
<code> </code><code>;;</code>
<code> </code><code>stop)</code>
<code> </code><code>echo</code> <code>-n </code><code>"stopping NRPE daemon..."</code>
<code> </code><code>pkill -u nagios nrpe</code>
<code> </code><code>echo</code> <code>"Stop NPRE daemon done..."</code>
<code> </code><code>restart)</code>
<code> </code><code>$0 stop</code>
<code> </code><code>sleep</code> <code>3</code>
<code> </code><code>$0 start</code>
<code> </code><code>*)</code>
<code> </code><code>echo</code> <code>"Usage:$0 start|stop|restart"</code>
<code> </code><code>;;</code>
<code>esac</code>
<code>exit</code> <code>0</code>
2.7 nrped腳本測試和設定nrped服務開機啟動啟動
<code>[root@node2 ~]</code><code># chkconfig nrped on </code>
<code>[root@node2 ~]</code><code># service nrped restart</code>
<code>stopping NRPE daemon...Stop NPRE daemon </code><code>done</code><code>...</code>
<code>Starting NPRE daemon...Start NPRE daemon </code><code>done</code><code>...</code>
<code>[root@node2 ~]</code><code># netstat -tnlp | grep nrpe</code>
<code>tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 26085</code><code>/nrpe</code>
<code>tcp 0 0 :::5666 :::* LISTEN 26085</code><code>/nrpe</code>
3 Nagios服務端安裝NRPE
<code>[root@node1 src]</code><code># tar xvf nrpe-2.15.tar.gz</code>
<code>[root@node1 nrpe-2.15]</code><code># ./configure --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --with-nagios-group=nagios --enable-command-args --enable-ssl</code>
<code>[root@node1 nrpe-2.15]</code><code># make all</code>
<code>[root@node1 nrpe-2.15]</code><code># make install-plugin</code>
<code>[root@node1 nrpe-2.15]</code><code># ls /usr/local/nagios/libexec/check_nrpe </code>
<code>/usr/local/nagios/libexec/check_nrpe</code>
3.1 關于check_nrpe的一些用法
<code> </code>
<code>[root@node1 libexec]</code><code># /usr/local/nagios/libexec/check_nrpe -h</code>
<code>NRPE Plugin </code><code>for</code> <code>Nagios</code>
<code>Copyright (c) 1999-2008 Ethan Galstad ([email protected])</code>
<code>Version: 2.15</code>
<code>Last Modified: 09-06-2013</code>
<code>License: GPL v2 with exemptions (-l </code><code>for</code> <code>more</code> <code>info)</code>
<code>SSL</code><code>/TLS</code> <code>Available: Anonymous DH Mode, OpenSSL 0.9.6 or higher required</code>
<code>Usage: check_nrpe -H <host> [ -b <bindaddr> ] [-4] [-6] [-n] [-u] [-p <port>] [-t <timeout>] [-c <</code><code>command</code><code>>] [-a <arglist...>]</code>
<code>Options:</code>
<code> </code><code>-n = Do no use SSL</code>
<code> </code><code>-u = Make socket timeouts </code><code>return</code> <code>an UNKNOWN state instead of CRITICAL</code>
<code> </code><code><host> = The address of the host running the NRPE daemon</code>
<code> </code><code><bindaddr> = bind to </code><code>local</code> <code>address</code>
<code> </code><code>-4 = user ipv4 only</code>
<code> </code><code>-6 = user ipv6 only</code>
<code> </code><code>[port] = The port on </code><code>which</code> <code>the daemon is running (default=5666)</code>
<code> </code><code>[timeout] = Number of seconds before connection </code><code>times</code> <code>out (default=10)</code>
<code> </code><code>[</code><code>command</code><code>] = The name of the </code><code>command</code> <code>that the remote daemon should run</code>
<code> </code><code>[arglist] = Optional arguments that should be passed to the </code><code>command</code><code>. Multiple</code>
<code> </code><code>arguments should be separated by a space. If provided, this must be</code>
<code> </code><code>the last option supplied on the </code><code>command</code> <code>line.</code>
<code>Note:</code>
<code>This plugin requires that you have the NRPE daemon running on the remote host.</code>
<code>You must also have configured the daemon to associate a specific plugin </code><code>command</code>
<code>with the [</code><code>command</code><code>] option you are specifying here. Upon receipt of the</code>
<code>[</code><code>command</code><code>] argument, the NRPE daemon will run the appropriate plugin </code><code>command</code> <code>and</code>
<code>send the plugin output and </code><code>return</code> <code>code back to *this* plugin. This allows you</code>
<code>to execute plugins on remote hosts and </code><code>'fake'</code> <code>the results to </code><code>make</code> <code>Nagios think</code>
<code>the plugin is being run locally.</code>
相關文法格式:
<code>[root@node1 libexec]</code><code># ./check_nrpe -H <host> [-n] [-u] [-p <port>] [-t <timeout>] [-a <arglist...>]</code>
<code>[root@node1 libexec]</code><code># ./check_nrpe -H 192.168.31.102</code>
<code>NRPE v2.15</code>
3.2 定義相關指令
[root@node1 libexec]# cd /usr/local/nagios/etc/objects/
添加内容到commands.cfg末尾
[root@node1 objects]# vim commands.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_npre -H "$HOSTADDRESS$" -c "$ARG1$"
}
3.3 添加nagios.cfg配置檔案内容
<code>[root@node1 objects]</code><code># vim /usr/local/nagios/etc/nagios.cfg </code>
<code>cfg_file=</code><code>/usr/local/nagios/etc/objects/linehost</code><code>.cfg</code>
3.4 定義主機linehost.cfg和服務service.cfg
<code>[root@node1 objects]</code><code># grep -E -v "^#|^$" linehost.cfg</code>
<code>define host{</code>
<code> </code><code>use linux-server ; Name of host template to use</code>
<code>; This host definition will inherit all variables that are defined</code>
<code>; </code><code>in</code> <code>(or inherited by) the linux-server host template definition.</code>
<code> </code><code>host_name linehost</code>
<code> </code><code>alias</code> <code>linehost</code>
<code> </code><code>address 192.168.31.102</code>
<code> </code><code>}</code>
<code>define hostgroup{</code>
<code> </code><code>hostgroup_name my-linux-servers ; The name of the hostgroup</code>
<code> </code><code>alias</code> <code>My Linux Servers ; Long name of the group</code>
<code> </code><code>members linehost ; Comma separated list of hosts that belong to this group</code>
<code>[root@node1 objects]</code><code># vim services.cfg</code>
<code>define service{</code>
<code> </code><code>use </code><code>local</code><code>-service</code>
<code> </code><code>service_groups MysqlGroup</code>
<code> </code><code>service_description MySqlSev</code>
<code> </code><code>check_command check_mysql</code>
<code>}</code>
<code> </code><code>use </code><code>local</code><code>-service ; Name of service template to use</code>
<code> </code><code>host_name linehost</code>
<code> </code><code>service_description PING</code>
<code>check_commandcheck_ping!100.0,20%!500.0,60%</code>
<code> </code><code>service_description Root Partition</code>
<code>check_commandcheck_local_disk!20%!10%!/</code>
<code> </code><code>service_description Current Users</code>
<code>check_commandcheck_local_users!20!50</code>
<code> </code><code>service_description Total Processes</code>
<code>check_commandcheck_local_procs!250!400!RSZDT</code>
<code> </code><code>檢查配置檔案</code>
<code>[root@node1 objects]</code><code># /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg</code>
<code>無錯誤資訊重新開機服務 </code>
<code>[root@node1 objects]</code><code># service nagios restart</code>
web端進行檢視驗證
Nagios通過NRPE對遠端linux伺服器監控就介紹到這裡,下一章将介紹Nagios對windowns主機的監控以及的郵件報警功能的配置
博文出自:http://os.51cto.com/art/201409/452605.htm
本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1980787