请稍候...
  • 企业级 VPS主机
  • Windows VPS 主机
  • Unmanaged VPS 主机
  • 通配符证书,部署全网SSL证书必备神器
  • 高速稳定独立主机High quality stable server

nagios监控配置

发布时间:2011-10-28 20:57:51 来源: 亚狐科技YAHUHOST

1.1 Nagios安装
作为系统管理员,担心那些重要的在线系统在不知情的情况下停机或者停止网络服务,而且那些发生故障的服务或主机有时候可能要好长一段时间才知道。要改变这种被动局面,这里推荐网络监控软件Nagios,它最大的好处是可以发故障报警短信—只要Nagios监控的对象发生故障,系统就会自动发送短信或电子邮件到手机上。
nagios是一款开源的监控软件,能够对网络内的主机和硬件设备进行状态监控。
1.1.1 Nagios安装准备
1.系统:RedHat linux AS5.3 IP:192.168.129.21/24

2.安装前准备:
(1)安装好apache,GD库(我的GD库安装在/usr/local/libgd),apache与gd库的安装请参考前相关内容。
(2)下载Nagios3.0.5,Nagios-plugins1.4.11,nrpe2.12,nsclient++
# http://www.nagios.org/download/
http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.5.tar.gz
http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz
http://nsclient.org/nscp/downloads/NSClient++-0.3.3-Win32.msi

3.安装思路
(1)服务端 Nagios3.0.5,Nagios-plugins1.4.11,nrpe2.12
(2)客户端 Nagios-plugins1.4.11,nrpe2.12 nsclient++
# nrpe2.12安装在Linux/Unix被监控端。
# nsclient++安装在Windows被监控端。

1.1.2 Nagios监控端安装
1.创建帐号及组

# 创建帐号
/usr/sbin/useradd -m nagios
passwd nagios

# 创建组
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd daemon

# daemon为运行apache的帐号。

2.安装nagios
安装nagios应指明gd库的位置,nagios默认安装位置是/usr/local/nagios。

tar xzf nagios-3.0.5.tar.gz
cd nagios-3.0.5
./configure --with-command-group=nagcmd
--with-gd-lib=/usr/local/libgd/lib/
--with-gd-inc=/usr/local/libgd/include/
make all
make install #来安装主程序,CGI和HTML文件
make install-init #在/etc/rc.d/init.d安装启动脚本
make install-config #安装配置文件,路径在/usr/local/nagios/etc
make install-commandmode #配置目录权限

验证是否安装成功
[root@rhel ~]# cd /usr/local/nagios/
[root@rhel nagios]# ll
总计 24
drwxrwxr-x 2 nagios nagios 4096 09-01 09:57 bin
drwxrwxr-x 3 nagios nagios 4096 09-02 10:14 etc
drwxrwxr-x 2 nagios nagios 4096 09-01 08:06 libexec
drwxrwxr-x 2 nagios nagios 4096 09-01 07:48 sbin
drwxrwxr-x 9 nagios nagios 4096 09-01 07:56 share
drwxrwxr-x 5 nagios nagios 4096 09-02 13:28 var

bin Nagios执行程序所在目录,nagios文件即为主程序
etc Nagios配置文件位置
libexec 是插件安装的位置,运行监控对象的命令
sbin Nagios cgi文件所在目录,执行外部命令所需文件所在的目录
share Nagios网页文件所在的目录
var Nagios日志文件,spid等文件所在的目录

3.启动Nagios

(1)配置机器启动时自动启动Nagios
chkconfig --add nagios
chkconfig nagios on

(2)检查Nagios配置文件
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
...
Total Warnings: 0
Total Errors: 0
如果出现以上内容,说明配置文件没有问题。

(3)启Nnagios
service nagios start

1.1.3安装Nagios插件
1.安装nagios-plugins

tar zxvf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
注:没有指定安装位置,自动默认所有的插件都安装在/usr/local/nagios/libexec里面包括很多的监控的命令。

2.安装nrpe插件
在安装nrpe之前,需要安装openssl库,否则会提示,而安装不通过。在Nagios服务器端只要安装nrpe监控插件check_nrpe就可以了,不需要安装nrpe服务。
tar xzvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install-plugin
注:只需要做到以上两步,服务端就可以了,如果服务器不光监控别人还监控自己,可以全部安装完整。

