干了这么多年运维,深知监控工具的重要性,此前接触的有商业产品,也有开源利器。很多ITIL理念的软件,都把监控功能放到重要的位置,毕竟监控是站在最前端的东西,总不能出现问题等到BOSS找你你才知道。一款好的监控软件,不仅能够做到功能齐全,报警方式灵活,还得需要配置简单,管理方便。

    此前的工作使用的是电信的NetCare服务,基本不需要你去做什么,电信有一帮人在24小时帮你盯着,出了问题自然会有短信、电话、邮件一股脑向你涌来。但这些服务却是基于高昂的服务费用,不是一般公司能承担的起。
    这样,就给很多开源的软件提供了生存使用空间。
    屈指数来,比较好用和常用的软件大致有MRTG、CACTI、Ganglia、Nagios。MRTG尽管很多人说它过时了,但作为一款经典的流量监控工具,其简洁的界面,方便的部署还是大有市场的。CACTI作为MRTG的替代升级产品,在外观和功能延伸上有了长足的进步。Ganglia则处于不温不火的状态,乏善可陈,Nagios则一直是监控软件中的宠儿。
    笔者曾亲自搭建过以上诸种监控软件,感觉各有各的复杂。在20110107和20110108两篇文章中分别对ganglia和cacti安装配置做了描述,以下对最近整理的nagios+nagiosql做下描述。
    搜寻了网络上大量的安装配置文档,结合自己的实验,感谢互联网的分享精神,只要你肯学习,肯定就能进步。
    本文档会继续完善,增加短信报警和邮件报警部分内容。

一、Nagios的安装

1、 安装前的准备工作

下载Nagios的安装源代码包,下载最新版本的Nagios、 pluginsnrpeNagiosQLHTML_Template_IT-1.1.tgz

我将需要用到的软件包下载到/root/new-nagios目录下,如图:
Nagios+NagiosQL实战

 

2、 搭建LAMP平台

略。

需要注意的一点,在编译安装PHP时增加参数gettext 、ftp

3、 安装Nagios及插件

3.1、在安装Nagios的时候,创建一个系统用户:nagios

Groupadd nagios

Useradd  -g nagios   nagios  

3.2、安装nagios,先解压压缩包,然后编译、安装,具体命令如下:

Tar  -zxvf  nagios-3.3.1.tar.gz 

Cd  nagios

./configure  --prefix=/usr/local/nagios    (配置nagios安装在/usr/local/nagios目录)

Make  all

Make  install

Make  install-init

Make  install-commandmode

Make  install-config

        3.3、安装nagios的插件,解压压缩包、编译、安装,具体命令如下:

           Tar  -zxvf  nagios-plugins-1.4.15.tar.gz

Cd  nagios-plugins-1.4.15

./configure  --prefix=/usr/local/nagios

Make

Make install

        3.4、修改apache服务器的运行用户为:nagios

             这里需要修改apache服务器的配置文件httpd.onf

             使用vi编辑器打开apache服务器的配置文件,找到如下图所示内容,apache服务器的配置文件位于:/etc/httpd/conf/httpd.conf

修改User   apache     Group   apache  为  User   nagios    Group   nagios

修改apache的配置文件,增加nagios的目录,并且设置访问此目录需要身份验证,打开apache服务器的配置文件,在文件的最后增加如下内容:

Vi  /etc/httpd/conf/httpd.conf

#setting for nagios

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory "/usr/local/nagios/sbin">

    Options ExecCGI

    AllowOverride None

    Order allow,deny

    Allow from all

    AuthName "Nagios Access"

    AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

#用于此目录访问身份验证的文件

    Require valid-user

</Directory>

 

Alias /nagios /usr/local/nagios/share

<Directory "/usr/local/nagios/share">

    Options None

    AllowOverride None

    Order allow,deny

    Allow from all

    AuthName "Nagios Access"

    AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

#用于此目录访问身份验证的文件

    Require valid-user

</Directory>

Nagios+NagiosQL实战

 

3.5、增加验证用户

也就是通过WEB访问nagios的时候,必须使用这个用户登录,在这里我们增加:用户:nagiosadmin   密码:######

使用如下命令:

/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nagiosadmin

