nagios 是个企业级的监控方案,随着监控客户端的增加,nagios服务端会面临很大的压力,尤其是IO和CPU的使用率居高不下。

本文采用rpm安装nagios,通过分析,我们发现nagios的读写无非是下面几个文件:

1、/etc/nagios/nagios.cfg

nagios主配置文件,通过监控发现,nagios启动后会反复读取该文件

2、/var/log/nagios/status.dat

这个文件随着status_update_interval 的值进行定期更新

3、/tmp/host-perfdata

主机的可用性统计,每次检查后都要更新

4、/tmp/service-perfdata

服务的可用性统计,每次检查后都要更新

5、/var/log/nagios/objects.cache

这个文件存储nagios的配置,每次重启或重载配置才会被更新

6、/var/log/nagios/nagios.log

nagios日志,不多说

7、/var/log/nagios/spool/checkresults

每次所有的检查结果都在这里汇总

解决方案

将次要且读写频繁的文件放进内存,也就是说,排除主配置文件和日志,其他都放进内存

mount-ttmpfsnone/var/nagiosramdisk-osize=50mmkdir-p-m775/var/nagiosramdisk/tmpmkdir-p-m755/var/nagiosramdisk/spoolmkdir-p-m755/var/nagiosramdisk/spool/checkresultschown-Rnagios.nagios/var/nagiosramdisk

编辑主配置文件nagios.cfg,修改如下值

object_cache_file=/var/nagiosramdisk/objects.cachestatus_file=/var/nagiosramdisk/status.dattemp_path=/var/nagiosramdisk/tmpcheck_result_path=/var/nagiosramdisk/spool/checkresultshost_perfdata_file=/var/nagiosramdisk/host-perfdataservice_perfdata_file=/var/nagiosramdisk/service-perfdata

修改/etc/nagios/objects/commands.cfg

#'process-host-perfdata'commanddefinition"$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n">>/var/nagiosramdisk/host-perfdata.out#'process-service-perfdata'commanddefinition"$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n">>/var/nagiosramdisk/service-perfdata.out

另外,注意修改/usr/share/nagios/html/config.inc.php

重启nagios生效

servicenagiosrestart

开机挂在tmpfs,编辑/etc/fstab

tmpfs /var/nagiosramdisk tmpfs defaults,size=50m 00

翻译来源(有修改和增减)

http://assets.nagios.com/downloads/nagiosxi/docs/Utilizing_A_RAM_Disk_In_NagiosXI.pdf