Nagios是一个开源的,企业级系统监控系统,可以监控主机状态,大量知名服务状态,以及网络状态。对于不在默认模板范围之内的服务,还可以自己写插件来完成,稍微做一些修改,就可以充当HA的功能了。
我的这次测试是在ubuntu 8.10下完成的,步骤如下:
- 下载nagios程序,nagios已经在ubuntu仓库里了,只需要
apt-get nagios3*就好了。 - 把
/etc/nagios3/apache2.conf文件拷贝一份到/etc/apache2/sites-available下,假设取名为nagios3,然后链接到/etc/apache2/sites-enabled/下(记得完成这个步骤是site-enable的工具来做的,但是找不到了是a2ensite) - 在
/etc/nagios3/下创建一个htpasswd类型文件htpasswd -c htpasswd.users mlsx - 重启apache,访问http://localhost/nagios3/,看看是不是弹出一个认证对话框,填写步骤3)输入的账号以及密码,顺利的话,你应该可以看到nagios的画面,默认的情况下,可以看到本机监控信息,包括网络,磁盘空间状态等,同时还可以看到网关的一个网络状态。
添加我们需要监控的主机,这里我们采用nagios3自带的默认,现在我们添加两台机器,都监控sshd服务和httpd服务。 创建
/etc/nagios3/conf.d/custom.cfg文件,内容如下:#定义要监控的主机 define host{ use generic-host ;使用的模板,见generic-host_nagios2.cfg host_name dc5sp2 ;主机的名字 alias dc5sp2 ;主机别名 address 192.168.122.2 ;主机IP地址 } define host{ use generic-host host_name axs3 alias Asianux 3.0 address 192.168.122.3 } #定义我们要监控的服务 define service{ use generic-service ;监控使用的模板,见generic-service_nagios2.cfg hostgroup_name all ;这个服务针对哪些机器有效,这里是利用了 hostgroups_nagios2.cfg \ ;里定义的主机组,你也可以直接列举主机名,用逗号隔开,比如dc5sp2,axs3 check_command check_host_alive ;定义监控的服务,这里是监控主机的活动状态(down or up) } define service{ use generic-service hostgroup_name all service_description ssh service heck_command check_ssh ;监控ssh服务的状态,如果端口默认的22,那就加上!port } define service{ use generic-service hostgroup_name all service_description http server check_command check_http ;监控http服务的状态, }刷新浏览器,现在你应该可以看到主机名为dc5sp2和axs3的状态了,下面是我的一个截图 从这个图片可以看出axs3这台机器没有开机或者网络出现了故障,反正是找不到了,而dc5sp2内,sshd服务是好的,但是httpd服务不正常。
以上其实只是一个非常简单的配置,nagios的手册上详细描述了各种监控的配置情况,我们可以看看
/usr/lib/nagios/plugins目录下看看,就知道它可以监控多少种类型的服务了,我这里列举一下:check_apt check_http check_nntp check_smtp check_bgpstate check_icmp check_nntps check_snmp check_breeze check_ide_smart check_nt check_spop check_by_ssh check_ifoperstatus check_ntp check_ssh check_clamd check_ifstatus check_ntp_peer check_ssmtp check_cluster check_imap check_ntp_time check_swap check_dhcp check_ircd check_nwstat check_tcp check_dig check_jabber check_oracle check_time check_disk check_ldap check_overcr check_udp check_disk_smb check_ldaps check_pgsql check_ups check_dns check_load check_ping check_users check_dummy check_log check_pop check_wave check_file_age check_mailq check_procs negate check_flexlm check_mrtg check_radius urlize check_fping check_mrtgtraf check_real utils.pm check_ftp check_mysql check_rpc utils.sh check_game check_mysql_query check_sensors check_hpjd check_nagios check_simap