一、nagios简介nagios是一款用于系统和网络监控的应用程序,它可以在你的设定的条件下对主机和服务进行监控,在状态变差和变好的时候可以给管理员出告警信息。nagios所需要的运行条件是机器必须可以运行linux(或是unix变种)并且有c语言编译器。你必须正确地配置tcp/ip协议栈以使大多数的服务检测可以通过网络得以进行。如果需要正确地配置nagios里的cgis程序,必须安装以下这些软件:web服务(最好是apache)thomas boutell制作的gd库版本应是1.6.3或更高(在cgis程序模块statusmap和trends这两个模块里需要这个库)还有一个就是ssl这一个工具,在安装nrpe这一个包时需要,因为在监控其他主机的时候是通过ssl连接来接收数据的;网络环境:主机IPOS角色nagios192.168.0.10rhel5.1监控服务器win2003192.168.0.100windows server 2003被监控主机linux192.168.0.102rhel5.1被监控主机准备软件:apache2.2.14//下载地址http://httpd.apache.org/download.cginagios3.2.0nagios plugins1.4.14nrpe2.12上面三个都可以在这个网站上找到http://www.nagios.org/downloadnsclient++-0.3.6-win32.msi//如果要监控windows的主机,还要下载nsclient这一个客户端工具,下载地址:http://sourceforge.net/projects/nscplus/确认邮件是否能正常发送,我用的是sendmail,确认服务已经启动,下面发一封测试邮件到指定邮箱:mail �Cs “this is test mail” [email protected]this is nagios test mailok按ctrl + d 结束输入。检查一下自大的邮箱,看到邮件之后就可以继续以下的环节了。
把所有的工具都下载到src目录下面:wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gzwget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gzwget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gzwget http://apache.etoak.com/httpd/httpd-2.2.14.tar.gz二、开始安装1、安装apachetarxvfhttpd-2.2.14.tar.gzcdhttpd-2.2.14./configure--prefix=/usr/local/apache2makemake install/usr/local/apache/bin/apachectl start//由于是没有改动的配置文件,可以直接启动netstat �Can |grep 80//检查80端口是否已经开启了或者是在别的机子上输入服务器的ip地址,当看到”it works!”时表明apache已经安装成功了2、安装nagios先添加一个nagios的账号useradd nagios -s /sbin/nologin//有的文章说要启用账号,其实不用也可以,因为这个账号不需要登录tarxvfnagios-3.2.0.tar.gzcdnagios-3.2.0./configure--prefix=/usr/local/nagios--with-nagios-user=nagios --with-nagios-group=nagiosmake allmake installmake install-init//在/etc/rc.d/init.d安装启动脚本make install-config//安装示例配置文件,安装的路径是/usr/local/nagios/etcmake install-commandmode//配置目录权限安装完成nagios后就可以在/usr/local/nagios下面看到这几个目录:bin存放nagios执行程序,nagios文件为主程序etc配置文件存放目录libexec存放一些脚本程序sbincgi文件所在目录,也就是执行外部命令所需文件所在的目录share网页文件存放位置var日志文件、spid 等文件所在的目录3、安装nagios插件tar xvfnagios-plugins-1.4.14.tar.gzcd nagios-plugins-1.4.14./configure--prefix=/usr/local/nagios//注意了,是放在/usr/local/nagios 里,别搞错了makemake installchown �CR nagios:nagios /usr/local/nagios//改一下文件的属组#这样的话那些插件都会扔到nagios/libexec下面去三、修改配置文件1、修改apache的配置文件,我只把改的地方贴出来vi/usr/local/apache2/conf/httpd.confUser nagios//把apache运行用户改成 nagiosGroup nagios//把apache运行组改成 naios#把下面的内容增加到文件的最后:Scriptalias /nagios/cgi-bin /usr/local/nagios/sbin<directory "/usr/local/nagios/sbin">Authtype basicOptions execcgiAllowoverride noneOrder allow,denyAllow from allAuthname "nagios access"Authuserfile /usr/local/nagios/etc/htpasswd//用于此目录访问身份验证的文件Require valid-user</directory>Alias /nagios /usr/local/nagios/share<directory "/usr/local/nagios/share">Authtype basicOptions noneAllowoverride noneOrder allow,denyAllow from allAuthname "nagios access"Authuserfile /usr/local/nagios/etc/htpasswd//用于此目录访问身份验证的文件Require valid-user</directory>别忘记了重启apache服务喔。。。。2、修改cgi脚本控制文件cgi.cfgvi/usr/local/nagios/etc/cgi.cfguse_authentication=1//打开验证default_user_name=testauthorized_for_system_information=nagiosadmin,testauthorized_for_configuration_information=nagiosadmin,testauthorized_for_system_commands=nagiosadmin,testauthorized_for_all_services=nagiosadmin,testauthorized_for_all_hosts=nagiosadmin,testauthorized_for_all_service_commands=nagiosadmin,testauthorized_for_all_host_commands=nagiosadmin,test//这里添加的用户”test”可以通过浏览器对nagios服务的关闭、重启等操作,在这里为了安全也可以把nagiosadmin这一个用户给删掉,如果有多个用户用逗号隔开,如:nagiosadmin,test/usr/local/apache2/bin/htpasswd �\c /usr/local/nagios/etc/htpasswd testnew password: 输入你的密码re�\type new password: 再次确认adding password for user test//这里给前面添加的用户设置密码测试一下,输入你的http://你的服务器IP/nagios之后会弹出以下界面:在这里输入你刚刚设置的用户名密码,就可以登录你的监控平台了,如下:由于我们目前是没有监控任何的主机,所以目前还是看不到什么有用的东西的。所以说呢,接下来继续配置其他的配置文件;3、配置nagios主配置文件在这里定义后面的配置文件的保存路径,下面只贴修改部分vi /usr/local/nagios/etc/nagios.cfgcfg_file=/usr/local/nagios/etc/objects/commands.cfg#cfg_file=/usr/local/nagios/etc/objects/contacts.cfg //这一行注释掉,为了方便管理,我们重新写一个联系人的配置文件cfg_file=/usr/local/nagios/etc/contacts.cfg//指定联系人配置文件路径cfg_file=/usr/local/nagios/etc/contactgroups.cfg //指定联系人组配置文件路径#cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg//注释掉,用自己写的监视时段配置文件cfg_file=/usr/local/nagios/etc/timeperiods.cfg //指定监视时段配置文件路径cfg_file=/usr/local/nagios/etc/objects/templates.cfg//指定临时配置文件路径cfg_file=/usr/local/nagios/etc/services.cfg//服务配置文件路径#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg //注释掉,cfg_file=/usr/local/nagios/etc/hosts.cfg//主机配置文件路径cfg_file=/usr/local/nagios/etc/hostgroups.cfg//主机组配置文件路径check_external_commands=1//在web界面下重启nagios,停止主机/服务检查操作,默认关闭;command_check_interval=10s//定义这个命令检查时间间隔,默认是1秒;4、配置timeperiods.cfg文件这是个服务器监控时间段的配置文件,一般都是全天24小时,名称是24x7;vi /usr/local/nagios/etc/timeperiods.cfgdefine timeperiod{timeperiod_name24x7alias24 hours a day,7days a weeksunday00:00-24:00monday00:00-24:00tuesday00:00-24:00wednesday00:00-24:00thursday00:00-24:00friday00:00-24:00saturday00:00-24:00}在这里要注意时间段名称那里的后面不能有空格出现,5、创建联系人配置文件,contacts.cfgvi /usr/local/nagios/etc/contacts.cfgdefine contact {contact_namekytestaliassystem administratorservice_notification_period24x7host_notification_period24x7service_notification_optionsw,u,c,rhost_notification_optionsd,u,rservice_notification_commandsnotify-service-by-emailhost_notification_commandsnotify-host-by-email[email protected]# pager13800138000}创建一个名为kytest的联系人,下面列出其中几个重要选项的说明#服务出了状况通知的时间段,这个时间段是前面timeperiods.cfg里面定义的。service_notification_period24x7#主机出现状况时通知的时间段,这个时间段是前面timeperiods.cfg里面定义的。host_notification_period24x7#当服务出现w―报警(warning),u―未知(unkown),c―严重(critical),r―从异常恢复到正常,在这四种情况下通知联系人service_notification_optionsw,u,c,r#当主机出现d----―当机(down),u―返回不可达(unreachable),r―从异常情况恢复正常,在这3种情况下通知联系人host_notification_optionsd,u,r#服务出问题通知采用的命令notify-service-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件. 在nagios2.x的版本上可以不一样,可以自己到commands.cfg里看一下;在这里也可以设置发送短信的方式通知联系人,前提是你要配置有发送知道的脚本,还要到commands.cfg里面添加发送脚本所用到的命令;service_notification_commandsnotify-service-by-email#同上,主机出问题时采用的也是发邮件的方式通知联系人host_notification_commandsnotify-host-by-email#指定联系的人email地址[email protected]#联系人的手机,前提是要支持短信通知,这里没有启用通过手机短信的方式发送警报pager13800138000如果有多个联系人的话,可以通过复制来创建多个联系人;6、创建联系人组配置文件,contactgroups.cfg ,把多个联系人加到一个组里面;vi/usr/local/nagios/etc/contactgroups.cfgdefine contactgroup{contactgroup_namesagroupaliassystem administrator groupmemberskytest}注意:members选项里面的联系人在contacts.cfgj里面要要定义,多个联系从之间用逗号隔开;7、创建hosts.cfg主机配置文件vi/usr/local/nagios/etc/hostgroups.cfgdefine host{host_namenagios-server//被监控主机的名称,后面不能带空格aliasnagios server//别名address192.168.0.10//被监控主机的ip地址,这里是监控本机contact_groupssagroup//联系人组,是在前面contactgroups.cfgj里面定义的组check_commandcheck-host-alive//检查主机是否存活,命令来自commadns.cfg文件max_check_attempts5//检查失败后重试次数notification_interval10//提醒的间隔,每隔10秒提醒一次notification_period24x7 //提醒的周期,24x7这个时间段来自timeperiods.cfg里的定义notification_optionsd,u,r//在什么时候提醒,详见contacts.cfg部分的介绍}define host{host_namewin2003aliasweb serveraddress192.168.0.100//这是我的windows 2003的服务器,contact_groupssagroupcheck_commandcheck-host-alivemax_check_attempts5notification_interval10notification_period24x7notification_optionsd,u,r}define host{host_namelinuxaliasweb serveraddress192.168.0.102//被监控的linux服务器contact_groupssagroupcheck_commandcheck-host-alivemax_check_attempts5notification_interval10notification_period24x7notification_optionsd,u,r}在这里我定义了三台主机,只是作一个例子;如果你有更多的主机可以通过复制来添加主机,再修改一下相应的位置就可以了;8、创建hostgroups.cfg文件vi/usr/local/nagios/etc/hostgroups.cfgdefine hostgroup{hostgroup_namesa-serversaliassa serversmembersnagios-server,win2003,linux}这个跟联系人组配置差不多,要是有多台主机可以用逗号隔开;members里的主机成员必须也是要在hosts.cfg里面定义的,其实这个文件也可以不要;ok,到这里就差可以说是完成了最基础的一部份了,现在就是最关键的一部分了,前面已经定义好了联系人,被监控主机,但是还没有定义好要监控主机上的什么东东;现在在这一部分就可以对主机上的各种信息进行监控,nagios监控的信息主要有:本地资源,对外的服务等;本地资源主要包括cpu,硬盘,swap,内存等;对外服务有web,fpt,smtp,pop3等;