1、Nagios是一款遵循GPLv2的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。它的特性包括:
1)监控网络服务(HTTP、POP3、SMTP、PING、MySQL等)
2)监控主机资源(磁盘空间利用率、内存利用率、 CPU负载等)
3)简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本
4)并行服务模式
5)轻松描述网络结构,并且能够区辨“宕机”和“主机不可达”
6)通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员
7)自动日志滚动
8)支持以冗余方式进行主机监控
9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选
2、Nagios 工作原理
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中,NRPE用来在监控的远程Linux/ Unix主机上执行脚本插件以实现对这些主机资源的监控;NSCA用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到);NSClient++是用来监控Windows主机时安装在Windows主机上的组件;而NDOUtils则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理。
3、监控的基本流程:
当Nagios需要监控某个远程工作站linux主机的服务或者资源情况时:
1).nagios运行check_nrpe插件,我们要在nagios配置文件中告诉它要检查什么.
2).check_nrpe插件会通过SSL连接到远程的NRPE daemon.
3).NRPE daemon会运行相应的nagios插件来执行检查本地资源或服务.
4).NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理.
注意: NRPE daemon需要nagios插件安装在远程被监控linux主机上,否则,daemon不能做任何的监控.别外因为它们间的通信是加密的SSL,所以在编译安装时都要加上选项, ./configure --enable-ssl --with-ssl-lib=/lib/,否则也会出错.
-----------------------------------------------------------------------------------------------实验环境配置
1、 环境搭建
Server: nagios nagios-plugins nrpe 192.168.85.207
工作站:nagios-plugins nrpe 192.168.85.208
# rpm -q httpd gcc glibc glibc-common gd gd-devel
#yum -y httpd gcc glibc glibc-common gd gd-devel
在server 端安装配置
一、创建nagios用户和用户组
[root@localhost ~]#useradd -s /sbin/nologin nagios
[root@localhost ~]#mkdir /usr/local/nagios
[root@localhost ~]#chown -R nagios.nagios /usr/local/nagios
二、开启系统sendmail服务
[root@localhost ~]#service sendmail start
三、编译安装nagios(如果没有gcc ,可以光盘里#rpm -ihv gcc-4.1.2-51.el5.x86_64.rpm)
[root@localhost ~]# tar -zxvf nagios-3.2.0.tar.gz
[root@localhost ~]# cd nagios-3.2.0
[root@localhost nagios-3.2.0]#./configure --prefix=/usr/local/nagios
#指定nagios的安装目录,这里指定nagios安装到/usr/local/nagios目录
[root@localhost nagios-3.2.0]#make all
[root@localhost nagios-3.2.0]#make install
# make install用来安装nagios的主程序,CGI和HTML文件
[root@localhost nagios-3.2.0]# make install-init
#通过make install-init命令可以在/etc/rc.d/init.d目录下创建nagios启动脚本
[root@localhost nagios-3.2.0]# make install-commandmode
#通过make install-commandmode命令来配置目录权限
[root@localhost nagios-3.2.0]# make install-config
#make install-cofig命令用来安装nagios示例配置文件,这里安装的路径是/usr/local/nagios/etc
nagios安装完成后,目录对应的功能说明如下:
bin:可执行程序所在目录
etc:配置文件所在目录
sbin:cgi文件所在目录,也就是执行外部命令所需文件所在目录
share:网页文件所在目录
libexec:外部插件所在目录
var:日志文件,lock等文件所在目录
var/archives:日志自动归档目录
var/rw:用来存放外部命令文件的目录
四、安装nagios的插件
以nagios-plugins-1.4.14为例,插件版本与nagios版本关系并不大。
[root@localhost nagios]#tar -zxvf nagios-plugins-1.4.14.tar.gz
[root@localhost nagios]#cd nagios-plugins-1.4.14
[root@localhost nagios-plugins-1.4.14]#./configure --prefix=/usr/local/nagios
[root@localhost nagios-plugins-1.4.14]# make
[root@localhost nagios-plugins-1.4.14]# make install
查看/usr/local/nagios/libexec,会看到新增很多的插件。
五、安装Nagios中文化插件(可以省略这一步)
下载地址:http://sourceforge.net/projects/nagios-cn/files/
此处切忌版本要与nagios的版本对应。
[root@localhost ~]#tar jxvf nagios-cn-3.2.0.tar.bz2
[root@localhost nagios-cn-3.2.0]#cd nagios-cn-3.2.0
[root@localhost nagios-cn-3.2.0]#./configure
[root@localhost nagios-cn-3.2.0]#make all
[root@localhost nagios-cn-3.2.0]#make install
六、安装httpd和php
依次执行如下命令:
[root@localhost nagios-cn-3.2.0]#rpm -ivh httpd-2.2.3-43.el5.i386.rpm
[root@localhost nagios-cn-3.2.0]#rpm -ivh php-common-5.1.6-27.el5.i386.rpm
[root@localhost nagios-cn-3.2.0]#rpm -ivh php-cli-5.1.6-27.el5.i386.rpm
[root@localhost nagios-cn-3.2.0]#rpm -ivh php-5.1.6-27.el5.i386.rpm
以上软件包从安装盘中的server目录中寻找。
=======================================================================================
linux RH5安装httpd提示:
此提示是需要安装apr和apr-util的apm包,apr属于apr-1.2.7-11.i386.rpm,而apr-util属于postgresql-libs-8.1.9-1.el5.i386.r.安装时只装apr-1.2.7-11.i386.rpm和postgresql-libs-8.1.9-1.el5.i386.rpm 不行 还需要装上apr-util-1.2.7-6.i386 而且还有顺序 装上post。。才能装上apr-util。。
[root@redhat_5 Server]# rpm -ivh apr-1.2.7-11.el5_6.5.x86_64.rpm
[root@redhat_5 Server]# rpm -ihv postgresql-libs-8.1.23-1.el5_6.1.x86_64.rpm
[root@redhat_5 Server]# rpm -ihv apr-util-1.2.7-11.el5_5.2.x86_64.rpm
顺利安装成功:
=======================================================================================
七、配置httpd和php
修改httpd的配置文件/etc/httpd/conf/httpd.conf
找到如下两行
User apache
Group apache
#如果找不到,请通过搜索nobody寻找
修改为
User nagios
Group nagios
然后找到
DirectoryIndex index.html index.html.var
修改为
DirectoryIndex index.html index.html.var index.php
再在其下增加如下行
AddType application/x-httpd-php .php
在配置文件末尾增加如下信息:
#setting for nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
Alias /nagios "/usr/local/nagios/share"
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
保存配置文件
八、新增验证文件
[root@redhat_5 monitor]# /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nick
New password: (输入密码)
Re-type new password: (再输入一次密码)
Adding password for user nick
在/usr/local/nagios/etc下就会新增一个htpasswd验证文件。
九、验证
[root@localhost]#service httpd restart
[root@localhost]#vipw
修改最后一行为
nagios:x:500:501::/home/nagios:/bin/bash
[root@localhost]#service nagios start
通过浏览器输入http://ip/nagios/
输入用户名/密码,就可以看到nagios的管理界面啦。此时看到的界面中没有任何监控机的信息。
十、配置本机监控
根据如下配置,完成本机监控的配置,先简单看看nagios监控的庐山真面目。本人已经验证在RHEL5.5下的nagios-3.2.0版本按如下配置之后,能实现nagios对本机的监控支持。
1、新建monitor文件夹,拷贝示例配置文件到该文件夹下
cd /usr/local/nagios/etc
cp -rf ./objects/* monitor
2、删除不需要得配置文件
cd /usr/local/nagios/etc/monitor
rm windows.cfg switch.cfg printer.cfg
3、修改contacts.cfg(联系人配置文件)
define contact{
contact_name nick ;修改为自己名字
use generic-contact ;引用generic-contact的属性信息
alias nick zhang; 全名
email nick.zhang@126.com ; 修改为自己电子邮箱地址
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nick;添加上边定义的联系人名,以逗号分隔
}
4、修改cgi.cfg
default_user_name=nick;将用户名修改为nagios界面登录的用户名
5、修改nagios.cfg
将所有cfg_file=都注释掉添加如下一行
cfg_dir=/usr/local/nagios/etc/monitor
6、使用命令:/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg检查配置是否有误
7、重启nagios:service nagios restart
此时登录到nagios的web界面,就能查看到监控界面左侧的主机和服务中有我们配置好的本地监控的信息啦。
配置其他客户机被监控
define host{
use linux-server
host_name CRON_Deploy ---被监控主机名,必须在服务器上可以ping 通这个名字
alias CRON_Deploy
address 192.168.85.208 ---被监控主机IP
}
define service{
use generic-service
host_name CRON_Deploy ---被监控主机名
service_description check-swap ---定义检查对象,这个是在页面显示的名称
check_command check_nrpe!check_swap ---定义check_nrpe 传送参数check_swap到远程被检查主机执行的命令,此命令在远程主机配置文件/usr/local/nagios/etc/nrpe.cfg 中有定义
}
define service{
use generic-service
host_name CRON_Deploy
service_description check-load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name CRON_Deploy
service_description check-disk
check_command check_nrpe!check_disk
}
define service{
use generic-service
host_name CRON_Deploy
service_description check-users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name CRON_Deploy
service_description otal_procs
check_command check_nrpe!check_total_procs
}
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.
#tar zxvf nagios-nrpe_2.8.1.orig.tar.gz
#cd nagios-nrpe_2.8.1
#./configure --enable-ssl --with-ssl-lib=/usr/lib/
#make all
#make install-plugin
#make install-daemon
#make install-daemon-config
4、配置nrpe信息
#vim /usr/local/nagios/etc/nrpe.cfg
allowed_host=192.168.85.207,127.0.0.1 //允许192.168.85.207服务器端对其监控
#/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
//检测nrep配置文件的正确性
#netstat -an | grep 5666 //是否监听5666用于nrpe通信的端口
//在服务端执行检测工作站nrpe信息
#/usr/local/nagios/libexec/check_nrpe -H 192.168.85.208
NRPE v2.8.1
//在工作站执行检测自己的nrpe信息
#/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.8.1
5、配置工作站上的被检测上网信息
[root@CRON_Deploy etc]# cat nrpe.cfg|grep -v "#" |grep -v "^$"
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts= 192.168.85.207,127.0.0.1
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
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_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
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
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
nagios 9026 1 0 01:41 ? 00:00:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
root 13951 19717 0 21:02 pts/1 00:00:00 grep nrpe
[root@CRON_Deploy etc]# kill -9 9026
default_user_name=nick
authorized_for_system_information=nagiosadmin,nick
authorized_for_configuration_information=nagiosadmin,nick
authorized_for_system_commands=nagiosadmin,nick
authorized_for_all_services=nagiosadmin,nick
authorized_for_all_hosts=nagiosadmin,nick
authorized_for_all_service_commands=nagiosadmin,nick
authorized_for_all_host_commands=nagiosadmin,nick