New password: (输入#####)

Re-type new password: (再输入一次密码)

查看认证文件的内容:

Less   /usr/local/nagios/etc/htpasswd

nagiosadmin:OmWGEsBnoGpIc  前半部分是用户名admin,后面是加密后的密码

        3.6nagios服务的启动与停止,可以使用如下命令来启动和停止nagios

          启动:service   nagios  start

          停止:service   nagios   stop  

          重启:service   nagios   restart

=======================================================================
如果出现如下的提示修改nagiosshell
Starting nagios:This account is currently not available.
root@bzrWeb1 etc]# service nagios start
Starting nagios:This account is currently not available.
done.

修改/etc/passwd
/sbin/nologin改成/bin/bash

 

打开网页,输入:http://192.168.71.138/nagios
Nagios+NagiosQL实战

在启动nagios之前,先使用如下命令检查nagios主配置文件是否有错:

/usr/local/nagios/bin/nagios -v  /usr/local/nagios/etc/nagios.cfg

如果没有报错,会出现如下信息:

 Nagios+NagiosQL实战

Nagios+NagiosQL实战

如图所示,警告和错误都为0,可以启动nagios

Service   nagios   start

 

二、 nagios的配置

nagiso nagios配置相当麻烦,

做好一次,其余的复制粘贴即可。

Nagios的主配置文件在/usr/local/nagios/etc/nagios.cfg  ,其他的一些配置文件在/usr/local/nagios/etc/objects/目录下。

2、修改nagios的主配置文件nagios.cfg文件

Vi   /usr/local/nagios/etc/nagios.cfg找到如下图所示内容,将#去掉,

cfg_file=/usr/local/nagios/etc/objects/contacts.cfg    //联系人配置文件路径

cfg_file=/usr/local/nagios/etc/objects/commands.cfg     //命令配置文件路径

cfg_file=/usr/local/nagios/etc/objects/localhost.cfg    //主机配置文件路径

cfg_file=/usr/local/nagios/etc/objects/templates.cfg    //摸板配置文件路径

cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg   //监视时段配置文件路径

3、修改CGI脚本控制文件cgi.cfg文件

vi cgi.cfg

第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。先确保use_authentication=1;接下来修改default_user_name=nagios,再后面修改如下内容:

authorized_for_system_information=nagiosadmin

authorized_for_configuration_information=nagiosadmin

authorized_for_system_commands=nagiosadmin #多个用户之间用逗号隔开

authorized_for_all_services=nagiosadmin

authorized_for_all_hosts=nagiosadmin

authorized_for_all_service_commands=nagiosadmin

authorized_for_all_host_commands=nagiosadmin

4timeperiods.cfg等其他配置文件可默认。

Nagios+NagiosQL实战


三、在被监控主机上的设置

增加用户

useradd nagios

设置密码

passwd nagios

2安装nagios插件

解压缩

tar -zxvf nagios-plugins-1.4.9.tar.gz

cd nagios-plugins-1.4.9

编译安装

./configure

make

make install

这一步完成后会在/usr/local/nagios/下生成两个目录libexecshare

[root@dbpi local]# ls /usr/local/nagios/

libexec  share

修改目录权限

[root@dbpi local]# chown nagios.nagios /usr/local/nagios

[root@dbpi local]# chown -R nagios.nagios /usr/local/nagios/libexec

3安装nrpe

解压缩

tar -zxvf nrpe-2.8.1.tar.gz

cd nrpe-2.8.1

编译

./configure –prefix=/usr/local/nagios

输出如下

*** Configuration summary for nrpe 2.8.1 05-10-2007 ***:

 General Options:

 -------------------------

 NRPE port:    5666

 NRPE user:    nagios

 NRPE group:   nagios

 Nagios user:  nagios

 Nagios group: nagios

Review the options above for accuracy.  If they look okay,

type 'make all' to compile the NRPE daemon and client.

可以看到NRPE的端口是5666,下一步是make all

Make  all

输出如下

*** Compile finished ***

If the NRPE daemon and client compiled without any errors, you

can continue with the installation or upgrade process.

Read the PDF documentation (NRPE.pdf) for information on the next

steps you should take to complete the installation or upgrade.

接下来安装NPRE插件,daemon和示例配置文件

安装check_nrpe这个插件

make install-plugin

之前说过监控机需要安装check_nrpe这个插件,被监控机并不需要,我们在这里安装它是为了测试的目的

安装deamon

make install-daemon

安装配置文件

