分享

Nagios 3.0 安装配置手册

 忧郁_小刚 2010-11-11

Nagios 3.0 安装配置手册

默认分类 2008-11-08 11:08:30 阅读114 评论0   字号: 订阅

一、前言

Nagios是什么它有什么用

cacti采用的是snmp不需要安装agent,一般用来监控网络流量。

nagios可以用snmp也可以用nrpe,nsclient等来获取信息更多的是采用后者使用其强大的插件模块。一般用来监控进程、服务。

 

二、实验环境:

主机

操作系统

IP

备注

Nagios-server

RHEL 4

192.168.112.30

监控服务器

Server

RHEL 4

192.168.112.112

被监控的LINUX主机

Win2003-server

Windows 2003

192.168.112.113

被监控的Windows主机

 

三、Nagios定义的监控状态

nagios定义了4中监控状态,代表不同的严重级别,除了OK代表正常不用关心外,其余3种都要引起重视.

状态

代码

颜色

正常

OK

绿色,

警告

WARNING

黄色,

严重

CRITICAL

红色,

未知错误

UNKOWN

深黄色

 

四、使用到的软件

nagios-3.0.2.tar.gz                 (Nagios 主程序)

nagios-plugins-1.4.13.tar.gz            Nagios 插件

nrpe-2.8.1.tar.gz                   Nix 客户端通信程序

NSClient++-Win32-0.3.5              Win 客户端通信程序

apache (httpd-2.2.10.tar)               Web Service

 

五、nagios-server安装

useradd nagios

mkdir /usr/local/nagios

chown nagios.nagios /usr/local/nagios

 

tar zxvf nagios-3.0.2.tar.gz

cd nagios-3.0.2

./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include/

make all

make install                    (安装主程序,CGIHTML文件)

make install-init           ( /etc/rc.d/init.d 安装启动脚本)

make install-commandmode        (为外部命令文件配置目录权限)

make install-config         (安装示例配置文件)

# make install-webconf      (安装Nagios接口配置文件模板,此模板需要手动添加进httpd.conf才可以生效。 默认安装位置:/etc/httpd/conf.d      安装之前先:mkdir /etc/httpd/conf.d -p)

然后是验证程序是否被正确安装。切换目录到安装路径(这里是/usr/local/nagios),看是否存在 etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。下表是五个目录功能的简要说明:

 

bin

Nagios执行程序所在目录,nagios文件即为主程序

etc

Nagios配置文件位置,初始安装完后,只有几个*.cfg文件

sbin

Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录

Share

Nagios网页文件所在的目录

Var

Nagios日志文件、spid 等文件所在的目录

var/archives

archived logs 日志创建的空目录

var/rw

external command file 文件创建的空目录

 

 

六、安装nagios插件

tar zxvf nagios-plugins-1.4.11.tar.gz

cd nagios-plugins-1.4.11

./configure--prefix=/usr/local/nagios --enable-redhat-pthread-workaround

make all

make install

