因工作所需,所以就自己搭建了下nagios,替代公司现用的zabbix,以下是搭建过程以及搭建过程中遇到的问题及解决办法,都写在了一起,感觉看着乱的话就只看搭建过程就可以了。
一、 环境:系统:Fedora 14
nagios源码包:nagios-3.2.3.tar.gz
:nagios-plugins-1.4.14.tar.gz
:nrpe-2.13.tar.gz
下载地址:http://www.nagios.org/download/core/thanks/ (nagios)
http://www.nagios.org/download/plugins (nagios-plugins)
http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.13/nrpe-2.13.tar.gz/download (nrpe)
其他软件包:httpd 、php、 mysql、 mysql-server、 php-mysql、 httpd-manual 、php-adodb、openphp-gd、 openssl 、gcc*
确定你的yum源是可用的情况下,用yum 安装上述其他软件包即可。
执行:yum -y install httpd php mysql mysql-server php-mysql httpd-manual php-adodb openphp-gd openssl gcc*
二、建立帐号
建立nagios运行帐号,用户名为:nagios 密码为redhat
/usr/sbin/useradd nagios && passwd redhat
创建一个用户组名为 nagcmd,将 nagios 用户和 apache用户都加到这个组中。
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -G nagcmd nagios
/usr/sbin/usermod -G nagcmd apache
三、nagios源码安装
tar -zxvf nagios-3.2.3.tar.gz
cd nagios-3.2.3
./configure --with-command-group=nagcmd
make all //输出如下信息
make install //安装主程序,CGI 和 HTML 文件
make install-init //在/etc/rc.d/init.d 安装启动脚本
make install-config //配置目录权限
make install-commandmode //来安装示例配置文件
make install-webconf //生成 web 接口
这里说一个技巧:相信很多人会遇到这种情况,命令执行完之后不知道是对是错,以后当你在执行的时候,等命令完成之后你直接输入 echo $?,如果返回值是0,则证明你上一步的命令是正确的,返回值是其他数字的话,上一步就错咯。
验证程序是否被正确安装。切换目录到安装路径(这里是/usr/local/nagios),看是
否存在 etc、bin、 sbin、 share、 var 这五个目录,如果存在则可以表明程序被正确的安装到系统了。
关于五个目录功能的说明:
bin Nagios 执行程序所在目录,nagios 文件即为主程序
etc Nagios 配置文件位置,初始安装完后,只有几个*.cfg-sample 文件
sbin Nagios Cgi 文件所在目录,也就是执行外部命令所需文件所在的目录
share Nagios 网页文件所在的目录
var Nagios 日志文件、spid 等文件所在的目录
nagios安装就完成了,如果第一步里面的软件包都装上了的话,执行上述命令是没问题的,如有问题,先检查所有软件包是否安装完成。
四、添加apache验证用户
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password: (输入 redhat)
Re-type new password: (再输入一次密码 redhat)
nagiosadmin 系统默认管理用户,拥有对 nagios 有完全控制权限。
也可自定义用户,或增加用户,但必须从以下文件中设置,多个用户用,隔开。
vim /usr/local/nagios/etc/cgi.cfg
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin,jiongge
authorized_for_all_service_commands=nagiosadmin,jiongge
authorized_for_all_host_commands=nagiosadmin
五、启动nagios和http
注:启动之前确保机子的SElinux 和IPtables 是关闭的。
启动nagios之前先执行以下命令,验证配置文件是否错误,没错的话在启动。
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如上图,Warnings 和Erros都是0 说明没有错误,此时在启动nagios。
nagios启动成功,加入到开机自动启动中,执行以下命令:
chkconfig nagios on
检查是否加入,执行:
chkconfig --list | grep nagios
运行级别2 3 4 5 如果为on,则证明成功,这里就不上图了。
启动http,上面都很顺利,但是我到启动http的时候出现了问题。
错误提示说/etc/httpd/conf.d/auth_cas.conf 文件有错,于是进去看看,果然有这个配置文件。
vim进去看了之后里面是一行http加载的模块,我想注释之后能不能启动,于是就注释了,结果真的可以启动了。
OK,nagios和http都启动成功,下面就是通过Web 访问nagios,并登录了。
浏览器输入http://IP/nagios
访问成功,提示输入用户名密码,用户名nagiosadmin,密码:redhat。
问题又出现了,当我确认用户名密码没有错误回车之后,这个登录提示窗口又闪出来了,郁闷!!!
回想以前搭建ftp时,一般遇到这种问题都是运行程序的用户对验证文件没有访问权限导致,所以这次第一个就去看验证文件的权限。
从上面两张图,看出配置文件的权限都是nagios,apache并没有权限,于是将配置文件权限改成了所属主是:nagios,所属组是nagcmd,(apache属于nagcmd这个组的),改完之后还是不行。
于是就去看http的log。如下:
错误提示说没有找到nagiosadmin这个用户,不可能啊,明明就是有这个用户的阿。既然说没有,就把认证文件删了重新建。
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password: (输入 redhat)
Re-type new password: (再输入一次密码 redhat)
在检查以下配置文件是否有错,没错的话重启。重启之后在登录,竟然成功了!!
疑问:1、/etc/httpd/conf.d/auth_cas.conf 这个配置文件中的加载的模块为什么注释掉之后,http就可以启动了呢?
2、为什么把认证文件删除重新创建就可以登录了呢?
这两个问题一直想不明白,知道的大牛麻烦解释下哈。
由于博文字数有限制,所以本篇就先写nagios的搭建,后面的文章里写如果监控本机和其他机器。
待续。。。。。。