接触Nagios纯粹是个以外,但既然接触了,就顺带把这次外遇给记录下来。关于Nagios部署的文章比比皆是,对于Nagios是什么和Nagios能做什么等基础问题,可以参考google。
参考
安装环境
1 | Nagios client: windows server 2008, windows 7 ,windows 2003 |
1 | Nagios server: ubuntu 14 |
Nagios client
Nsclient++安装
通过传送门下载并安装Nsclient++,出于实验目的,安装参数如下
Allowed hosts,192.168.3.1
Password,为空
Modules to load,全选
Nsclient++配置
Nsclient++安装完成后并不需要做太多配置就能和Nagios server通信,但是这里有几个坑还是需要注意。
如果开启防火墙,需要根据官方文档开放端口 ——>传送门
网上有文章会提到配置
NSC.ini
文件,而实际上目前版本使用的是nsclient.ini
。windows server 2008 默认禁止ICMP echo,需要在防火墙的入站规则中开启
文件和打印机共享(回显请求)
测试
在Nagios server上使用如下命令测试Nsclient++是否正常运行
1 | telnet clientIP 12489 |
Nagios server
安装Nagios
1 | sudo apt-get install apache2 nagios3 nagios-nrpe-plugin |
命令执行完成后访问 http://serverIP/nagios3
查看是否安装成功
配置Nagios
参考中提到的部分设置并不适用于当前版本,只有熟悉了nagios配置文件之间的关系和host、hostgroup、command、service等概念才能在不同环境下相对自如的配置Nagios。因此,在配置之前推荐阅读 关于nagios的一篇很不错的文章
。
在Nagios成功安装后,需要关注如下目录:
Nagios配置文件目录:/etc/nagios3
Nagios插件command配置目录:/etc/nagios-plugins
Nagios插件目录:/usr/lib/nagios/plugins
Nagios配置文件模板目录: /usr/share/doc/nagios3/examples/template-object
配置apache
Nagios安装后若无法访问 http://serverIP/nagios3
,则需要手动配置apache。 /etc/nagios3
目录下包涵 apache2.conf
文件,只需将该文件Include
到 /etc/apache2/apache2.conf
即可。
1 | Include /etc/nagios3/apache2.conf |
配置htpasswd.users
安装Nagios时设置了访问 http://serverIP/nagios3
的密码,如若忘记,可通过以下命令修改:
1 | #使用htpasswd.user文件完整路径或进入/etc/nagios3目录 |
配置commands.cfg
大多数文章要求我们在 commands.cfg
中增加 check_nt
命令,本人尝试该方法,结果在重启Nagios服务时总是失败。使用如下命令验证 nagios.cfg
出错。
1 | sudo nagios3 -v nagios.cfg |
根据错误提示发现 check_nt
重定义了,原来当前版本在 /etc/nagios-plugins/config/nt.cfg
中已定义了 check_nt
,因此无需再定义 check_nt
。
配置nagios.cfg
将 nagios.cfg
如下两行的注释去掉
1 | cfg_file=/etc/nagios3/objects/templates.cfg |
在 /etc/nagios3
目录下新建 objects
目录,并将 /usr/share/doc/nagios3/examples/template-object
目录下的 templates.cfg
和 windows.cfg
拷贝到 /etc/nagios3/objects
,执行
1 | sudo nagios3 -v nagios.cfg |
提示 generic-host
重定义,发现在 /etc/nagios-plugins/conf.d/generic-host_nagios2.cfg
中已包涵 generic-host
的定义。可以选择删除 generic-host_nagios2.cfg
文件或删除 templates.cfg
中关于 generic-host
的定义。再次执行
1 | sudo nagios3 -v nagios.cfg |
提示 generic-service
重定义, 同上做类似修改即可
再次执行
1 | sudo nagios3 -v nagios.cfg |
通过验证
配置windows.cfg
windows.cfg
默认提供了几个 service
作为测试使用,只需增加 host
并将 host_name
添加到 service
中即可。同时我们可以自定义 service
,关于使用 check_nt
定义 service
可以参考 nagios check_nt使用
。根据实际情况,增加监控 msSQL
进程的 service
代码如下:
#service for mssql
define service{
use generic-service
host_name winserver,win2003
service_description MSSQL
check_command check_nt!PROCSTATE!-d SHOWALL -l sqlservr.exe
}
重启Nagios并访问 http://serverIP/nagios3
,可以查看主机 winserver
和 win2003
的 msSQL
进程是否运行。
总结
折腾Nagios大概花了一天时间,开始的时候完全按照 参考 中的文章做部署,坑很多。于是静下来看Nagios文档,认识Nagios的配置文件,梳理一下Nagios中 host、hostgroup、command、service
等概念。有了这些基础之后,部署Nagios相对轻松了多,遇到问题也能快速排错,应了那句老话:万变不离其宗。如果不去掌握基础,下次在别的机子部署Nagios,可能又会遇到更多坑。