一、Nagios简介
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/,否则也会出错.
最后让nagios整合到cacti上,是处理后的信息图形化显示
为了保证系统的安全性,首先添加运行nagios的用户和组并创建nagios的主程序目录:
[iyunv@slienter ~]# useradd -s /sbin/nologin nagios #创建运行nagios的用户
[iyunv@slienter ~]# mkdir /usr/local/nagios #创建nagios的主程序目录
[iyunv@slienter ~]# chown -R nagios.nagios /usr/local/nagios #设置nagios主程序的目录的属主和属组为nagios
2、确认系统开启sendmail服务:
[iyunv@slienter ~]# service sendmail status
sendmail (pid 2860) is running...
3、准备源码包。
主程序源码包可以在这里下载:http://prdownloads.sourceforge.n ... nagios-3.2.3.tar.gz
Nagios的许多功能都是通过插件来完成的,nagios的插件可以在这里下载:http://prdownloads.sourceforge.n ... ugins-1.4.15.tar.gz
英文不好的本人在这里下载了一个汉化插件(我这里选择的是相对应的版本):http://nchc.dl.sourceforge.net/p ... os-cn-3.2.3.tar.bz2
4、这里我们就可以开始安装了。
解压所有源码包:
[iyunv@slienter mnt]# ls
nagios-3.2.3.tar.gz nagios-cn-3.2.3.tar.bz2 nagios-plugins-1.4.15.tar.gz
[iyunv@slienter mnt]# tar zxvf nagios-3.2.3.tar.gz -C /usr/src/
[iyunv@slienter mnt]# tar zxvf nagios-plugins-1.4.15.tar.gz -C /usr/src/
[iyunv@slienter mnt]# tar jxvf nagios-cn-3.2.3.tar.bz2 -C /usr/src/
5、编译安装主程序:
[iyunv@slienter nagios-3.2.3]# ./configure --prefix=/usr/local/nagios #--prefix用来指定安装目录
[iyunv@slienter nagios-3.2.3]# make all
[iyunv@slienter nagios-3.2.3]# make install
[iyunv@slienter nagios-3.2.3]# make install-init #在/etc/rc.d/init.d/目录下创建启动脚本
[iyunv@slienter nagios-3.2.3]# make install-commandmode #配置目录权限
[iyunv@slienter nagios-3.2.3]# make install-config #安装nagios示例配置文件,这里安装路径为/usr/local/nagios/etc
6、安装插件:
[iyunv@slienter nagios-plugins-1.4.15]# ./configure --prefix=/usr/local/nagios #这里插件安装的位置与nagios相同
[iyunv@slienter nagios-plugins-1.4.15]# make
[iyunv@slienter nagios-plugins-1.4.15]# make install
7、安装汉化插件:
[iyunv@slienter nagios-cn-3.2.3]# ./configure
[iyunv@slienter nagios-cn-3.2.3]# make all
[iyunv@slienter nagios-cn-3.2.3]# make install
8、配置apache:
修改配置文件:
9、添加访问验证:
在apache配置文件中添加:
#nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/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
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/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
</Directory>
创建nagiospwd目录验证文件:
[iyunv@slienter conf]# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd user1
New password:
Re-type new password:
Adding password for user user1
[iyunv@slienter conf]#启动apache ,测试访问:
1、默认的配置文件在/usr/local/nagios/etc目录下;默认的模板文件在/usr/local/nagios/etc/objects目录下
2、由于nagios功能过于强大,模板文件中配置项也是非常繁多,我们这里只做基础的比常用的一些配置。
在templates.cfg中默认定义了通过邮件发送通知,在commands.cgf中默认定义了一些常用的命令,这里我们只需要创建hosts.cfg、services.cfg以及配置contacts.cfg、timeperiods.cfg、cgi.cfg和nagios.cfg即可完成常用的功能。
这里我们一共用到九个配置文件(注意:所有配置文件均放在/usr/local/nagios/etc下),如下图所示:
各个需要配置的配置文件如下: hosts.cfg:
[backcolor=rgb(221, 221, 221) !important]Shell
1
[backcolor=rgb(200, 225, 250) !important]2
3
[backcolor=rgb(200, 225, 250) !important]4
5
[backcolor=rgb(200, 225, 250) !important]6
7
[backcolor=rgb(200, 225, 250) !important]8
9
[backcolor=rgb(200, 225, 250) !important]10
11
|
define host{
[backcolor=rgb(247, 247, 247) !important]use linux-server #这里默认是引用的信息,不用更改
host_name web #定义一个主机名
[backcolor=rgb(247, 247, 247) !important]alias user1-web #定义一个主机别名
address 192.168.1.22 #被监控的主机地址,可以为域名
[backcolor=rgb(247, 247, 247) !important]}
define hostgroup{
[backcolor=rgb(247, 247, 247) !important]hostgroup_name sa-servers #定义一个主机组名
alias sa servers #定义主机组的别名,可以为多个
[backcolor=rgb(247, 247, 247) !important]members web #这里为上面定义的主机名,如果为多个逗号分开
}
|
services.cfg:
[backcolor=rgb(221, 221, 221) !important]Shell
1
[backcolor=rgb(200, 225, 250) !important]2
3
[backcolor=rgb(200, 225, 250) !important]4
5
[backcolor=rgb(200, 225, 250) !important]6
7
[backcolor=rgb(200, 225, 250) !important]8
9
[backcolor=rgb(200, 225, 250) !important]10
11
[backcolor=rgb(200, 225, 250) !important]12
13
|
#####这里我添加了两个监控服务########
[backcolor=rgb(247, 247, 247) !important]define service{
use local-service #这里为引用的信息,不用修改
[backcolor=rgb(247, 247, 247) !important]host_name web #这里为引用hosts.cfg的信息,不用修改
service_description ping #这里为此监控项的说明信息,可以自己定义
[backcolor=rgb(247, 247, 247) !important]check_command check_ping!100.0,20%!500.0,60% #这里为检查的命令,为引用信息,可以参考commands.cfg中的定义命令与参数间以!分隔
}
[backcolor=rgb(247, 247, 247) !important]define service{
use local-service
[backcolor=rgb(247, 247, 247) !important]host_name web
service_description http
[backcolor=rgb(247, 247, 247) !important]check_command check_http
}
|
contacts.cfg:
[backcolor=rgb(221, 221, 221) !important]Shell
1
[backcolor=rgb(200, 225, 250) !important]2
3
[backcolor=rgb(200, 225, 250) !important]4
5
[backcolor=rgb(200, 225, 250) !important]6
7
[backcolor=rgb(200, 225, 250) !important]8
9
[backcolor=rgb(200, 225, 250) !important]10
11
|
define contact{
[backcolor=rgb(247, 247, 247) !important]contact_name nagiosadmin #定义一个联系人名
use generic-contact #这里为引用信息,不用修改
[backcolor=rgb(247, 247, 247) !important]alias slienter #定义一个联系人别名
email 521lybey@163.com #联系人的邮件地址
[backcolor=rgb(247, 247, 247) !important]}
define contactgroup{
[backcolor=rgb(247, 247, 247) !important]contactgroup_name admins #这里引用的联系人组的名称,不用修改
alias Nagios Administrators #定义的别名
[backcolor=rgb(247, 247, 247) !important]members nagiosadmin #引用上面定义的联系人名
}
|
配置完成之后重启nagios和apache我们再次访问就可以看到监控画面了。
检查nagios /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 启动Nagios。 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg 在安装过程中遇到的问题总结一下; (1)配置完Nagios之后页面显示乱码。如图
解决方法: 主要是apache没有开启cgi脚本的缘故 进入apache的主配置文件httpd.conf #LoadModule cgid_module modules/mod_cgid.so #LoadModule actions_module modules/mod_actions.so 将上面2行的#去掉,重启apache就OK了 (2)Nagios 请检查HTTP服务器关于该CGI的访问权限设置。没有监控画面 解决方法: vi /usr/local/nagios/etc/cgi.cfg 将use_authentication的值改为0. use_authentication=0 然后重启nagios服务 service nagios restart |