(插件是计算机软件中的一种特殊程序,它不能单独执行,而必须依赖于某个软件.在其他软件的环境下,方可以调用.

安装完成后查看下libexec下面是否有插件

ls /usr/local/nagios/libexec/

 

安装Nrpe服务(服务端非必须,推荐安装!)

tar zxvf nrpe-2.8.1.tar.gz

cd nrpe-2.8.1

./configure prefix=/usr/local/nagios       [./configure --enable-ssl  --enable-command-args]

make all                                    (编译)

make install-plugin                     (安装插件)

make install-daemon                     (安装 nrpe daemon

make install-daemon-config              (安装配置文件)

make install-xinetd                     安装xinetd 脚本文件

添加 nrpe 服务到xinetd

vi /etc/services

nrpe       5666/tcp           # nrpe

 

重新启动Xinetd服务

service xinetd restart

 

测试Nrpe是否能正常工作

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

 

守护进程:

首先xinetd 是一大堆服务的管理程序/etc/services,比如telnet,ftp等。如果每个服务一个守护进程,太占用资源。 所以就用xinetd统一监听端口,有人用了再把服务启起来。在linux中一些不长期使用的服务没有被作为单独的守护进程在开机时启用,linux把这些服务监听端口全部由一个独立的进程xinetd集中监听,当收到相应的客户端请求之后,xinetd进程就临时启动相应服务并把相应端口移交给相应服务,客户端断开之后,相应的服务进程结束,xinetd继续监听。把一个服务配置成xinetd监听的服务后可以在 setup 中设置是否开机启动,如nrpe!

 

所有结尾带d的程序都是daemon程序,也就是守护进程的程序,同样,xinetd也是一个daemon程序。

守护程序分为2种处理模式:

第一个是stand alone状态的,表示该程序始终监听,一直处于运行状态,例如httpd

第二个是super daemon,它始终处于sleep状态,直到有人唤醒它,xinetd就是一个super daemon,但它的使命是将一个请求转给其他服务,是服务的管理者。

 

七、安装Apache服务 (略)

 

 

八、修改Apache配置

修改apache的配置文件,增加nagios的目录,并且访问此目录需要进行身份验证。

(注:如果不要设置身份验证,在httpd.conf 最后增加的内容注释掉红色字体部分)

 

vi /usr/local/apache/conf/httpd.conf

 

#======================= Nagios Suport =========================#

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

 

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

#  SSLRequireSSL

   Options ExecCGI

   AllowOverride None

   Order allow,deny

   Allow from all

#  Order deny,allow

#  Deny from all

#  Allow from 127.0.0.1

   AuthName "Nagios Access"

   AuthType Basic

   AuthUserFile /usr/local/nagios/etc/htpasswd.zhaohang

#   AuthUserFile /usr/local/nagios/etc/htpasswd.admin

   Require valid-user

</Directory>

 

Alias /nagios "/usr/local/nagios/share"

 

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

#  SSLRequireSSL

   Options None

   AllowOverride None

   Order allow,deny

   Allow from all

#  Order deny,allow

#  Deny from all

#  Allow from 127.0.0.1

   AuthName "Nagios Access"

   AuthType Basic

   AuthUserFile /usr/local/nagios/etc/htpasswd.zhaohang

#   AuthUserFile /usr/local/nagios/etc/htpasswd.admin

   Require valid-user

</Directory>

#======================= Nagios Suport =========================#

 

 

增加验证用户: 也就是通过web访问nagios的时候,必须要使用用这个用户才可以登陆,有时为了长时间监控刷新,避免输入密码麻烦就不加密码.注释红的行可以达到要求.    用户:zhaohang   密码为:123456

/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.zhaohang zhaohang

# /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.admin    admin

 

查看认证文件的内容

less  /usr/local/nagios/etc/htpasswd.zhaohang

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

到这里为止nagios的安装也就基本完成了,你可以通过web来访问了。

http://192.168.0.108/nagios/

 

 

九、Nagios配置

修改报警信息发送的邮箱地址:

vi /usr/local/nagios/etc/objects/contacts.cfg

 

Nagios有一个很好的检测程序,可以用来检测你的Nagios配置是否正确:

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

Total Warnings: 0

Total Errors:   0

则说明你的 Nagios 配置没有问题,可以正常启动!

 

可以用以下方法启动Nagios

/etc/rc.d/init.d/nagios start/stop/status

service nagios start/stop/status

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

 

 

十、监控Linux服务器

 

客户端配置:

建用户:

useradd nagios  (可以在 /etc/password 里修改此帐户的shell为 /sbin/nologin)

passwd nagios

 

安装插件:

tar zxvf nagios-plugins-1.4.11.tar.gz

cd nagios-plugins-1.4.11

./configure--prefix=/usr/local/nagios --enable-redhat-pthread-workaround

make all

make install

 

修改权限

chown nagios:nagios /usr/local/nagios R

 

安装Nrpe服务

tar zxvf nrpe-2.8.1.tar.gz

cd nrpe-2.8.1

./configure prefix=/usr/local/nagios       [./configure --enable-ssl  --enable-command-args]

make all                                    (编译)

make install-plugin                     (安装插件)

make install-daemon                     (安装 nrpe daemon

make install-daemon-config              (安装配置文件)

make install-xinetd                     (安装xinetd 脚本文件)

 

添加服务器IP:

vi /etc/xinetd.d/nrpe

only_from       = 127.0.0.1 192.168.0.108

 

添加 nrpe 服务:

vi /etc/services

Nrpe       5666/tcp           # nrpe

 

重新启动Xinetd服务:

service xinetd restart

 

查看Nrpe服务是否开启:

netstat -ant|grep 5666

 

测试Nrpe是否能正常工作:

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

NRPE v2.8.1     (这表示在本地用check_nrpe连接nrpe daemon是正常的)

 

 

服务端配置:

A 拷贝 localhost.cfg 模板文件,对192.168.112.101进行监控:

cp /usr/local/nagios/etc/localhost.cfg  /usr/local/nagios/etc/192.168.112.101.cfg

vi 192.168.112.101.cfg

修改配置(主机名、IP、别名)

 

B 192.168.112.101.cfg 加入nagios 主配置文件:

vi /usr/local/nagios/etc/nagios.cfg

cfg_file=/usr/local/nagios/etc/objects/192.168.112.101.cfg

 

C 验证配置文件是否正确,并重启:

/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/object/nagios.cfg

Service nagios restart           (重启nagios 使配置生效)

 

D 查看naigios监控页面,发现主机已经被正常添加。

 

========================================================================================================

服务端增加监控服务(非必须):

Command.cfg文件中增加check_nrpe的功能

vi /usr/local/nagios/etc/commands.cfg

define command{

        command_name check_nrpe

        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

        }

注意-c后面带的$ARG1$参数是传给nrpe daemon执行的检测命令,services.cfg中使用check_nrpe的时候要用!带上这个参数。

额外知识点:

vi /usr/local/nagios/etc/nrpe.cfg

找到以下这段内容

# The following examples use hardcoded command arguments...

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10

command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20

command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1

command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z

command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

 

[] 是命令名,也就是check_nrpe -c参数可以接的内容,=后面是实际执行的插件程序commands.cfg中定义命令的形式十分相似,只不过是写在了一行.

也就是说check_users就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10的简称.

 

我们可以很容易知道上面这5行定义的命令分别是检测登陆用户数,cpu负载,hda1的容量,僵尸进程,总进程数.用法: ./check_load --help

由于-c后面只能接nrpe.cfg中定义的命令,也就是说现在我们只能用上面定义的这五条命令。

========================================================================================================

 

 

 

 

 

 

 

 

十一、监控Windows服务器

 

在nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的,其功能类似于第十章讲的check_nrpe.不过还需要搭配另外一个软件NSClient,它的功能类似于NRPE。

NSClient与Nrpe最大的区别就是:

--被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的.当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控.

--NSClient则不同,被监控机上只安装NSClient,没有任何的插件.当监控主机将监控请求发给NSClient后,NSClient直接完成监控,所有的监控是由NSClient完成的.

这也说明了NSClient的一个很大的问题,不灵活,没有可扩展性.它只能完成自己本身包含的监控操作,不能由一些插件来扩展.好在NSClient已经做的不错了,基本上可以完全满足我们的监控需要。

客户端:

在官方站点http://www.下载 NSClient 最新版本(NSClient++-Win32-0.3.5)

cd nsclient++

nsclient++ /install

services.msc à nsclientpp à 登录 à 勾选允许桌面与服务器交互 à 应用 à 确定

nsclient++ /start

nsclient++ /stop

编辑 nsclient++/nsc.ini

 

1[modules]  部分的所有模块前面的注释都去掉,除了CheckWMI.dll and RemoteConfiguration.dll这两个。

2[Settings] 部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码。这里我们不要密码!

3[Settings] 部分'allowed_hosts'选项的注释去掉,并加上监控主机的IP。如:allowed_hosts=127.0.0.1,192.168.1.0/24,222.73.231.21/32

 以逗号相隔. 如果这个地方是空白则表示所有的主机都可以连接上来.

注意是[Settings]部分的,因为[NSClient]部分也有这个选项.

4[NSClient] 'port'选项必须保证没有被注释,并且它的值是'12489',这是NSClient的默认监听端口。

 

 

nsclient++ /start

netstat –an       查看端口 12489 是否正常监听!

 

check_command           check_nt!UPTIME               监控windows服务器运行的时间

check_command           check_nt!CPULOAD!-l 5,80,90   监控Windows服务器的CPU负载

check_command           check_nt!MEMUSE!-w 80 -c 90   监控Windows服务器的内存

check_command           check_nt!USEDDISKSPACE!-l c -w 80 -c 90   监控Windows服务器C空间

check_command           check_nt!SERVICESTATE!-d SHOWALL -l telnet    监控telnet服务的状态

check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe 监控Explorer进程状态

 

服务端:

A 拷贝 windows.cfg 模板文件,对192.168.112.103进行监控:

cp /usr/local/nagios/etc/windows.cfg  /usr/local/nagios/etc/192.168.112.103.cfg

vi 192.168.112.103.cfg

修改配置(主机名、IP、别名)

 

B 192.168.112.103.cfg 加入nagios 主配置文件:

vi /usr/local/nagios/etc/nagios.cfg

cfg_file=/usr/local/nagios/etc/objects/192.168.112.103.cfg

 

C 验证配置文件是否正确,并重启:

/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/object/nagios.cfg       (检查配置文件是否正确)

Service nagios restart           (重启nagios 使配置生效)

 

D 查看naigios监控页面,发现主机已经被正常添加。

 

 

 

 

 

 

Nagios 问题处理:

1、监控状态不正常怎么办?

答、建议从本机手动check看看结果,检查防火墙等防止端口被阻止访问,造成监控失误。

 

2、nrpe在 ./configure时提示:

checking for SSL... configure: error: Cannot find ssl libraries

答、把openssl-devel装上就可以了.

 

3nagios web界面提示

It appears as though you do not have permission to view information for any of the services you requested...

答、打开cgi.cfg配置文件, use_authentication=1

为了保障系统的安全性,nagios设置了这个参数,默认为1,改为0即可。

 

4、如果NSClient设置了连接需要密码或者改变了端口,哪么服务器应该怎么连接?

答、$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$

    -p 指定 port    -s   指定 password

 

5Service Commands Enable notifications for this service时报错:

Sorry Dave, I can't let you do that...

It seems that you have chosen to not use the authentication functionality of the CGIs.

答、修改cgi.cfg文件

修改use_authentication=1 (默认) 如果没有添加重启nagios服务。

 

6、监控mysql的时候提示错误:is not allowed to connect to this MySQL server

Server (nagios服务端192.168.0.132)

#/usr/local/nagios/libexec/check_mysql -H 192.168.0.207 -u root -p xukixu

此时可能会出现错误Host '192.168.0.132' is not allowed to connect to this MySQL server

答、在客户端client(192.168.0.207)做个mysql授权用户访问即可

mysql>grant all privileges on *.* to root@192.168.0.132 identified by '123456';

mysql>flush privileges;

 

7、如何添加一台监控 38101 端口的Linux服务器?

答、首先需要在 command.cfg 里边定义 check_tcp (默认已经定义)

    然后在拷贝 localhost 配置文件,修改主机名,ip,别名等信息,添加服务项,check_tcp!38101

    然后在 nagios.cfg 主配置文档里添加该主机配置文件路径;

    检查配置文件正确性,并重启 nagios 使配置生效。

 

8、怎么样比较清晰的管理尽千台主机?

答、建议每个配置文件单独管理一台主机,然后将所有主机的配置文件单独放在通一个目录底下,做好定期备份,这样,可以方便修改不同主机上的不同服务,而且可以很方便的临时增加和删除一个主机节点。

 

9、如何添加一个管理插件的配置?

答、在 command.cfg 配置文件里可以添加插件,要添加的插件必须存在于主机的 libexec/* 目录下,否则,在检测配置文件的时候会报错!

 

10、我装了nagios-plugin没有check_mysql  check_snmp 等插件都没有,为什么?

答、check_mysqlnagios-plugin的高版本中(nagios-plugins-1.4.13.tar)已经带了check_mysql插件,如果需要check_snmp,请安装 net-snmp-devel 之后再重新编译nagios来实现!

 

11、能举例说明一下配置文件参数的意义么?

监控windows服务器运行的时间:

check_command           check_nt!UPTIME

 

监控Windows服务器的CPU负载,如果5分钟超过80%则是warning,如果5分钟超过90%则是critical

check_command           check_nt!CPULOAD!-l 5,80,90

 

监控Windows服务器的内存使用情况,如果超过了80%则是warning,如果超过90%则是critical

check_command           check_nt!MEMUSE!-w 80 -c 90

 

监控Windows服务器C:\盘的使用情况,如果超过80%已经使用则是warning,超过90%则是critical, -l 后面接的参数用来指定盘符

check_command           check_nt!USEDDISKSPACE!-l c -w 80 -c 90

 

监控Windows服务器D:\盘的使用情况,如果超过80%已经使用则是warning,超过90%则是critical

check_command           check_nt!USEDDISKSPACE!-l d -w 80 -c 90

 

监控Windows服务器的W3SVC服务的状态,如果服务停止了,则是critical

check_command           check_nt!SERVICESTATE!-d SHOWALL -l W3SVC

 

监控Windows服务器的Explorer.exe进程的状态,如果进程停止了,则是critical

check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe

 

command.cfg command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$   中,-p $ARG1$ $ARG2$ 表示在 host.cfg 配置文件中 check_tcp 可以跟两个端口参数,比如:check_tcp!20!21

 

 

 

 

 

Linux 监控示意图:

Windows 监控示意图:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约