【应用软件】nagios安装配置

【应用软件】nagios安装配置

by lustre

作为系统管理员,我最担心那些重要的在线系统在我不知情的情况下停机或者停止网络服务,要改变这种被动局面,这里作者推荐一款网络监控软件Nagios.

 . 下载: http://www.nagios.org/download

nagios-3.2.2.tar.gz

nagios-plugins-1.4.15.tar.gz

nrpe-2.12.tar.gz

 

 . 监控本机的安装

1. 参考修改 yum 源的文档,确保 linux 系统上已经安装如下软件包再继续。

Apache

GCC 编译器

GD 库与开发库

#yum –y install httpd gcc glibcglibc‐common gd gd‐devel

2. 建立账号

# useradd nagios

# passwd nagios

密码为: nagios

创建一个用户组名为 nagcmd 用于从 Web 接口执行外部命令。将 nagios 用户和 apache 用户都加到这个组中。

# groupadd nagcmd

# usermod -G nagcmd nagios

# usermod -G nagcmd apache

3. 编译与安装 nagios

# tar zxvf nagios-3.2.2.tar.gz

# cd nagios-3.2.2

# ./configure --with-command-group=nagcmd--prefix=/usr/local/nagios

#make all

#make install

#make install‐init

#make install‐config

#make install‐commandmode

