本文共 8690 字,大约阅读时间需要 28 分钟。
作为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
1 | [root@node2 src] # useradd -s /sbin/nologin nagios |
2.2安装nagios-plugins插件
1 2 3 4 5 6 | [root@node2 src] # yum -y install gcc gcc-c++ make openssl openssl-devel [root@node2 src] #cd /usr/local/src/ [root@node2 src] #tar xvf nagios-plugins-2.2.1.tar.gz [root@node2 src] #cd nagios-plugins-2.2.1 [root@node2 nagios-plugins-2.2.1] # ./configure --with-nagios-user=nagios --with-nagios-group=nagios [root@node2 nagios-plugins-2.2.1] # make && make install |
2.3安装nrpe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [root@node2 src] # tar xvf nrpe-2.15.tar.gz [root@node2 src] # cd nrpe-2.15 [root@node2 nrpe-2.15] # ./configure --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --enable-command-args --enable-ssl *** Configuration summary for nrpe 2.15 09-06-2013 ***: General Options: ------------------------- NRPE port: 5666 NRPE user: nagios NRPE group: nagios Nagios user: nagios Nagios group: nagios Review the options above for accuracy. If they look okay, type 'make all' to compile the NRPE daemon and client. [root@node2 nrpe-2.15] # make all [root@node2 nrpe-2.15] # make install-plugin cd . /src/ && make install -plugin [root@node2 nrpe-2.15] # make install-daemon cd . /src/ && make install -daemon [root@node2 nrpe-2.15] # make install-daemon-config |
2.4 配置NRPE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root@node2 ~] # grep -E -v "^#|^$" /usr/local/nagios/etc/nrpe.cfg log_facility=daemon pid_file= /var/run/nrpe .pid server_port=5666 nrpe_user=nagios nrpe_group=nagios allowed_hosts=127.0.0.1,192.168.31.101 #允许的地址,在127.0.0.1后添加nagios服务器地址即可,以都好分割 dont_blame_nrpe=0 allow_bash_command_substitution=0 debug=0 command_timeout=60 connection_timeout=300 command [check_users]= /usr/local/nagios/libexec/check_users -w 5 -c 10 command [check_load]= /usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 command [check_hda1]= /usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 command [check_zombie_procs]= /usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command [check_total_procs]= /usr/local/nagios/libexec/check_procs -w 150 -c 200 |
2.5 NRPE守护进程启动
1 2 3 4 | [root@node2 ~] # /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d [root@node2 ~] # netstat -tulpn | grep nrpe tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 26018 /nrpe tcp 0 0 :::5666 :::* LISTEN 26018 /nrpe |
NRPE的运行模式:
1 2 3 | -i = Run as a service under inetd or xinetd -d = Run as a standalone daemon -d -s = Run as a subsystem under AIX |
2.6 nrpe启动脚本的编辑
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 | [root@node2 ~] # vim /etc/init.d/nrped #!/bin/bash #date: 2017-11-05 # chkconfig: - 64 36 # description: NRPE server. NPRE= /usr/local/nagios/bin/nrpe NRPECFG= /usr/local/nagios/etc/nrpe .cfg case "$1" in start) echo -n "Starting NPRE daemon..." ${NPRE} -c ${NRPECFG} -d echo "Start NPRE daemon done..." ;; stop) echo -n "stopping NRPE daemon..." pkill -u nagios nrpe echo "Stop NPRE daemon done..." ;; restart) $0 stop sleep 3 $0 start ;; *) echo "Usage:$0 start|stop|restart" ;; esac exit 0 |
2.7 nrped脚本测试和设置nrped服务开机启动启动
1 2 3 4 5 6 7 | [root@node2 ~] # chkconfig nrped on [root@node2 ~] # service nrped restart stopping NRPE daemon...Stop NPRE daemon done ... Starting NPRE daemon...Start NPRE daemon done ... [root@node2 ~] # netstat -tnlp | grep nrpe tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 26085 /nrpe tcp 0 0 :::5666 :::* LISTEN 26085 /nrpe |
3 Nagios服务端安装NRPE
1 2 3 4 5 6 | [root@node1 src] # tar xvf nrpe-2.15.tar.gz [root@node1 nrpe-2.15] # ./configure --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --with-nagios-group=nagios --enable-command-args --enable-ssl [root@node1 nrpe-2.15] # make all [root@node1 nrpe-2.15] # make install-plugin [root@node1 nrpe-2.15] # ls /usr/local/nagios/libexec/check_nrpe /usr/local/nagios/libexec/check_nrpe |
3.1 关于check_nrpe的一些用法
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 | [root@node1 libexec] # /usr/local/nagios/libexec/check_nrpe -h NRPE Plugin for Nagios Copyright (c) 1999-2008 Ethan Galstad (nagios@nagios.org) Version: 2.15 Last Modified: 09-06-2013 License: GPL v2 with exemptions (-l for more info) SSL /TLS Available: Anonymous DH Mode, OpenSSL 0.9.6 or higher required Usage: check_nrpe -H <host> [ -b <bindaddr> ] [-4] [-6] [-n] [-u] [-p <port>] [-t <timeout>] [-c < command >] [-a <arglist...>] Options: -n = Do no use SSL -u = Make socket timeouts return an UNKNOWN state instead of CRITICAL <host> = The address of the host running the NRPE daemon <bindaddr> = bind to local address -4 = user ipv4 only -6 = user ipv6 only [port] = The port on which the daemon is running (default=5666) [timeout] = Number of seconds before connection times out (default=10) [ command ] = The name of the command that the remote daemon should run [arglist] = Optional arguments that should be passed to the command . Multiple arguments should be separated by a space. If provided, this must be the last option supplied on the command line. Note: This plugin requires that you have the NRPE daemon running on the remote host. You must also have configured the daemon to associate a specific plugin command with the [ command ] option you are specifying here. Upon receipt of the [ command ] argument, the NRPE daemon will run the appropriate plugin command and send the plugin output and return code back to *this* plugin. This allows you to execute plugins on remote hosts and 'fake' the results to make Nagios think the plugin is being run locally. |
相关语法格式:
1 2 3 | [root@node1 libexec] # ./check_nrpe -H <host> [-n] [-u] [-p <port>] [-t <timeout>] [-a <arglist...>] [root@node1 libexec] # ./check_nrpe -H 192.168.31.102 NRPE v2.15 |
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配置文件内容
1 2 | [root@node1 objects] # vim /usr/local/nagios/etc/nagios.cfg cfg_file= /usr/local/nagios/etc/objects/linehost .cfg |
3.4 定义主机linehost.cfg和服务service.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [root@node1 objects] # grep -E -v "^#|^$" linehost.cfg define host{ use linux-server ; Name of host template to use ; This host definition will inherit all variables that are defined ; in (or inherited by) the linux-server host template definition. host_name linehost alias linehost address 192.168.31.102 } define hostgroup{ hostgroup_name my-linux-servers ; The name of the hostgroup alias My Linux Servers ; Long name of the group members linehost ; Comma separated list of hosts that belong to this group } [root@node1 objects] # vim services.cfg define service{ use local -service host_name linehost service_groups MysqlGroup service_description MySqlSev |
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 | check_command check_mysql } define service{ use local -service ; Name of service template to use host_name linehost service_description PING check_commandcheck_ping!100.0,20%!500.0,60% } define service{ use local -service ; Name of service template to use host_name linehost service_description Root Partition check_commandcheck_local_disk!20%!10%!/ } define service{ use local -service ; Name of service template to use host_name linehost service_description Current Users check_commandcheck_local_users!20!50 } define service{ use local -service ; Name of service template to use host_name linehost service_description Total Processes check_commandcheck_local_procs!250!400!RSZDT } 检查配置文件 [root@node1 objects] # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 无错误信息重启服务 [root@node1 objects] # service nagios restart |
web端进行查看验证
Nagios通过NRPE对远程linux服务器监控就介绍到这里,下一章将介绍Nagios对windowns主机的监控以及的邮件报警功能的配置
博文出自:http://os.51cto.com/art/201409/452605.htm
本文转自 CARYFLASH 51CTO博客,原文链接:http://blog.51cto.com/maoxiaoxiong/1980787
转载地址:http://emula.baihongyu.com/