关于nagios_nrpe的参数传递

第一段文档简单写了如何搭建nagios/pnp4nagios/

10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站后付款的网站建设流程,更有改则免费网站建设让你可以放心的选择与我们合作。

useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
src=/home/nagios/src
mkdir ${src}
cd ${src}
wget http://ar2.php.net/distributions/php-5.5.9.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz
wget http://nagios-plugins.org/download/nagios-plugins-2.0.tar.gz
wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.7.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.0.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.3.tar.gz
wget http://jaist.dl.sourceforge.net/project/MySQL.mirror/MySQL%205.6.16/mysql-5.6.16.tar.gz
wget http://mirrors.neusoft.edu.cn/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
wget http://cznic.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.21.tar.gz
rpm -ivh epel-release-6-8.noarch.rpm
#FOR RHEL5/CENTOS5x86_64
#DOWNLOAD URL IS http://mirrors.neusoft.edu.cn/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
yum -y install wget mhash mcrypt libmcrypt-devel cmake cpan make autoconf automake curl curl-devel gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel gd gd-devel kernel keyutils patch perl-core kernel-headers compat* mpfr cpp glibc glibc-common libgomp libstdc++-devel pplcloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-develkrb5-devel libXpm* freetype freetype-devel libjpeg* libpng libpng-devel php-common php-gd ncurses* libtool* libxml2 libxml2-devel
packagelist=`ls ${src}/*.tar.gz`
for package in $packagelist;do tar xvf $package;done
cd cd ${src}/apr-1.5.0
./configure
make && make install
cd ${src}
cd cd ${src}/apr-util-1.5.3
./configure --with-apr=/usr/local/apr
make && make install
cd ${src}
chown -R nagios. ${src}
su - nagios
cd ${src}/httpd-2.4.7
./configure --prefix=/home/nagios/httpd  --enable-ssl=shared --enable-module=most --enable-shared=most --enable-rewrite
make && make install
cd modules/generators/
~/httpd/bin/apxs -i -a -c mod_cgi.c
~/httpd/bin/apxs -i -a -c mod_cgid.c
cd ${src}/mysql-5.6.16
cmake -DCMAKE_INSTALL_PREFIX=/home/nagios/mysql
make && make install
cd /home/nagios/mysql/
./scripts/mysql_install_db -basedir=/home/nagios/mysql -datadir=/home/nagios/mysql/data --user=nagios
/home/nagios/mysql/bin/mysqld_safe &
./bin/mysqladmin -u root password $password
cat >>~/.bash_profile<
#    DirectoryIndex index.html index.php
#
rm -rf ~/httpd/htdocs/index.html
cat >>~/httpd/htdocs/index.php<;
EOF
cd ${src}/nagios-4.0.2
./configure --prefix=/home/nagios/nagios --enable-embedded-perl --with-command-group=nagcmd
make all
make install
#must_be_root
make install-init
make install-config
make install-commandmode
cat sample-config/httpd.conf>>~/httpd/conf/httpd.conf
~/httpd/bin/htpasswd -c /home/nagios/nagios/etc/htpasswd.users nagios
cd ${src}/nagios-plugins-1.5
 ./configure --prefix=/home/nagios/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --enable-libtap --enable-extra-opts --enable-perl-modules
make && make install
sed -i "s/nagiosadmin/nagiosadmin,nagios/g" ~/nagios/etc/cgi.cfg
#启动nagios:~/nagios/bin/nagios -d ~/nagios/etc/nagios.cfg
exit
echo "#BACK TO ROOOT#"
yum -y install cjkuni*
yum -y install cairo-devel pango pango-devel net-snmp* php-snmp libart_lgpl-devel
#install_rrdtool #must_be_root
cd ${src}/rrdtool-1.4.8
./configure --prefix=/home/nagios/rrdtool --enable-perl-site-install
make && make install
chown -R nagios. /home/nagios/rrdtool
#install pnp4nagios
su - nagios
cd ${src}/pnp4nagios
./configure --prefix=/home/nagios/pnp --with-rrdtool=/home/nagios/rrdtool/bin/rrdtool  --with-base-url=/pnp  --with-httpd-conf=/home/nagios/httpd/conf
make all
make install
make install-webconf
make install-config
echo "include conf/pnp4nagios.conf">>~/httpd/conf/httpd.conf
#vim ~/nagios/etc/objects/templates.cfg
define host {
   name       host-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
   register   0
}
define service {
   name       srv-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}