验证程序是否被正确安装。切换目录到安装路径(这里是 /usr/local/nagios  , 看是否存在 etc  bin  sbin  share  var 这五个目录,如果存在则可以表明程序被正确的安装到系统了。

4. 编译安装 nagios 插件

# tar zxvf nagios-plugins-1.4.15.tar.gz

# cd nagios-plugins-1.4.15

# ./configure --with-nagios-user=nagios--with-nagios-group=nagios --prefix=/usr/local/nagios/

#make

#make install

验证:

ls /usr/local/nagios/libexec

会显示安装的插件文件 , 即所有的插件都安装在 libexec 这个目录下

5. 配置 web 接口

# vim /etc/httpd/conf/httpd.conf 添加如下内容

 

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory "/usr/local/nagios/sbin">

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

Require valid-user

</Directory>

 

 

Alias /nagios /usr/local/nagios/share

<Directory "/usr/local/nagios/share">

Options None

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

Require valid-user

</Directory>

 

# htpasswd -c/usr/local/nagios/etc/htpasswd test

密码为: 123456

重启 Apache 服务

# /etc/init.d/httpd restart

6. 修改 nagios 配置文件

# vim cgi.cfg 允许 test 用户

authorized_for_system_information=test

authorized_for_configuration_information=test

authorized_for_system_commands=test

authorized_for_all_services=test

authorized_for_all_hosts=nagiosadmin,test

authorized_for_all_service_commands=test

authorized_for_all_host_commands=test

如果有多用户,请用逗号格开

如果只想给用户有读的权限的话,可以只开黄色的部分。

7. 启动 nagios

 Nagios 加入到服务列表中以使之在系统启动时自动启动

#chkconfig --add nagios

#chkconfig nagios on

验证 Nagios 的样例配置文件

#/usr/local/nagios/bin/nagios  v/usr/local/nagios/etc/nagios.cfg

如果没有报错,可以启动 Nagios 服务

#service nagios start

8. 登陆测试

  登陆 http://192.168.8.215/nagios/ 输入用户名和密码可以正常登陆

遇到问题: 验证用户名和密码后显示 HTTP403 错误

原因: Apache 默认不处理 .php 的文件,所以必须安装 php ,并且添加 Apache 默认首页。

解决方法:

#yum install php 安装 PHP

方法:添加 apache 默认首页。 httpd.conf 中添加 index.php

#vi /etc/httpd/conf/httpd.conf

重启 Apache

 . 客户端监控代理 NRPE 的安装配置 :

监控机: 192.168.8.215

被监控机: 192.168.8.216

a. 被监控机

1. 添加用户(这一步添加的用户是为了第二步的时候修改目录的所有者,可以不添加密码)

#useraddnagios

#passwd nagios

密码: 123456

2. 安装 nagios 插件(最后两步可以直接 chown –Rnagios:nagios /usr/local/nagios 

#tar zxvf nagios-plugins-1.4.15.tar.gz

#cd nagios-plugins-1.4.15

#./configure --prefix=/usr/local/nagios

#makeall

#makeinstall

# chown nagios.nagios/usr/local/nagios/

#chown -R nagios.nagios/usr/local/nagios/libexec/

3. 编译安装 nrpe

#tar zxvf nrpe-2.12.tar.gz

#cd nrpe-2.12

#./configure

编译完成后可以看到 nrpe 的端口号是 5666

#makeall

makeinstall-plugin

makeinstall-daemon

makeinstall-daemon-config

make install-xinetd 这一步完成以后在 /etc/xinetd.d 目录下会看到 nrpe 文件。 ( 这一步可省 )

ok ,安装好了,能到 /usr/local/nagios/ 下面检查一下,应该生成了 4 个目录 :bin  etc  libexec  share 

4. 配置

设置 /usr/local/nagios/etc/nrpe.cfg:

allowed_hosts=127.0.0.1,192.168.8.215      把监控主机的 IP 添加到这里

 nrpe.cfg 最后修改监测的命令行定义 , 可根据具体服务的情况进行设置 , 例如 :

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_disk1]=/usr/local/nagios/libexec/check_disk-w 20 -c 10 -p /dev/cciss/c0d0p7

command[check_disk2]=/usr/local/nagios/libexec/check_disk-w 20 -c 10 -p /dev/hdb1

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

修改了 nrpe.cfg 的内容后需要重启 nrpe 的进程:

#pkillnrpe

#

 nrpe 服务加入 xinetd 的守护进程:

# vim /etc/services

添加: nrpe            5666/tcp                        # NRPE

#vim /etc/xinetd.d/nrpe 修改成如下内容(注意把红色部分的内容替换成正确的):(这一步可省)

# default: on

# description: NRPE (Nagios Remote Plugin Executor)

service nrpe

{

        flags           = REUSE

        socket_type     = stream

        port            = 5666

        wait            = no

        user            = nagios

        group           = nagios

        server          = /usr/local/nagios/bin/nrpe

        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd       

        log_on_failure  += USERID

        disable         = no

        only_from       192.168.8.215

}

 

重启服务

# /etc/rc.d/init.d/xinetd restart

查看 5666 的状态

# netstat -nlp | grep 5666

(在这个之前, /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d   这个必须启动)

tcp       0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      20457/xinetd

5. 修改防火墙,打开 5666 端口:(这一步很重要

vim   /etc/sysconfig/iptables

增加一行:

-A RH-Firewall-1-INPUT -p tcp -m state--state NEW -m tcp --dport 5666 -j ACCEPT

(注意这一句要写在 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 之前,否则没有效果)

重新启动防火墙:

/sbin/services/iptables  restart

# /etc/init.d/iptables restart

b. 监控机

1. 安装 nrpe

# tar zxvf nrpe-2.12.tar.gz

# cd nrpe-2.12

# ./configure -enable-ssl-enable-command-args

#make all

# cp sample-config/nrpe.cfg /etc/

# cp src/nrpe /usr/sbin/

# cp src/check_nrpe/usr/local/nagios/libexec/

2. 编译配置文件

编辑 commands.cfg

#vim /usr/local/nagios/etc/objects/commands.cfg

添加下面内容

# 'check_nrpe' command definition

define command{

       command_name check_nrpe

       command_line $USER1$ /check_nrpe -H $HOSTADDRESS$ -c $ARG1$

}

编辑 nagios.cfg

设置 check_external_commands=1

# service nagios reload

3. 定义对 192.168.8.216 监控的服务

define service{

        use                             generic-service         ; Name of service template to use

        host_name                       192.168.8.216

        service_description             zombie procs

        is_volatile                     0

        check_period                    24x7

        max_check_attempts              4

        normal_check_interval           5

        retry_check_interval            1

        contact_groups                  admins

        notification_options            w,u,c,r

        notification_interval           960

        notification_period             24x7

        check_command                   check_nrpe!check_zombie_procs

}

 

c. 检查 NRPE 是否正常:

在被监控机上

 

/usr/local/nagios/libexec/check_nrpe -H127.0.0.1

查看相应的端口: netstat -an |grep 5666

防火墙开启 5666 允许局域网 IP 或固定 IP 连接

 

在监控主机上

 

/usr/local/nagios/libexec/check_nrpe -H $ 目标主机地址

(/usr/local/nagios/libexec/check_nrpe –H192.168.8.216)

都应该可以输出 NRPE 的版本: NRPE v2.12

这一步用来检查监控机与被监控机是否通过 nrpe 连接起来,所以非常重要。

参考资料 http://blog.sina.com.cn/s/blog_417b97470100lrqo.html

 

 . 利用 nrpe 脚本实现开机自启动

方法:脚本在 172.30.0.124 上面, copy 到每台被监控的机器上,然后用 chkconfig 设置自启动,级别为 3  5

 

遇到问题:

1). 安装nrpe,编译的时候提示以下信息

checking for SSL headers...configure: error: Cannot find ssl headers

1.centos 系统

原因是缺少openssl-devel包,

yum -y install openssl-devel

2.Ubuntu 系统

# apt-get install libssl-dev

# ./configure--with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib

 

2) 出现以下错误信息 
Internal Server Error
The server encountered an internal error or misconfiguration and was unable tocomplete your request.