make install-daemon-config

按照安装文档的说明,是将NRPE deamon作为xinetd下的一个服务运行的.在这样的情况下xinetd就必须要先安装好,不过一般系统已经默认装了

4.安装xinetd脚本

[root@dbpi nrpe-2.8.1]# make install-xinetd

输出如下

/usr/bin/install -c -m 644 sample-config/nrpe.xinetd /etc/xinetd.d/nrpe

可以看到创建了这个文件/etc/xinetd.d/nrpe

编辑这个脚本

vi /etc/xinetd.d/nrpe

# default: on

# description: NRPE (Nagios Remote Plugin Executor)

service nrpe

{

        flags           = REUSE

        socket_type     = stream

        port            = 5666

        wait            = no

        user            = nagios

        group           = nagios

        server          = /usr/local/nagios/bin/nrpe

        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd

        log_on_failure  += USERID

        disable         = no

        only_from       = 127.0.0.1在后面增加监控主机的地址(安装nagios的主机IP地址),以空格间隔

}

编辑/etc/services文件,增加NRPE服务

vi /etc/services

增加如下

# Local services

nrpe            5666/tcp                        # nrpe

重启xinetd服务

[root@dbpi nrpe-2.8.1]# service xinetd restart

查看NRPE是否已经启动

[root@dbpi nrpe-2.8.1]# netstat -at|grep nrpe

tcp        0      0 *:nrpe                  *:*                     LISTEN   

[root@dbpi nrpe-2.8.1]# netstat -an|grep 5666

tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN  

可以看到5666端口已经在监听了

5.测试NRPE是否则正常工作

之前我们在安装了check_nrpe这个插件用于测试,现在就是用的时候.执行

/usr/local/nagios/libexec/check_nrpe -H localhost

会返回当前NRPE的版本

/usr/local/nagios/libexec/check_nrpe -H localhost

NRPE v2.8.1

也就是在本地用check_nrpe连接nrpe daemon是正常的

七、NagiosQL 3的安装

二、安装前准备

安装HTML_Template_IT,执行如下命令

# pear install HTML_Template_IT

解压nagiosql_311.tar.gz/usr/local/nagios/nagiosql下。    修改权限,

# chown -R nagios:nagios /usr/local/nagios/nagiosql

修改config目录的访问权限,以使apache对其具有写权限,

# chmod -R 777 /usr/local/nagios/nagiosql/config

创建配置文件目录,并修改权限

# cd /usr/local/nagios/nagiosql/

# mkdir –p ./etc/hosts

# mkdir –p ./etc/services

# mkdir –p ./etc/backup/services

# mkdir -p ./etc/backup/hosts

install下创建ENABLE_INSTALLER文件

$ cd /usr/local/nagios/nagiosql/install

$ touch ./ENABLE_INSTALLER

通过IE浏览器进入如下地址http://192.168.71.138/ nagiosQL,其中IPapache服务主机的IP地址。界面如下。

 

 Nagios+NagiosQL实战 

输入用户名:admin

密码:*******

登陆进去之后开始配置

先点击管理—域—配置localhost

Nagios+NagiosQL实战


出现的几个问题:
1、安装以后点击map会不能显示主机图片 提示500错误,解决办法:

ldd /usr/local/nagios/sbin/statusmap.cgi 查看此文件引用的库是否有缺失。

图片:

 Nagios+NagiosQL实战

显示

libiconv.so.2 => not found没有找到

编辑/etc/ld.so.conf,文件中中加一行/usr/local/lib,运行ldconfig,重启apache。测试正常。

Nagios+NagiosQL实战

2、在为windows客户端做监控的过程中,Nagios报 “NSClient - ERROR: Invalid password”的错误,status

UNKOWN,这错误说的是NSClient的密码不可用。

原因如下:

A.在安装Windows客户端程序NSClient++-的时候设置了密码,在nagios 的配置文件没增加-s PASSWORD造成的。

B.nagios 的配置文件确定不用-s PASSWORD的时候,不小心设置了密码,或者操作失误输入了密码。

 

解决办法:

1.对于A的情况,在nagios 的配置文件没增加-s PASSWORD,重启nagios 服务。

2.对于B的情况, 在windows客户端,打开C:\Program Files\NSClient++\NSC.ini文件,把password那行注释掉,然后重启动NSClient++ 服务。