一、环境配置
1、系统:CentOS release 5.6 IP:192.168.4.200 主机名:JW01
二、软件下载
Nagios安装至少也应该配置下Apache的Httpd(已装)服务器,否则没有界面,只能靠查看日志去找错误,那就是完全没有意外了。
Nagios下载地址:http://www.nagios.org/download/
nagios-3.4.4.tar.gz nagios-plugins-1.4.16.tar.gz
必须安装GCC!!! 其实,我们的apache可以直接用yum来安装,不必指定路径,就可以直接配置apache了。
三、安装前的准备工作
1、解决安装Nagios的依赖关系:
Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装:
[root@jw01 ~] # yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server
2、所需要安装组件:
服务端所用的安装包为 nagios nagios-plugins ndoutils(非必须)
linux客户端 nrpe
windows客户端 NSClient++
3、进行selinux设置,或者关闭selinux
[root@jw01 ~]# vim /etc/selinux/config |
[root@jw01 ~]# groupadd nagcmd |
四、编译安装nagios
1、安装nagios
[root@jw01 software]# tar -zxvf nagios-3.4.4.tar.gz #解压nagios |
2、验证程序是否安装正确
[root@jw01 nagios]# cd /usr/local/nagios/ [root@jw01 nagios]# ll total 28 drwxrwxr-x 2 nagios nagios 4096 Feb 7 17:00 bin drwxrwxr-x 3 nagios nagios 4096 Feb 7 15:40 etc drwxr-xr-x 2 root root 4096 Feb 7 14:52 include drwxrwxr-x 2 nagios nagios 4096 Feb 7 14:52 libexec drwxrwxr-x 2 nagios nagios 4096 Feb 7 17:00 sbin drwxrwxr-x 11 nagios nagios 4096 Feb 7 17:00 share drwxrwxr-x 5 nagios nagios 4096 Feb 7 14:19 var |
存在 etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。后表是五个目录功能的简要说明:
bin |
|
etc | Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件 |
sbin |
Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录 |
share |
Nagios网页文件所在的目录 |
var | Nagios日志文件、spid 等文件所在的目录 |
五、安装nagios插件
[root@jw01 software]# tar -zxvf nagios-plugins-1.4.16.tar.gz |
说明一下的是在配置过程指定的安装路径是/usr/local/nagios,而不是/usr/local/nagios-plus,安装完成后,将在目录/usr/local/nagios生成目录libexec(里面有很多文件),这正是nagios所需要的。
六、安装Apache (前段时间APACHE已经安装了)
Web服务不是nagios所必须的,但是如果nagios没有web,查看监控对象的对象将是非常费事和没有趣味的事情(只有通过查看nagios的日志来判断状态)。我不愿干特无聊的事,所以就花少许时间把web安装一下。
在unix/linux世界,apache是web服务器的首选对象,其下载网站为www.apache.org 。建议下载源码。因为我们不需要很复杂的web功能,因此简单的执行一下几个步骤就可以正确的把apache安装到系统:
1、安装Apache;
[root@jw01 software]# tar -zxvf httpd-2.2.0.tar.gz |
2、Apache 配置
第一步是修改apache的配置文件httpd.conf,这里的文件路径是/usr/local/apache/conf/httpd.conf 。把apache的运行用户[1]和运行组改成nagios,往下把下面的行追加到文件httpd.conf的末尾:
我自己是写在代理的目录下,效果都是一样的。
[root@jw01 ~]# /usr/local/apache/conf/httpd.conf [root@jw01 conf.d]# pwd |
上述文本块的作用是对nagios的目录进行用户验证,只有合法的授权用户才可以访问nagios的页面文件。第二步是生成用户验证文件:只要执行命令
[root@jw01~]# /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd kuangl |
就会生成web的合法访问用户kuangl;命令交互执行,需要输入2次密码,然后就在文件/usr/local/nagios/etc/htpasswd写入一行-第一个字段是刚生成的用户名,第二个是加密后的密码,如果还要添加更多的用户,执行命令 htpasswd 就不需要选项 “-c”,否则就会覆盖所有已经生成的行。
配置完成后,执行/usr/local/apache/bin/apachctl –t 检查apache配置文件是否有语法错误,无误后用/usr/local/apache/bin/apachctl start & 把apache启动,然后从另外的机器的浏览器输入nagios 的访问地址(如:http://192.168.4.200/nagios),如果正常,将出现下图的登录验证窗口等待用户输入:
七、nagios配置
刚安装完成的nagios,其配置文件的目录是/usr/local/nagios/etc,下图是其etc目录的文件:
[root@jw01 conf.d]# cd /usr/local/nagios/etc/ [root@jw01 etc]# ll total 68 -rw-rw-r-- 1 nagios nagios 11717 Feb 7 17:57 cgi.cfg -rw-r--r-- 1 root root 21 Feb 20 13:47 htpasswd -rw-rw-r-- 1 nagios nagios 44710 Feb 7 14:43 nagios.cfg drwxrwxr-x 2 nagios nagios 4096 Feb 20 15:23 objects -rw-rw---- 1 nagios nagios 1340 Feb 7 14:43 resource.cfg [root@jw01 etc]# |
1、修改nagios的主配置文件nagios.cfg
[root@jw01 etc]# vim nagios.cfg |
2、修改cgi.cfg 配置文件
[root@jw01 etc]# vim cgi.cfg |
3、修改commands.cfg 配置文件,这个文件的主要功能是用来发送报警短信和报警邮件。
[root@jw01 objects]# vim commands.cfg |
修改配置文件或者新增以下内容:
#host-notify-by-sms //发送短信报警 #service notify by sms //发送短信报警
# ‘notify-host-by-email’ command definition define command{ command_name host-notify-by-email command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Typ$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState:$HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” | /bin/mai -s “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTTEMAIL$ } # ’service_notification_commands’ command definition define command{ command_name service-notify-by-email command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Typ$NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$” | /bin/mail -s “** $NOTIFICATIONTYPE$ Service ert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” $CONTACTEMAIL$ } |
4、修改contacts.cfg 配置文件;
define contact{ 在文件最后面修改: define contactgroup{ |
多个成员之间用逗号做分界符,如果有更多的联系组,就依相同的格式在文件中追加余下的组。
5、新增hosts.cfg 配置文件,下面是我定义的两个主机的基本样式;
define host{ define host{ define host{ |
更多的主机依此格式逐个追加进来。
6、新增services.cfg 配置文件,没有这个文件,什么监控也没用。
define service{ #################### jw01 ###################### define service{ define service{ define service{
define service{ define service{ define service{ define service{ define service{ define service{ define service{ |
书写时要注意的是,check_tcp与要监控的服务端口之间要用”!”做分隔符。如果服务太多,以应该考虑用脚本来生成。
7、修改nagios配置文件
[root@jw01 objects]# vim /usr/local/nagios/etc/nagios.cfg
在配置文件里面增加services.cfg、hosts.cfg等文件保存退出!
cfg_file=/usr/local/nagios/etc/objects/commands.cfg # Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //监视时段配置文件路径
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg //本机配置文件路径
8、检查文件配置的正确性
[root@jw01 objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg Total Warnings: 0 Things look okay - No serious problems were detected during the pre-flight check |
这样的情况,大功告成;但我却没有这么幸运,修改了好多个地方才成功。
问题总结:
报错1:Error: Contact group 'admins' specified in service 'Current Load' for host 'localhost' is not defined anywhere!
解决:将templates.cfg配置中的admins组更改为contactgroups.cfg中定义的sysadmin #自己定义的属组
报错2:Error: Service notification command 'service-notify-by-email' specified for contact 'kuangl' is not defined anywhere!
Error: Host notification command 'host-notify-by-email' specified for contact 'kuangl' is not defined anywhere!
解决:在这两条报错证明在commands.cfg里没有定义这两条,在commands.cfg里添加以下内容:
# ‘notify-host-by-email’ command definition define command{ command_name host-notify-by-email command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Typ$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState:$HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” | /bin/mai -s “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTTEMAIL$ } # ’service_notification_commands’ command definition define command{ command_name service-notify-by-email command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Typ$NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$” | /bin/mail -s “** $NOTIFICATIONTYPE$ Service ert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” $CONTACTEMAIL$ } |
报错3:如果提示“You don't have permission to access /nagios/ on this server” 那绝对是你没有配置好php
解决:
[root@jw01 etc]# yum -y install php
报错4:如果提示“Whoops! Error: Could not read object configuration data! ”,这是因为没有启动nagios后台进程,执行以下命令
[root@jw01 objects]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
9、将nagios 作为守护进程
[root@jw01 objects]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg [root@jw01 objects]# ps -ef |grep nagios nagios 8640 1 0 15:25 ? 00:00:00 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg root 11397 5291 0 17:25 pts/1 00:00:00 grep nagios |
10、在IE输入:https://192.168.4.200/nagios/
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。