最近刚用了nagios,想总结一下。还以为没什么人用过,搜过后发现还是有些童鞋在用。不过讲Nconf的好像没有,在这发个详细的,免去新手摸索的功夫。
1.
安装

需要先安装puppetwebmin两个软件,上网找吧。安装过程中如果还提示缺什么软件,都上网下载吧,都是开源的。
安装过程的话按INSTALL说明来吧,没什么大问题。
需要修改apache配置

Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
#
SSLRequire SSL


Options None


AllowOverride None


Order allow,deny


Allow from all


AuthName "Nagios Access"


AuthType Basic


AuthUserFile /usr/local/nagios/etc/htpasswd.users


Require valid-user

</Directory>

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/share/cgi-bin"

<Directory "/usr/local/nagios/share/cgi-bin">

Options +ExecCGI


AllowOverride None


Order allow,deny


Allow from all


AuthName "Nagios Access"


AuthType Basic


AuthUserFile /usr/local/nagios/etc/htpasswd.users


Require valid-user

</Directory>

 


装好后登录,首页面设置成仪表盘的形式

 看起来还不错的样子。遗憾的是配置文件是文本的,要手工编辑。而且还有多个,有配主机的、配业务的、配联系人的。我看得头都大了。
 

 

看看,就是那些*.cfg文件。

2.
配置
还好,我又找到了NConf。NConf之于Nagios,就象Cacti之于MRTG(当然这个比喻也不是十分恰当,因为Cacti是可以取代MRTG,而Nconf只是辅助管理Nagios)。可以在图形界面管理要监控的设备和服务,将信息记录在数据库中,这样就清晰多了。
下载NConf 1.2.6,安装过程也算简单,按说明来吧。就是创建MySQL数据库、账号、表,然后改一下nagios.cfg文件中的一些配置文件的路径等等。
修改apache配置

Alias /nconf "/www/nconf"

<Directory "/www/nconf">

Options Indexes MultiViews


AllowOverride None

Order allow,deny

Allow from all
</Directory>

访问NConf界面开始出现了个错误:

修改一下权限:
# chmod 777 /usr/local/nagios/bin/*
就OK了。


看起来把配置文件要配的东西都列在菜单里了。
点“hosts / Show”,列出来主机的情况

 

这些是在数据库里的记录,并不代表是Nagios已经监控的,因为还要根据数据库的信息生成Nagios的配置文件。
点“Generate Nagios config”生成配置文件。

 

一开始老是提示错误,什么不能打开“/www/nconf/temp/test/Default_collector.cfg”。改了N多个配置文件都不管用。最后还是在NConf的论坛找到答案。
手工执行一下“/www/nconf/bin/generate_config.pl”,提示:

[ Initializing NConf perl-API (library version 0.2, written by A. Gargiulo) ]
[ Copyright (c) 2006-2009 Sunrise Communications AG, Zurich, Switzerland
]


Can't load '/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.14: 无法打开共享对象文件: 没有那个文件或目录 at /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/DynaLoader.pm line 230.

at /www/nconf/bin//lib/NConf/DB.pm line 20

Compilation failed in require at /www/nconf/bin//lib/NConf/DB.pm line 20.
BEGIN failed--compilation aborted at /www/nconf/bin//lib/NConf/DB.pm line 20.
Compilation failed in require at /www/nconf/bin//lib/NConf/ExportNagios.pm line 24.
BEGIN failed--compilation aborted at /www/nconf/bin//lib/NConf/ExportNagios.pm line 24.
Compilation failed in require at ./bin/generate_config.pl line 51.
BEGIN failed--compilation aborted at ./bin/generate_config.pl line 51.

找了一下,
'/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so'是有的,libmysqlclient.so.14这个没有,但是有libmysqlclient.so。不管三七二十一,把libmysqlclient.so复制成libmysqlclient.so.14
再执行“/www/nconf/bin/generate_config.pl”,哈哈,成功啦!

再点击“Generate Nagios config”,生成配置文件成功。
但是开始没搞懂怎样把生成的配置文件拷到运行的目录下,查了半天源代码,才看懂。原来生成的配置文件存在output目录下,压缩成NagiosConfig.tgz。需要运行ADD-ONS/deploy_local.sh,才会把文件拷贝解压到运行目录下,并重新加载Nagios配置文件。不过得自己把deploy_local.sh里面的目录改成你配置文件所在的目录。而且似乎deploy_local.sh写得有点问题,因为生成的配置文件压缩成tgz文件,而原来的deploy_local.sh里面用“tar –xf”,不能解压,加上“-z”参数就好了。
我加了主机和服务的监控后Nagios界面如下

呵呵,有小小成就感。
 3.
增加短信通知功能

在“Misccommands”栏中增加一个短信通知命令“notify_host_by_sms”,然后填写短信通知命令行。当然,前提是你要有发短信的接口软件。幸运的是,我恰好有一个。
 

 

在“Contacts”栏中修改联系人的通知方式

重新生成配置文件并部署上去,就OK了。找个不用的IP试试,YES!收到短信了!


为了能够实现不同的主机告警发给不同的手机,在发送短信的命令参数里要引用$CONTACTPAGER$这个宏。关于宏的说明,大家去看看官方文档吧。