3.定义check_nrpe命令
由于监控端所采用的监控命令全部都在事先在commands.cfg中定义才能使用。check_nrpe是获取其它监控机信息的插件,需要手动加入。

vi /usr/local/nagios/etc/objects/commands.cfg
############################################################
#
# 2008.11.18 add by Stone
# NRPE COMMAND
#
############################################################
# 'check_nrpe 'command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

1.1.4 Nagios配置
1.配置apache,使访问nagios具有认证功能

vi /etc/httpd.conf
在<IfModule alias_module>下加入以下内容。

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.users
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.users
Require valid-user
</Directory>

2.创建apache目录验证文件
/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password: (输入密码)
Re-type new password: (再输入一次密码)
Adding password for user nagiosadmin

3.重启apache:
/usr/local/apache/bin/apachectl -k restart

4.配置nagios配置文件
vi /usr/local/nagios/etc/objects/contacts.cfg
# 将里面的email地址改为自己的email地址。

5.访问Nagios服务器
http://192.168.129.21/nagios/
输入用户名及密码登录。
user:nagiosadmin
pass:nagios
nagios监控配置 - koumm - koumm的博客

1.1.5 linux客户端安装
Nagios可以监控linux/unix/windows主机。
1.安装nagios-plugins

tar zxvf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

2.安装nrpe插件
在安装nrpe之前,需要安装openssl库,否则会提示,而安装不通过。在Nagios服务器端只要安装nrpe监控插件check_nrpe就可以了,不需要安装nrpe服务,被监控端,也就是客户端需要安装完毕。

tar xzvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
如果后面make报错,加如下参数
./configure --enable-ssl --with-ssl-lib=/lib/(当然前提要有openssl)
make all
make install-plugin
make install-daemon #安装nrpe守护进程
make install-daemon-config #安装nrpe配置文件

3.修改nrpe配置文件
(1)修改配置文件

vi /usr/local/nagios/etc/nrpe.cfg
#允许Nagios监控服务器192.168.129.21监控,这个是作为客户端使用重要的一点。
allowed_hosts=127.0.0.1,192.168.129.21

(2)nrpe启动
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
# 开机自动启动nrpe
vi /etc/rc.d/rc.local
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

也可以独立守护进程启动nrpe,也可以使用xinetd启动nrpe,需要安装xinetd服务,并开启服务。

4.检查nrpe是否安装正常
# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12
返回nrpe版本说明安装没问题。

5.查看启动端口
#netstat -an | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN

注意:我们需要在/usr/local/nagios/etc/nrpe.cfg中定义我们用到的监控本地资源的命令。
下面的命令是默认定义的:
/usr/local/nagios/libexec/check_users -w 5 -c 10
/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
/usr/local/nagios/libexec/check_procs -w 150 -c 200
下面的命令是自己定义的:
#监控交换分区的使用情况,使用超过20%时为警告状态,超过10%时为严重状态
/usr/local/nagios/libexec/check_swap -w 20% -c 10%
#监控根分区磁盘使用情况
/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /

1.1.6 Nagios监控原理
Nrpe监控原理如图

NRPE总共由两部分组成:
(1) check_nrpe插件,运行在监控主机上。
(2) NRPE daemon,运行在远程的linux主机上(通常就是被监控机)
按照上图,整个的监控过程如下:
当Nagios需要监控某个远程linux主机的服务或者资源情况时:
(1) nagios会运行check_nrpe插件,我们要在nagios配置文件中告诉它要检查什么.
(2) check_nrpe插件会通过SSL连接到远程的NRPE daemon.
(3) NRPE daemon会运行相应的nagios插件来执行检查本地资源或服务.
(4) NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理.
注意:NRPE daemon需要nagios插件安装在远程被监控linux主机上,否则,daemon不能做任何的监控.

1.2 Nagios配置说明
1.2.1 Nagios基本对象
1.Nagios配置文件

