【应用软件】nagios安装配置
by lustre
我们专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作
作为系统管理员,我最担心那些重要的在线系统在我不知情的情况下停机或者停止网络服务,要改变这种被动局面,这里作者推荐一款网络监控软件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>