Nagios的基本思想就是nagios server 获取被监控节点(monitored server)的相关信息,通过CGI(Web GUI)或者邮件等方式展示给管理员。
信息的获取主要分为主动拿,被动得到,其中主动拿分直接去被监控节点取或者中间数据库节点取。
如果是个个被监控节点直接去取,机器一多,nagios所在的系统CPU可能会扛不住,所以我们系统在测试环境中中使用了被动获取NSCA的方式,以后可能会转到NDOUtils方式,通过数据库实现监控端和被监控端的分离。
NSCA具体工作过程:
1. 数据生成: 被监控端程序定时收集数据并发送到Nagios服务端,Nagios服务端的NSCA进程收到数据,数据放到指定文件(nagios.cfg和nsca.cfg中指定)。
2. 数据处理: Nagios实时处理指定文件,将数据存到queue,同时Nagios会定期检查queue,对数据做最终处理,例如:发送alert邮件,记录日志等。
监控系统的最终模式:Nagios + NSCA + Pnp4nagios(bulk&npcd)。
NSCA负责收集数据,Nagios把收集的数据按照Pnp4nagios要求的格式写到spool文件,每隔15分钟把文件移动到npcd处理的spool文件夹,npcd调用process_perfdata.pl处理spool文件夹中的文件,最后存到rrd里,在Nagios监控页面加入pnp4nagios的web访问url,就可以查看图形化监控数据了。
接下来说说我们Nagios的安装,
Nagios Server端安装
一台liunx server(CentOS),安装以下安装包 的的对应版本
1. 基本nagios以及Web GUI安装包
2. 图形化性能数据安装包
主动方式:nrpe-*.tar.gz,被动方式:nsca-*.tar.gz
nsca安装步骤
Note: inetd或者xinetd没有使用在我们的系统中
Nagios monitored Clients
对于NSCA模式,我们使用了Python脚本+Cron Job(crontab)的方式来定时按格式发送数据到Nagios Server,所以被监控设备上面只要安装了Python就可以了。
现在说说在我们系统中如何是用NSCA方式来获取我们需要的被监控节点的资源使用情况信息。
Nagios Server端的基本配置:
1. nagios web gui 访问配置,系统中使用的是nagios core中推荐的配置方式,通过apache httpd访问nagios web,安装nagios的时候会自动寻找系统中安装的httpd,把nagios的httpd文件放到httpd的conf.d目录下,这样,只要生成一次nagios web访问的密码就可以通过http://localhost/nagios/访问nagios web.
# system_1 oam_1</p>
<p>define service{
use passive_service,srv-pnp
service_description CPU_Status
host_name system_1_oam_1
contact_groups system_1_admins,systems_admins
}
define service{
use passive_service,srv-pnp
service_description Memory_Status
host_name system_1_oam_1
contact_groups system_1_admins,systems_admins
}
......</p>
<p># system_1 traffic_1
define service{
use passive_service,srv-pnp
service_description CPU_Status
host_name system_1_traffic_1
contact_groups system_1_admins,systems_admins
}
</div>
Note:
a. passive_service是NSCA需要的配置
b. host-pnp和srv-pnp是pnp4nagios要用的配置
2.2 把定义的配置文件添加到/usr/local/nagios/etc/nagios.cfg中
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg</p>
<p>cfg_file=/usr/local/nagios/etc/objects/system_1.cfg
cfg_file=/usr/local/nagios/etc/objects/system_2.cfg
......
nagios_user=nagios
nagios_group=nagios
lock_file=/usr/local/nagios/var/nagios.lock
status_update_interval=10
</div>
3. 对不同的系统添加系统监控管理员
3.1
4. NSCA配置
4.1 NSCA端:如果没有端口冲突之类的问题,/usr/local/nagios/etc/nsca.cfg可以作为默认配置直接使用
Note: 当Nagios端有问题的时候,nsca本身可以保存收到的数据,要小心数据量大小的问题,监控机器多的时候,Nagios挂的时间长了点,文件就很容易变的很大
4.2 Nagios端:
4.2.1 修改/usr/local/nagios/et