[root@rhel /]# cd /usr/local/nagios/etc
[root@rhel etc]# ll
总计 80
-rw-rw-r-- 1 nagios nagios 10458 09-01 07:49 cgi.cfg
-rw-r--r-- 1 root root 26 09-01 07:51 htpasswd.users
-rw-rw-r-- 1 nagios nagios 42774 09-02 10:14 nagios.cfg
-rw-r--r-- 1 nagios nagios 7222 09-01 10:00 nrpe.cfg
drwxrwxr-x 2 nagios nagios 4096 09-02 10:54 objects
-rw-rw---- 1 nagios nagios 1340 09-01 07:49 resource.cfg
-rw-r--r-- 1 root root 486 09-01 08:25 services.cfg
[root@rhel etc]# cd objects/
[root@rhel objects]# ll
总计 48
-rw-rw-r-- 1 nagios nagios 8015 09-01 08:08 commands.cfg
-rw-rw-r-- 1 nagios nagios 2164 09-01 07:52 contacts.cfg
-rw-rw-r-- 1 nagios nagios 5403 09-01 07:49 localhost.cfg
-rw-rw-r-- 1 nagios nagios 3124 09-01 07:49 printer.cfg
-rw-rw-r-- 1 nagios nagios 3293 09-01 07:49 switch.cfg
-rw-rw-r-- 1 nagios nagios 10812 09-01 07:49 templates.cfg
-rw-rw-r-- 1 nagios nagios 3209 09-01 07:49 timeperiods.cfg
-rw-rw-r-- 1 nagios nagios 4009 09-02 10:16 windows.cfg

Nagios自定义了一套规则用于配置文件,在nagios里面定义了一些基本对象,如:
commands.cfg #命令定义配置文件,里面定义的命令可以被其他文件引用,其它定义的文件中使用的命令,必须应在这个文件中注册才能使用。
contacts.cfg #联系人和联系人组配置文件
localhost.cfg #监控本地机器的配置文件
printer.cfg #监控打印机的一个事例配置文件(默认未启用)
switch.cfg #监控路由器的一个事例配置文件(默认未启用)
templates.cfg #模板配置文件,在此可以定义模板,在其他文件中引用。使用的过程中应使用use命令。
timeperiods.cfg #定义监控时间段的配置文件
windows.cfg #监控Windows的一个事例配置文件(默认未启用)

如果要使用以上配置文件,需要在nagios配置文件中取消相关注释。当然也可以自己动手建立自己定义的配置文件,然后按下面的方式加入进来。
vi /usr/local/nagios/etc/nagios.cfg
...
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
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/services.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg
#cfg_file=/usr/local/nagios/etc/objects/printer.cfg

1.2.2 Nagios定义时间段
一般定义时间段都是在timeperiods.cfg中,所以这里面定义的一些时间段,我们以后在配置文件的时候可以直接引用。引用时是根据命名的名称来区分各个不同的时间段的。
使用define定义关键字timepriod表示该定义段内定义的是时间段。段内的定义请使用两个大括号来包括。段内的定义项一行一项,时间格式请按照以下。另外,如果要定义多个时间段的话,那么必须要写多个define timeperiod {} 段。
示例说明:
define timeperiod{
timeperiod_name 24x7 /*名称,表示全天24小时*/
alias 24 Hours A Day, 7 Days A Week /*说明作用*/
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}

