14.3.2 安装Nagios服务器端
您可以在百度里搜索“跟老男孩学Linux运维:Web集群实战 艾草文学(www.321553.xyz)”查找最新章节!
14.3.2 安装Nagios服务器端
官方安装文档:http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html。[root@nagios-server ~]# cd /home/oldboy/tools/nagios[root@nagios-server nagios]# ls -l #<==执行操作命令后,检查是个好习惯 total6324 -rw-r--r-- 1 root root 6474375 Dec 9 2013oldboy_training_nagios_soft.zip [root@nagios-server nagios]# unzip-q oldboy_training_nagios_soft.zip #<==*.zip格式的文件可用unzip来解压,不能用tar来解压,这点要注意 [root@nagios-server nagios]# cd/home/oldboy/tools/nagios [root@nagios-server nagios]# ls -lnagios-3.5.1.tar.gz -rw-r--r-- 1 root root 1763584 Aug 31 2013nagios-3.5.1.tar.gz [root@nagios-server nagios]# tar xfnagios-3.5.1.tar.gz [root@nagios-server nagios]# cd nagios#<==这里不是传统的nagios-3.5.1目录 [root@nagios-server nagios]#./configure --with-command-group=nagcmd…省略开头… Review the optionsabove for accuracy. If they look okay, type 'make all' to compilethe main program and CGIs. #<==如./configure 命令执行后出现如上两行结尾提示,表示正常[root@nagios-server nagios]# make all…省略开头… Enjoy. #<==如makeall命令执行后出现如上结尾Enjoy.提示,表示正常 [root@nagios-server nagios]# makeinstall…省略开头… make install-init - This installs the init script in/etc/rc.d/init.d make install-commandmode - This installs andconfigures permissions on the directory for holding the externalcommand file make install-config - This installs sample configfiles in /usr/local/nagios/etc make[1]: Leaving directory`/home/oldboy/tools/nagios/nagios' #<==make install命令执行后的正确结尾
提示:如果是编译安装httpd,可以执行./configure--with-command-group=nagcmd--with-httpd-conf=/usr/local/apache2/conf/extra增加一个编译参数,即指定编译NagiosWeb配置的生成路径。
下面根据make install命令执行后的提示继续操作。
[root@nagios-server nagios]# make install-init #<==安装初始化脚本到/etc/rc.d/init.d [root@nagios-server nagios]# makeinstall-config#<==生成Nagios模板配置 文件到/usr/local/nagios/etc[root@nagios-server nagios]# make install-commandmode#<==安装配置目录许可外部命令文件
1.安装Nagios Web配置文件及创建登录用户
接着来安装Nagios Web配置文件(生成Nagios对应于Apache里的配置文件)。
[root@nagios-server nagios]# make install-webconf#<==生成/etc/httpd/conf.d/ nagios.conf配置文件 /usr/bin/install -c -m644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf ***Nagios/Apache conf file installed *** [root@nagios-server nagios]#cd ..
创建Nagios Web监控界面后,登入时会需要用户名及密码,这里分别为oldboy和123456。
[root@nagios-server nagios]# htpasswd -bc/usr/local/nagios/etc/htpasswd.users oldboy 123456 Adding passwordfor user oldboy [root@nagios-server nagios]# cat/usr/local/nagios/etc/htpasswd.users oldboy:kQr1C/cKFPSGQ
提示:为什么要把密码生成到/usr/local/nagios/etc/htpasswd.users里呢?不能改路径么?
这是因为/etc/httpd/conf.d/nagios.conf配置文件已经指定了htpasswd.user路径和文件名,如果想改可以先修改nagios.conf配置,但是没必要改,查看方式如下:
[root@nagios-server nagios]# grep AuthUserFile/etc/httpd/conf.d/nagios.conf AuthUserFile/usr/local/nagios/etc/htpasswd.users AuthUserFile/usr/local/nagios/etc/htpasswd.users
重新加载Apache服务:
[root@nagios-server nagios]# /etc/init.d/httpd reload Reloadinghttpd:
2.添加监控报警信息接收的Email地址
快速修改方法如下:
[root@nagios-server nagios]# sed -i's#nagios@localhost#[email protected]#g'/usr/local/nagios/etc/objects/contacts.cfg [root@nagios-servernagios]# sed -n '35p' /usr/local/nagios/etc/objects/contacts.cfgemail [email protected] ; #<==这里是你的个人QQ啊,不是老师的QQ
或者利用编辑器修改,输入如下命令:
[root@nagios-server nagios]# vi/usr/local/nagios/etc/objects/contacts.cfg +35
修改如下行:
email nagios@localhost
改为:
email [email protected]
保存,退出。
常见的发送邮件方法有两种,一种是启动本机的邮件服务postfix。另外一种是使用网上第三方邮件服务商提供的服务,例如:QQ邮件服务或者网易邮件服务,如果是简单测试,推荐使用网易的126或163的smtp邮件发送服务地址配置。
第一种方法:监控服务器本地开启邮件服务。此功能依赖本机的服务。
[root@nagios-server nagios]# /etc/init.d/postfix start Startingpostfix: [ OK ] [root@nagios-server nagios]# lsof -i :25 COMMANDPID USER FD TYPE DEVICE SIZE/OFF NODE NAME master 11556 root 12uIPv4 61647 0t0 TCP localhost:smtp (LISTEN) master 11556 root 13uIPv6 61649 0t0 TCP localhost:smtp (LISTEN) [root@nagios-servernagios]# chkconfig postfix on [root@nagios-server nagios]#chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on6:off
如果postfix启动比较慢,可以修改/etc/hosts做好本机IP和主机名的映射。
[root@nagios-server nagios]# grep nagios-server /etc/hosts10.0.0.7 nagios-server
发送邮件测试(如图14-7所示):
图14-7 接收Linux mail命令发送的QQ邮件信息
[root@nagios-server nagios]# mail -s "test" [email protected]
提示:此环境下由于没有外网IP,并且邮件服务没有做MX记录及反向解析,因此,所发的邮件经常会收不到或者被当做垃圾邮件。
第二种方法:监控服务器本地开启邮件服务。
使用网上第三方邮件服务商提供的邮箱时,只需修改/etc/mail.rc在最后增加如下两行内容即可:
set [email protected] smtp=smtp.qq.comsetsmtp-auth-user=70271111 smtp-auth-password=123456smtp-auto=login
这个第三方服务选择QQ邮件服务或者网易邮件服务均可,这里选择了QQ邮件服务。
注意这里的[email protected]是作为报警的发件人的,相当于使用70271111用户和123456密码登录QQ信箱,然后给人发信,收件人就是在contact.cfg里定义的。
3.配置启动Apache服务
下面启动Apache服务并加入系统开机自启动:
[root@nagios-server nagios]# /etc/init.d/httpd start Startinghttpd: [root@nagios-server nagios]# /etc/init.d/httpd restartStopping httpd: [ OK ] Starting httpd: [ OK ] [root@nagios-servernagios]# chkconfig httpd on [root@nagios-server nagios]# netstat-lntup|grep httpd tcp 0 0 :::80 :::* LISTEN 11627/httpd#<==80端口存在,即表示Apache 已经启动了。
此时,打开客户端计算机上的浏览器访问http://server-ip/nagios(这里是http://10.0.0.7/nagios)会出现用户名和密码提示窗口(如图14-8所示)。
图14-8 访问Nagios Web界面用户名和密码提示窗口
输入前面生成好的用户名和密码即oldboy和123456。
出现图14-9所示的界面表示Nagios及Nagios的Web环境已经正常了。
图14-9 登录后的Nagios Web界面窗口
4.安装Nagios插件软件包
Nagios插件软件包就是一些实现获取数据信息的命令或程序,通过这些命令或程序,Nagios可以获取到需要的数据,然后进行报警和展示。具体安装过程如下。
首先安装基础依赖包:
[root@nagios-server ~]# yum install perl-devel openssl-devel-y
然后安装Nagios plugins插件包:
[root@nagios-server ~]# cd /home/oldboy/tools/nagios[root@nagios-server nagios]# ls nagios-plugins-1.4.16.tar.gznagios-plugins-1.4.16.tar.gz [root@nagios-server nagios]# tar xfnagios-plugins-1.4.16.tar.gz [root@nagios-server nagios]# cdnagios-plugins-1.4.16 [root@nagios-server nagios-plugins-1.4.16]#./configure --with-nagios-user=nagios --with-nagios-group=nagios--enable-perl-modules --with-mysql #<==如果一行放不下,可以通过反斜线换行输入。[root@nagios-server nagios-plugins-1.4.16]# make
需要说明的是,make过程容易报各种错误!
错误1:
check_http.c: In function 'process_arguments': check_http.c:312:error: 'ssl_version' undeclared (first use in this function)check_http.c:312: error: (Each undeclared identifier is reportedonly once check_http.c:312: error: for each function it appearsin.) make[2]: *** [check_http.o] Error 1 make[2]: Leaving directory`/home/oldboy/tools/nagios/nagios-plugins-1.4.16/plugins' make[1]:*** [all-recursive] Error 1 make[1]: Leaving directory`/home/oldboy/tools/nagios/nagios-plugins-1.4.16' make: *** [all]Error 2
解决办法:
首先执行yum install perl-developenssl-devel-y,然后删除配置的目录,重新配置编译,别忘了指定--with-mysql。
错误2:
Can't run perl Makefile.PL at ../tools/build_perl_modules line68.
解决方法:
yum install perl-devel perl-CPAN –y make make clean
解决make执行错误后,执行如下操作完成安装。
[root@nagios-server nagios-plugins-1.4.16]# make install[root@nagios-server nagios-plugins-1.4.16]# cd ..
此时检查插件个数:
[root@nagios-server nagios-plugins-1.4.16]# ls/usr/local/nagios/libexec/|wc -l 59 #<==多一个少一个都是正常的,不要太在意。
5.安装nrpe软件
可能有读者会问,nrpe是客户端需要安装的软件,为什么还要安装在Nagios服务器端?这是因为:
·Nagios服务器端需要check_nrpe插件做被动检查,如果服务器端不装nrpe软件,就没有check_nrpe这样的检查插件。
·Nagios服务器端本地的资源也需要被监控,因此,Nagios服务器端也会被作为客户端。
nrpe软件的安装非常简单,就不多费笔墨了。安装nrpe软件的命令集如下:
ls /usr/local/nagios/libexec/check_nrpe tar zxvfnrpe-2.12.tar.gz cd nrpe-2.12 ./configure make all makeinstall-plugin make install-daemon make install-daemon-config cd ..ls /usr/local/nagios/libexec/check_nrpe
执行过程如下:
[root@nagios-server nagios]# ls/usr/local/nagios/libexec/check_nrpe ls: cannot access/usr/local/nagios/libexec/check_nrpe: No such file or directory[root@nagios-server nagios]# ls -l nrpe-2.12.tar.gz -rw-r--r-- 1root root 405725 Oct 10 2009 nrpe-2.12.tar.gz [root@nagios-servernagios]# tar xf nrpe-2.12.tar.gz [root@nagios-server nagios]# cdnrpe-2.12 [root@nagios-server nrpe-2.12]# ./configure[root@nagios-server nrpe-2.12]# make all [[email protected]]# make install-plugin [root@nagios-server nrpe-2.12]#make install-daemon [root@nagios-server nrpe-2.12]# makeinstall-daemon-config [root@nagios-server nrpe-2.12]# cd ../
检查check_nrpe插件:
[root@nagios-server nagios]# ls/usr/local/nagios/libexec/check_nrpe/usr/local/nagios/libexec/check_nrpe [root@nagios-server nagios]#ls /usr/local/nagios/libexec/|wc -l 60
提示:生成nrpe的配置文件为/usr/local/nagios/etc/nrpe.cfg。
到此为止,Nagios服务器端的软件安装部分就配置完了。
6.配置并启动Nagios服务
首先添加Nagios服务到开机自启动:
[root@nagios-server nagios]# chkconfig nagios on[root@nagios-server nagios]# chkconfig --list nagios nagios 0:off1:off 2:on 3:on 4:on 5:on 6:off
更好的设置自动开机的方法是:
[root@nagios-server nagios]# echo "/etc/init.d/nagios start">>/etc/rc.local [root@nagios-server nagios]# tail -1/etc/rc.local /etc/init.d/nagios start
然后验证Nagios配置文件(检查语法)。
[root@nagios-server nagios]# /etc/init.d/nagios checkconfig#<==此命令为检查语法的命令,但是只能报告对错无法给出错误的信息 Running configuration check...OK.
可以使用命令行命令检查报错,并输出信息。
[root@nagios-server nagios]# /usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.cfg …省略… Total Warnings: 0 TotalErrors: 0 Things look okay - No serious problems were detectedduring the pre-flight check #<== Total Warnings警告和Total Errors错误都为0,表示配置正常: #<==Total Errors: 如果不为0 必须解决。否则Nagios无法启动。#<==Total Warnings:这个如果不为0可以启动Nagios,可以不理睬。
可以修改/etc/init.d/nagios实现上述命令行检查语法的详细输出,如下:
[root@nagios-server nagios]# /etc/init.d/nagios checkconfigRunning configuration check... OK.#<==此命令默认情况只能判断错误或正确,并不显示错误的详细信息,如果想显示详细错误信息,需要做下简单的特殊处理,详见后文[root@nagios-server nagios]# grep 'checkconfig)' -n -A 2/etc/init.d/nagios 181: checkconfig) 182- printf "Runningconfiguration check..." 183- $NagiosBin -v $NagiosCfgFile >/dev/null 2> #<==删除定向到空的内容,可让报错输出详细信息
删除上述脚本中的>/dev/null 2>,即可检查语法:
[root@server nagios]# /etc/init.d/nagios checkconfig Runningconfiguration check... Nagios Core 3.2.0 Processing object configfile '/usr/local/nagios/etc/objects/commands.cfg'... Processingobject config file '/usr/local/nagios/etc/objects/contacts.cfg'...Processing object config file'/usr/local/nagios/etc/objects/timeperiods.cfg'... Processingobject config file '/usr/local/nagios/etc/objects/templates.cfg'...Processing object config file'/usr/local/nagios/etc/objects/localhost.cfg'... ...skip...Checking for circular paths between hosts... Checking for circularhost and service dependencies... Checking global event handlers...Checking obsessive compulsive processor commands... Checking miscsettings... Total Warnings: 0 Total Errors: 0 Things look okay - Noserious problems were detected during the pre-flight check OK.
之后,启动Nagios服务,命令如下:
[root@nagios-server nagios]# /etc/init.d/nagios start Startingnagios: done.
检查Nagios服务器端进程及端口:
[root@nagios-server nagios]# ps -ef|grep nagios|grep -v grep#<==grep -v grep表示排除自身的这个带grep命令的进程。出现下文中的提示表示Nagios已经启动 nagios22442 1 0 21:46 00:00:00 /usr/local/nagios/bin/nagios -d/usr/local/nagios/etc/nagios.cfg [root@nagios-server nagios]#netstat -lntup|grep nagios#<==没发现Nagios服 务器端有端口
最后浏览NagiosWeb界面检查。打开浏览器访问:http://服务器端ip/nagios会出现如图14-10所示提示。
图14-10 访问Nagios Web界面用户名和密码提示窗口
输入前面生成好的用户名和密码(oldboy和123456)。如果可以登录,并打开Nagios界面就可以了(界面窗口见图14-8)。不过,在登录NagiosWeb界面的过程中,也可能会存在一些出错情况,下面就针对报错故障进行分析。
图14-11 登录后的Nagios Web ISE报错
错误1:出现如图4-11所示的错误提示。
解答:这可能是由于没有关闭SELinux导致。关闭SELinux即可,关闭方法见前文准备部分。
错误2:出现如下报错信息。
[root@lss1 nagios]# htpasswd -bc/usr/local/nagios/etc/htpasswd.users olboy 123456 htpasswd: cannotcreate file /usr/local/nagios/etc/htpasswd.users
解答:安装Nagios服务器端时缺少了如下命令:make install-daemon-config。
错误3:出现如图14-12所示的Forbidden 403错误。
图14-12 登录后的Nagios Web 403报错
解答:Forbidden 403一般是由服务器端权限引起的,解决方法为执行yum installphp-y命令即可。有关Apache和Nginx的403问题,可以参考老男孩的博客文章“Nginx Forbidden403多种原因及故障模拟重现”(http://oldboy.blog.51cto.com/2561410/1633952)和“apacheForbidden403问题精彩总结”(http://oldboy.blog.51cto.com/2561410/581383)。
到此,Nagios服务器端安装及配置就告一段落。 跟老男孩学Linux运维:Web集群实战