Please contact the server administrator,  root@localhost   and inform them of the time the error occurred, and anything youmight have done that may have caused the error.

More information about this error may beavailable in the server error log.

解决方法: 
setenforce 0 # 
关掉 SELinux 服务

3) nagios It appears as though you do nothave permission to view information you requested... 的解决

访问 nagios 的时候,查看详细信息是提示 “It appears as thoughyou do not have permission to view information you requested...”

解决方法:

vi  /usr/local/nagios/etc/cgi.cfg

修改

use_authentication=1

use_authentication=0

/etc/init.d/nagios restart

4  . 安装插件的时候,有的机器有 check_mysql ,有的没有?

原因:机器的环境不一样

解决方法:在机器上面安装 mysql-devel ,然后重启 MySQL ,再重新安装插件,或者把其他机器上面的 check_mysql 拷贝过来,就可以用了,如果单纯拷贝而没有安装 mysql-devel 照样是不能用的。

5  . Connectionrefused or timed out

检查 nrpe 端口

检查 nrpe.cfg  allowed_hosts 是否包含监控机 ip 地址

检查 /etc/hosts.allow 文件中监控机 ip 地址 nrpe:192.168.1.91

检查 iptables

 

开放 5666 端口

iptables -L

iptables -A RH-Firewall-1-INPUT -p tcp -mstate --state NEW -m tcp --dport 5666 -j ACCEPT

 

6). Error: Could not open command file'/usr/local/nagios/var/rw/nagios.cmd' for update! 在界面 Disablenotifications for this host 的时候出现的错误。

原因:权限问题

解决办法:

第一种:

chown nagios.nagiocmd/usr/local/nagios/var/rw

chmod u+rwx,g+rwx,g+s /usr/local/nagios/var/rw

第二种:

这个主要是apache  用户 没有执行权限/usr/local/nagios/var/rw/nagios.cmd 造成

分析nagios 启动脚本后发现,nagios 在停止的时候会删除掉 nagios.cmd

测试了一下,有一个比较恶毒的解决办法,就是在nagios  启动脚本中修改权限。

即:

start)

echo -n "Starting nagios:"

$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;

if [ $? -eq 0 ]; then

su - $NagiosUser -c "touch $NagiosVarDir/nagios.log$NagiosRetentionFile"

rm -f $NagiosCommandFile

touch $NagiosRunFile

chown $NagiosUser:$NagiosGroup $NagiosRunFile

$NagiosBin -d $NagiosCfgFile

if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile;fi

echo " done."

  chmod -R 777 /usr/local/nagios/var/rw

exit 0

启动后即可。

提倡用第一种,不提倡第二种。

 

如果是配置在虚拟主机里面的话,如下:

 

<VirtualHost *:80>

ServerAdmin   [email protected]

DocumentRoot  "/usr/local/nagios"

ServerName    202.96.155.117

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory "/usr/local/nagios/sbin">

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

Require valid-user

</Directory>

 

 

Alias /nagios /usr/local/nagios/share

<Directory "/usr/local/nagios/share">

Options None

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

Require valid-user

</Directory>

ErrorLog "logs/nagios-error_log"

CustomLog "logs/nagios-access_log" common

 

</VirtualHost>


我们专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作 
欢迎访问 http://wireless.qzone.qq.com 或 http://blog.csdn.net/wireless_tech 

你可能感兴趣的:(【应用软件】nagios安装配置)