liunx nagios安装与配置
Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。
Nagios最初被设计为在Linux 系统之上运行,然而它同样可以在类Unix的系统之上运行。
Nagios更进一步的特征包括:
监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
监控主机资源(处理器负荷、磁盘利用率等);
简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
并行服务检查机制;
具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位;
自动的日志回滚;
可以支持并实现对主机的冗余监控;
可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
一,安装
1.准备软件包
yum install httpd
yum install gcc
yum install glibc glibc-common
yum install gd gd-devel
yum install mysql mysql-server mysql-devel
yum install gnutls
2.建立用户
useradd nagios
passwd nagios
创建一个用户组,名为nagcmd用于从web接口执行外部命令。将nagios用户和apache用户都加入到这个组中。
groupadd nagcmd
usermod -G nagcmd nagios
usermod -G nagcmd apache
3.下载nagios和插件程序包
http://sourceforge.net/projects/nagiosplug/files/nagiosplug/(列表所有版本的nagios插件包)
http://sourceforge.net/projects/nagios/files/nagios-3.x/(列出所有版本nagios)
http://sourceforge.net/projects/nagios/files/ndoutils-1.x (列出所有版本ndoutils)
wget http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.5.0/nagios-3.5.0.tar.gz
wget http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz
4.安装nagios
tar xzvf nagios-3.5.0.tar.gz
cd nagios
./configure --with-command-group=nagcmd --prefix=/var/www/nagios
make all
make install
make install-init
make install-config
make install-commandmode
样例配置文件默认安装在/var/www/nagios/etc下,这些样例文件可以配置nagios使之正常运行,可以编辑/var/www/nagios/etc/objects/contacts.cfg配置文件,更改email地址
6.配置web接口
安装nagios的web配置文件到apache的conf.d目录下。路径/etc/httpd/conf.d/nagios.conf
make install-webconf
创建一个nagiosadmin的用户用于nagios的web接口登陆,记录下设置的登录口令。
htpasswd -c /var/www/nagios/etc/htpasswd.users nagiosadmin
-c在创建第一个用户的时候用到,其他时候不用
重启apache
service httpd restart
7.编译安装nagios插件
进入源码包
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql=/usr --enable-perl-modules --with-gnutls=/usr --enable-extra-opts --prefix=/var/www/nagios
make
make install
执行 /var/www/nagios/bin/nagios -v /var/www/nagios/etc/nagios.cfg
如果出现
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
说明nagios配置正常,下面以守护进程方式启动
/var/www/nagios/bin/nagios -d /var/www/nagios/etc/nagios.cfg
这样就完成了nagios的安装。为什么要指定安装目录位/var/www/nagios呢
如果采用默认安装,nagios会安装在/usr/local/nagios中,apache采用unexec执行cgi,而unexec执行目录默认为/var/www.以下位我第一次采用默认安装,所出现的错误以及解决思路
进入nagios站点,点击左边的菜单时总是提示Internal Server Error错误.错误如下:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
--------------------------------------------------------------------------------
Apache/2.0.52 (CentOS) Server at mail1.chinabank.com.cn Port 80
红色的提示告诉我们这个错误来自apache.检查apache的错误日志.
vi /var/log/httpd/error_log
Premature end of script headers: status.cgi, referer:http://mail1.chinabank.com.cn/nagios/side.php
大意是不完整的HTTP头.不太懂这个什么意思.重新编译了一个apache在/usr/local/apache/然后停掉原来的httpd,启动新编译的apache,发现nagios的页面可以正常显示,看来是系统自带的apache的配置有问题.google之,网上的解释是apache启用了suexec的功能.对CGI的执行路径进行了限制.那么检查一下本机的apache是不是打开了suexec功能呢.
[root@mail2 ~]# httpd -V
Server version: Apache/2.0.52
Server built: Jul 14 2007 11:53:18
Server's Module Magic Number: 20020903:9
Architecture: 32-bit
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
看来是启用了suexec.
运行suexec -V
可以看到
[root@mail2 nagios]# suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"
看来cgi程序只能在/var/www目录下执行.打开/var/log/httpd/suexec.log
command not in docroot (/usr/local/nagios/sbin/status.cgi)
因为我的nagios默认安装在/usr/local/nagios
所以这个cgi不允许被执行.
解决办法.把nagios安装到/var/www/nagios就可以了
之前我尝试过编译nagios的时候指定--with-cgidir=/var/www/cgi-bin但是发现编译好的nagios的sbin依然在/usr/local/nagios目录下.
编译的时候指定--prefix=/var/www/nagios,其他编译安装的选项不变.
如果不想重新编译,也可以把原来安装到/usr/local目录下的
nagios移动到/var/www目录下.再修改相关的配置文件.这个工程比较大.建议还是重新编译.nagios目录下的etc目录里面的所有cfg的路径都要改.可以用vi的替换功能.
编译好以后.重启nagios和apache(每次进行某服务的配置文件改动后,都重启该服务,使修改生效)
再次刷新nagios的页面.还是一样的错误.
查看/var/log/httpd/suexec.log
directory is writable by others: (/var/www/nagios/sbin)
目录不能有写权限,修改如下:
chmod -R 755 /var/www/nagios/sbin
再刷新页面,日志中又出现
target uid/gid (1000/1000) mismatch with directory (1001/1001) or program (1001/1001)
apache的运行用户和nagios的sbin目录的属主不匹配.
chown -R vuser.vgroup /var/www/nagios/sbin
现在好了
如果不修改sbin的属主,也可以切换apache的运行用户.在httpd.conf中添加如下内容(添加红色部分)
SuexecUserGroup nagios nagios
ScriptAlias /nagios/cgi-bin "/var/www/nagios/sbin"
# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /var/www/nagios/etc/htpasswd.users
Require valid-user
Alias /nagios "/var/www/nagios/share"
# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /var/www/nagios/etc/htpasswd.users
Require valid-user
这里一定要用VirtualHost定义一个虚拟主机,否则SuexecUserGroup nagios nagios
这条语句不起作用
然后我们重启apache,呵呵,总算可以访问nagios的监控界面了
接下来的工作就是完善nagios的监控功能.
十佳人物