define timeperiod{
timeperiod_name workhours /*名称,工作时间*/
alias Normal Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
解释:一般时间段的定义在这个配置文件中,如果这个文件中没有的话,可以在自己定义的配置文件定义自己命名的时间段也可以。

1.2.3 Nagios定义联系人
1.定义联系人

在Nagios的诸多工作中都会涉及到联系人。当发生监测超出阀值,或者产程告警等情况时,Nagios都会以Email甚至更多方式来告知指定的联系人。联系人应该是系统当中存在的用户或者是Email的别名用户,以便于接收到重要的消息通知。
使用define定义关键字contact表示该定义段内定义的是联系人段。段内的定义请使用两个大括号来包括。段内的定义项一行一项。另外,如果要定义多个联系人段的话,那么必须要写多个define contact {} 段。

自定义联系人示例如下:
define contact{
contact_name nagios-admin /*系统用户或者是Email别名*/
alias Nagios Admin /*说明*/
service_notification_period 24x7 /*设定服务事件通知时间段,后面指定时间段名*/
host_notification_period 24x7 /*设定主机事件通知时间段,后面指定时间段名。请注意,这里后面跟的参数为定义过的timeperiods的时间段名。*/
service_notification_options w,u,c,r
# w代表warning警告; u代表unknown未知;
# c代表critical严重;r代表recover恢复;d代表down崩溃。
host_notification_options d,r
service_notification_commands notify-by-email
#服务事件通知的命令,该命令内容在command.cfg里定义。
host_notification_commands host-notify-by-email
#主机事件通知的命令,该命令内容在command.cfg里定义。
email nagios-admin@localhost
}

本机真实示例:
define contact{
contact_name nagiosadmin;
use generic-contact; /*引用联系人类*/
alias Nagios Admin;
email root@localhost;
}
#上面的generic-contact在templates.cfg中定义,只要是能generic-xxx开头的都是模板类,可以使用use命令引用其相关属性。

2.定义联系人组
联系人组就是将若干联系人聚合起来的组,且其中的组成员必须是上面已经定义过的联系人。
define contactgroup{
contactgroup_name admins /*定义联系人组名称*/
alias Nagios Administrators /*说明*/
members nagiosadmin /*成员*/
#组成员必须是contect里定义过联系人
}

1.2.4 Nagios定义主机
主机定义段定义了Nagios监测的主机对象,Nagios只监测的在主机定义段里定义过的主机名。主机定义段里能够定义主机类,在主机类当中定义一些公共属性,然后定义个别主机的时候并不需要把每个属性都一一定义出来,而只需要引用和继承之前的主机类,就能够继承主机类当中的公共属性,有趣的是类还能继承类。事先多定义几个不同的类,在大规模部署监测主机的时候效率将特别高。
## Generic host definition template - This is NOT a real host, just a template!
默认Nagios就定义了通用主机的大类generic-host。在这个类中定义了无论什么系统和条件的所有主机都会共有的一些属性。
使用define定义关键字host表示该定义段内定义的是主机段,也可以是主机类。段内的定义请使用两个大括号来包括。段内的定义项一行一项。另外,如果要定义多个主机段的话,那么必须要写多个define host {} 段。
为了说明其中的原理,下面通过示例来说明:
1.定义主机类
define host{
name generic-host /*主机类名*/
notifications_enabled 1 /*启用主机事件通知*/
event_handler_enabled 1 /*启用主机事件处理程序*/
flap_detection_enabled 1 /*启用状态抖动监测*/
failure_prediction_enabled 1 /*启用故障预测*/
process_perf_data 1 /*启用进程性能数据记录*/
retain_status_information 1 /*启用状态信息保存功能*/
retain_nonstatus_information 1 /*启用非状态信息保存功能*/
#当Nagios重新启动的时候不会是空数据,而是先显示上次离线时最后保留的(非)状态数据。
notification_period 24x7 /*定义过的事件通知的工作时间段*/
register 0 /*此项register为0值的时候Nagios会理解到该定义段是主机类而为实体主机的定义段。因此,在自定义主机类段的时候,记得也要加入这一个属性,用来向Nagios表明该段为主机类段。*/
}

下面再建立一个Linux主机类段linux-server。这个类同时也继承了之前的通用主机类generic-host类,也就是说类也可以继承类。这样的关系和设定将使得主机设定进一步灵活。
define host{
name linux-server /*主机类名称*/
use generic-host /*继承上面主机类*/
#use指定要继承的主机类名,类也可以继承类,上面定义的
check_period 24x7 /*检测的时间*/
max_check_attempts 10 /*监测失败后的最大尝试次数*/
check_command check-host-alive /*监测主机存活的命令*/
notification_period workhours
notification_interval 15 /*监测主机的时间间隔 秒*/
notification_options d,u,r
contact_groups admins /*联系人组*/
register 0 /*判断是主机还是主机类的标志*/
}

2.定义主机段
define host{
use linux-server /*use来继承linux-server主机类*/
host_name linux /*定义的主机名称,只是名称*/
alias server /*该主机的描述*/
address 192.168.129.4 /*要监控的主机的地址*/
}
通过use来继承上面的主机类,我们自己在自定义主机类的时候,可以少写入很多内容,方便我们快速的定义主机。
当然在自定主机段的时候,可以直接使用通用的主机类。不光可以定义linux主机,也可以定义windows主机,定义方法都是一样的。

3.定义主机段组
使用define定义关键字hostgroup表示该定义段内定义的是主机组段。段内的定义请使用两个大括号来包括。段内的定义项一行一项。另外,如果要定义多个主机组段的话,那么必须要写多个define hostgroup {} 段。
define hostgroup{
hostgroup_name linux_hosts /*主机组名称*/
alias Group of Linux Hosts
members linux,KCentOS5A
}


define hostgroup{
hostgroup_name windows_hosts
alias Group of Windows Hosts
members KCXP1,KCWIN2K3A
}
可以通过把相同类的主机组织在一起。

1.2.5 Nagios定义服务
这里的服务并不是指被监测主机上运行的服务,而是指Nagios所进行的“各种不同功能的监测”工作,一个监测工作就是一个服务。服务定义段就是要定义Nagios将进行什么样的监测工作的配置段。而且服务当中也能够定义服务的类,并且类也能继承类,运用比较灵活。
全部的服务大致可以分为3大种:
第一种是“本地系统监测服务”,就是监测主机Nagios所在主机对自己本地的一些情况的监测,比如本地磁盘占用情况,本地CPU使用情况等等。
第二种是“远程系统监测服务”,就是远程主机系统的内部情况,比如被监测主机的磁盘占用情况,远程主机的CPU使用情况等等,但是要实现远程系统监测服务,还必须要再安装NRPE核心代理的C/S扩展插件程序,需要在被监控的主机上安装nrpe程序。
第三种服务是“连通检测服务”,就是Nagios主机到被监测的远程主机当中的一些连通性的监测,比如Ping操作,指定端口的TCP/UDP监控,这些服务不需要NRPE也能够实现。
使用define定义关键字service表示该定义段内定义的是服务段,也可以是服务类。段内的定义请使用两个大括号来包括。段内的定义项一行一项。另外,如果要定义多个服务段的话,那么必须要写多个define service {} 段。
默认Nagios已经定义了一个通用服务大类generic-service,这个类当中定义的属性是无论什么服务都必须的属性。
以下内容来自templates.cfg配置文件
define service{
name generic-service /*通过服务类*/
active_checks_enabled 1 /*启用活动监测服务*/
passive_checks_enabled 1 /*启用被动监测服务*/
parallelize_check 1 /*启用并发活动监测服务*/
obsess_over_service 1 /*启用服务防停滞*/
check_freshness 0 /*关闭更新监测*/
notifications_enabled 1 /*启用事件通知*/
event_handler_enabled 1 /*启用事件处理程序*/
flap_detection_enabled 1 /*启用状态抖动监测*/
failure_prediction_enabled 1 /*启用故障预测*/
process_perf_data 1 /*启用进程性能数据记录*/
retain_status_information 1 /*启用状态信息保存功能*/
retain_nonstatus_information 1 /*启用非状态信息保存功能*/
is_volatile 0 /*设定服务非易失*/
register 0 /*服务类标志*/
}

这里Nagios还默认定义了一个针对“本地系统监测服务”的类。
define service{
name local-service /*本地服务类*/
use generic-service /*继承上面的通用服务类*/
check_period 24x7 /*监测的时间段*/
max_check_attempts 2 /*监测失败后再尝试次数*/
normal_check_interval 5 /*正常监测服务的间隔,单位秒*/
retry_check_interval 1 /*监测失败后尝试的间隔,单位秒*/
contact_groups admins /*设定联系组*/
notification_options w,u,c,r /*设定事件通知级别*/
notification_interval 15 /*设定服务通知的间隔*/
notification_period 24x7 /*设定服务通知的时间段*/
register 0 /*服务类标志*/
}
我们可以在自定义的配置文件中直接引用上面的服务类。
定义服务的本质是选择为一个服务指定使用在command.cfg中定义的命令,并且还要给与参数,参数和参数之间通过感叹号"!"来分隔,参数当中的子参数之间通过逗号","来分隔。而command.cfg里定义的命令其实就是调用Nagios主路径/usr/local/nagios/下 libexec/目录中的插件程序。

配置文件分析
define service{
use local-service
host_name localhost
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

define service{
use local-service
host_name localhost
service_description Root Partition
check_command check_local_disk!20%!10%!/
#当剩余可用空间<20%的时候产生提醒,当剩余可用空间<10%的时候产生警告
}

define service{
use local-service
host_name localhost
service_description Current Users
check_command check_local_users!20!50
#登录用户数量>20的时候产生提醒,当登录用户数量>50的时候产生警告
}

define service{
use local-service
host_name localhost
service_description Total Processes
check_command check_local_procs!250!400!RSZDT
#当进程数>250的时候产生提醒,当进程数>400的时候产生告警
}

define service{
use local-service
host_name localhost
service_description Current Load
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}
注:这里的负载还没有搞明白。

define service{
use local-service
host_name localhost
service_description Swap Usage
check_command check_local_swap!20!10
}

define service{
use local-service
host_name localhost
service_description SSH
check_command check_ssh
notifications_enabled 0 /*通知功能关闭*/
}

define service{
use local-service
host_name localhost
service_description HTTP
check_command check_http
notifications_enabled 0 /*通知功能关闭*/
}

1.2.6 Nagios监控windows
1.监控端配置

(1)打开支持windows监控支持
vi /usr/local/nagios/etc/nagios.cfg
#去掉这句话的注释,默认状态下是关闭的
cfg_file=/usr/local/nagios/etc/objects/windows.cfg

(2)打开模块后配置windows.cfg
vi /usr/local/nagios/etc/objects/windows.cfg
define host{
use windows-server
host_name winserver #被监控主机名
alias Windows Server
address 192.168.129.4 #被监控的windows地址
}
#把下面的host_name都改成winserver
define service{
use generic-service
host_name winserver
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90 #监控CPU
}
define service{
use generic-service
host_name winserver
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90 #监控内存
}

(3)重启nagios服务
service nagios restart

2.被监控端支持
(1)下载NSClient++-0.3.3-Win32,双击安装msi安装到
C:\Program Files\NSClient++目录中

(2)如果下载nsclient++0.3.3.zip解压到C盘然后进入命今窗口安装
C:\>cd "NSClient++-Win32-0.3.5"
C:\NSClient++-Win32-0.3.5>nsclient++ /install

(3)修改客户端配置文件NES.ini
[modules] #去掉注释符号,除了CheckWMI.dll和RemoteConfiguration.dll
FileLogger.dll
CheckSystem.dll
CheckDisk.dll
NSClientListener.dll
[Settings]
allowd_host=192.168.129.21/32 #些处为nagios服务的IP
[NSClient]
port=12489 #去掉注释就可以了!

(4)开启客户端nsclient服务或启动
在安装的时间已经安装为服务了。
在windows服务中找到NSClientpp(nagios)0.3.3.2。双击并设为启动。

C:\Program Files\NSClient++>nsclient++.exe /help
Usage: -version, -about, -install, -uninstall, -start, -stop, -encrypt
Usage: [-noboot] <ModuleName> <commnd> [arguments]

C:\Program Files\NSClient++>nsclient++.exe -start
Starting NSClientpp

(5)验证客户端的启动
C:\Program Files\NSClient++>netstat -an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:12489 0.0.0.0:0 LISTENING

3.观察效果
nagios监控配置 - koumm - koumm的博客

1.2.7 Nagios监控linux
1.监控端配置

(1)加入对一台linux主机的监控支持
vi /usr/local/nagios/etc/nagios.cfg
#加上如下内容
cfg_file=/usr/local/nagios/etc/objects/mylinux.cfg

(2)打开模块后配置mylinux.cfg
vi /usr/local/nagios/etc/objects/mylinux.cfg
define host{
use linux-server
host_name mylinux
alias mylinux
address 192.168.129.21
}
define service{
use generic-service
host_name mylinux
service_description check-swap
check_command check_nrpe!check_swap
}
define service{
use generic-service
host_name mylinux
service_description check-load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name mylinux
service_description check-disk
check_command check_nrpe!check_disk
}
define service{
use generic-service
host_name mylinux
service_description check-users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name mylinux
service_description total_procs
check_command check_nrpe!check_total_procs
}

(3)重启nagios服务
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg #检查Nagios配置文件
Service nagios restart
其它前提配置在上一节已经配置过了,这里略过。

2.被监控端支持
1.安装nagios-plugin

useradd nagios
passwd nagios
tar -zxvf nagios-plugins-1.4.12.tar.gz
cd nagios-plugins-1.4.12
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

2.改变主目录权限
chown -R nagios.nagios /usr/local/nagios
[root@client nagios]# ll
drwxr-xr-x 2 nagios nagios 4096 Jun 1 00:07 libexec
drwxr-xr-x 3 nagios nagios 4096 Jun 1 00:07 share

3.安装客户端的nrpe
tar -zxvf nagios-nrpe_2.8.1.orig.tar.gz
cd nagios-nrpe_2.8.1
./configure (会自动加载SSL)
#如果后面make报错,加如下参数
./configure --enable-ssl --with-ssl-lib=/usr/lib/(当然前提要有openssl)
make all
make install-plugin
make install-daemon
make install-daemon-config

4.配置nrpe信息
vi /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=192.168.129.21

5.启动nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
#或
vi /etc/rc.d/rc.local
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

6.验证nrpe
netstat -an | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN


1.3 Nagios步署PNP
Nagios 监控的侧重点在"此时"服务是否正常,是一个瞬时状态。通过对这个状态的监控和告警,管理员可以第一时间对主机或者服务的故障做处理。但是我 们往往也非常关心主机的性能以及服务的响应时间等情况,这些情况是一个持续的变化曲线,并非一个实时的值,如果通过查看日志数据来分析的话,既繁琐有抽 象,所以,我们希望Nagios可以帮我们做这份工作,然后将报表提交给我们,这样就非常方便了。
1.3.1 安装基本环境安装
在安装pnp之前系统应已经安装好了nagios基础平台,pnp插件的安装还需要系统支持php,rrdtools,perl, pnp-latest。
PNP是一个小巧的开源软件包,它是基于php和perl,利用rrdtool将Nagios采集的数据绘制成图表。
1.apache
2.GD库
3.php安装
注:以上内容参考相关文章。

4.rrdtools安装
tar zxvf rrdtool-1.0.50.tar.gz
cd rrdtool-1.0.50
./configure
Make && make install
说明:这个版本的rrdtool是最好安装的。

5.安装perl,下载地址:http://www.cpan.org/
tar zxvf stable.tar.gz
cd perl-5.10.1
rm -f config.sh Policy.sh
sh Configure -de
make
make test
make install

6.安装pnp
tar zxvf pnp-latest.tar.gz
cd pnp-latest
./configure
--with-rrdtool=/usr/local/rrdtool-1.0.50/bin/rrdtool
--with-perfdata-dir=/usr/local/nagios/share/perfdata/
make all
make install

1.3.2 修改主配置文件
在定义host或service 中都有一个定义项,名为process_perf_data,其值可以定义为0或1,其作用是是否启用Nagios的数据输出功能。如果你将此项赋值为 1,那么Nagios就会将收集的数据写入到某个文件中,以备提取。如果想让Nagios将数据输出的话,首先要将Nagios的主配置文件 nagios.cfg中相关的配置修改
1.修改nagios.cfg
vi /usr/local/nagios/etc/nagios.cfg
#找到以下两项,修改为如下内容
process_performance_data=1
service_perfdata_command=process-service-perfdata #默认此句被注释掉了

2.修改commands.cfg
Nagios 的command.cfg定义中默认有一项"process-service-perfdata",该命令声明了Nagios输出哪些值到输出的文件中。不过其定义相对简单,PNP提供了一个perl脚本,更详尽的定义了一个输出数据的方法。如果要使用PNP的话,我们需要在command.cfg的定义中,将"process-service-perfdata"命令对应的执行命令行的内容替换成该脚本:
vi /usr/local/nagios/etc/objects/commands.cfg

#找到相关标志,并修改为以下内容
'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
说明:process_perfdata.pl是安装pnp时安装到nagios配置文件目录中的,目的是替换原有的数据输出命令。

3.修改基础对象文件
如果想要对某个监控对象做数据图表,则需在所对应的host或者service定义中(一般写在hosts.cfg或者services.cfg文件中),加入如下的定义:
process_perf_data 1
说明:在实验的时候把localhost中的host与services都加上了以上条件。图形出来的,我认为还是要规则好,不然的话,工作量比较大,采用继承的方法还在实验。
效果图如下:
nagios监控配置 - koumm - koumm的博客

注:本文资料来自动互联网,经过整理而成,相关功能没有在上面实现。只是起到一个抛砖引玉的作用。

上一页1下一页
【责任编辑:亚狐科技 (Top) 返回页面顶端

下一篇:nagios配置 -2