#vim ~/nagios/etc/objects/commands.cfg
define command{
        command_name    process-host-perfdata
        command_line    /usr/bin/perl /home/nagios/pnp/libexec/process_perfdata.pl -d HOSTPERFDATA
        }
define command{
        command_name    process-service-perfdata
        command_line    /usr/bin/perl /home/nagios/pnp/libexec/process_perfdata.pl
        }
mv /home/nagios/pnp/share/install.php /home/nagios/pnp/share/install.php.`date +%Y%m%d`
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata

第二部分关于nrpe的安装

#!/bin/bash
#INSTALL NRPE DAEMON#
src=/home/nagios/src
nagios_home=/home/nagios/nagios
yum install openssl openssl-devel
useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
echo "5cr8xOW7DF"|passwd --stdin nagios
su - nagios
mkdir ${src}
cd ${src}
wget http://nagios-plugins.org/download/nagios-plugins-2.0.tar.gz
wget http://jaist.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
echo "##INSTALL NAGIOS-PLUGINS##"
tar xvf nagios-plugins-2.0.tar.gz
cd nagios-plugins-2.0
./configure --prefix=${nagios_home} --enable-perl-modules
make && make install
cd ${src}
echo "##INSTALL NRPE##"
tar xvf nrpe-2.15.tar.gz
cd nrpe-2.15
#编译启用参数传递
./configure --prefix=${nagios_home} --with-nrpe-user=nagios --with-nrpe-group=nagios --enable-command-args
make all
make install-plugin
make install-daemon
make install-daemon-config
exit
cd ${src}/nrpe-2.15/
make install-xinetd
sed -i 's/127.0.0.1/192.168.28.241/g' /etc/xinetd.d/nrpe
echo "nrpe            5666/tcp        # NRPE" >>/etc/services
chown nagios. /etc/xinetd.d/nrpe
service xinetd restart
lsof -i:5666

nrpe.cfg配置文件简单如下

log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
server_address=127.0.0.1
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=127.0.0.1
                                                                                                                                     
dont_blame_nrpe=1
allow_bash_command_substitution=0
debug=0
command_timeout=60
connection_timeout=300
command[check_users]=/home/nagios/nagios//libexec/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/home/nagios/nagios//libexec/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/home/nagios/nagios//libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_procs]=/home/nagios/nagios//libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$

其中server_address/allow_address注意根据实际修改,dont_blame_nrpe=1(默认为0,1为开启参数传递)

nagios server端command.cfg需另外define一个check_remote_nrpe的command

define command{
        command_name    check_remote_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$
        }

这样监控服务,如客户端环境改变需调整参数的话只需要在nagios服务端修改参数即可,例如

define service{
        use                     linux-service
        hostgroup_name          97f5eafb7a
        service_description     check partition /
        check_command           check_remote_nrpe!check_disk!20%!10%!/
        }

第三部分,如果以后添加新监控点,则需去修改每台客户机的nrpe.cfg文件去define command,这样太麻烦了。所以再添加这样一个脚本来传递整个命令,客户端如需添加新监控点只需上传监控脚本,nagios服务端define service即可

#!/bin/sh
while getopts "a:c:" arg
do
        case $arg in
             a)
                arg_a=$OPTARG;
                ;;
             c)
                arg_c=$OPTARG;
                ;;
             ?)
            echo "unkonw argument"
            echo "only -c -a argument"
            exit 1
            ;;
        esac
done
if [[ "$arg_c" =~ "$HOME/" ]];then
    if [ ! -x $arg_c ];then
        echo "[$arg_c] not execute";
        exit 3;
    fi
                                                   
    $arg_c $arg_a;
    exit $?;
else
    echo "cannt execute $arg_c,not allow execute [$HOME] outside scripts";
    exit 3;
fi

nagios的command文件需添加如下

define command{
        command_name    check_nrpe_exec
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
        }

客户端nrpe.cfg配置文件command部分只需要有

command[exec_command]=/home/nagios/nagios//libexec/exec_command -c exec_command -a "$ARG1$"

添加监控点例子,只需修改exec_command后的监控脚本命令

define service{
        use                     linux-service
        host_name               887a34d257
        service_description     check_swap
        check_command           check_nrpe_exec!"/home/nagios/nagios/libexec/check_swap -w 50% -c 30%"
        }

网站名称:关于nagios_nrpe的参数传递
本文路径:http://scyanting.com/article/ggpcps.html