nagios笔记

下载 
Nagios: http://www.nagios.org/download 
Nrpe: http://nagios.sourceforge.net/docs/3_0/addons.html#nrpe 

Nagios分为监控端和被监控端,一般来说位于不同的主机上。 
一. 基础组件安装 
在被监控端安装: 
- Nagios Core 
- Nagios Plugins 
- Nrpe 
将nagios和nrpe以daemon方式启动 

在监控端安装 
- Nagios Core 
- Nagios Plugins 
- Nrpe 
运行web界面。 

安装配置Core,Plugin方法见: 
Fedora Quickstart:  http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html 

二. 安装配置nrpe如下 
转: http://blogold.chinaunix.net/u/28387/showart_371655.html 
NRPE是nagios的一个扩展,它被用于被监控的服务器上,向nagios监控平台提供该服务器的一些本地的情况。例如,cpu负载、内存使用、硬盘使用等等。NRPE可以称为nagios的for linux 客户端。 

为什么要使用这个客户端呢?在nagios的插件中,有一个名为“check_ssh”的插件,它也可以实现对于远程服务器中local信息的监控。但是,相对NRPE,“check_ssh”占用的系统资源就略多了一点。监控少量的服务时可能不会察觉,但是如果监控对象比较多,那么差距就非常明显了。但是还有一点要说明,虽然NRPE也是使用SSL安全通道,但是“check_ssh”的安全性要高于NRPE,安全性总是和易用性成反比的。 -_-|| 

首先,需要在nagios监控平台服务器上安装NRPE,安装很简单,到官方网站下载最新的nrpe包,本例中使用的是nrpe-2.8.1.tar.gz。 

I. nrpe客户端安装配置 

Linux代码 复制代码 收藏代码

  1. tar xzf nrpe-2.12.tar.gz   

  2. cd nrpe-2.12  

  3. ./configure   

  4. make all   

  5. make install-plugin  


如果nagios安装在指定目录,那么nrpe在configure时说明prefix 
如果安装成功,就可以在/.../nagios/libexec 目录中找到 "check_nrpe"这个插件(客户服务端都要安装)。 

1. 在$nagios_install_dir/etc/nagios.cfg中添加一行: 
cfg_file=/usr/local/nagios/etc/objects/my_server.cfg 

2. 定义一个可以在监控平台使用的命令 
在$nagios_install_dir/etc/objects/commands.cfg中,其内容如下: 

Commands.cfg代码 复制代码 收藏代码

  1. define command{   

  2. command_name check_nrpe   

  3. command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }  



3.例:监控cpu负载 
在$nagios_install_dir/etc/objects/创建my_server.cfg,内容如下: 

Cfg代码 复制代码 收藏代码

  1. define host{   

  2.         use                     linux-server            ; Name of host template to use   

  3.                                                         ; This host definition will inherit all variables that are defined   

  4.                                                         ; in (or inherited by) the linux-server host template definition.   

  5.         host_name               monitor   

  6.         alias                   monitor   

  7.         address               192.168.2.100  

  8.         }   

  9.   

  10. define service{   

  11.        use                            local-service         ; Name of service template to use   

  12.        host_name                      monitor ;192.168.2.200  

  13.        service_description            XCPU LOAD   

  14.        check_command check_nrpe!check_load   

  15.        notifications_enabled            0  

  16. }  



II. nrpe服务端安装配置 
1. 安装NRPE: 

Linux代码 复制代码 收藏代码

  1. tar xzf nrpe-2.12.tar.gz   

  2. cd nrpe-2.8.1  

  3. ./configure   

  4. make all   

  5. make install-plugin   

  6. make install-daemon   

  7. make install-daemon-config   


安装好了,可以到/usr/local/nagios/下面检查一下,应该生成了4个目录:bin、etc、libexec、share。 

2. 配置NRPE: 
我们要配置一下,目的是让NRPE可以以守护进程的形式监听5666端口,为特定地址的nagios平台提供服务。在官方的NRPE文档中,详细说明了如何将NRPE嵌入xinetd服务中,我在这里就不��嗦了。有些情况,我们的服务器上没有xinetd或者inetd这样的服务,那如何办呢?我在这里介绍一种更加通用的方法。 

首先,需要修改/usr/local/nagios/etc/nrpe.cfg。 
找到“allowed_hosts=127.0.0.1”将其改为: 

Cfg代码 复制代码 收藏代码

  1. allowed_hosts=127.0.0.1,$Nagios监控平台的地址或域名  



这个配置的作用是声明合法的nrpe服务对象,没有在这里声明的地址是无法从本机的NRPE获得服务的。“$Nagios监控平台的地址或域名”可以是ip地址,也可以是域名。在我环境中,nagios监控平台没有一个固定的公网ip,所以其他在公网上的服务器如果安装了NRPE的话,就只能通过动态域名来辨别监控平台的地址。 

3. 启动NRPE守护进程 
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d 

此命令生成的日志会在系统的日志(/var/log/message)中。如果没有出错,就基本搞定了。[b]3. 检查NRPE是否启动/b] 
在本机上执行 

Linux代码 复制代码 收藏代码

  1. /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1  



或者在nagios监控平台服务器上: 

Linux代码 复制代码 收藏代码

  1. /usr/local/nagios/libexec/check_nrpe -H $目标主机地址  



正常的返回值为被监控服务器上安装的NRPE的版本信息: 
NRPE v2.12 

如果看到这些,恭喜你,你的NRPE安装成功了。 

后 记 

那么,通过NRPE,可以监控到哪些信息呢? 只要在被监控服务器上有的插件(/usr/local/nagios/libexec中的所有插件),都可以使用。也就是说,你想监控什么,只要有对应的插件,就可以实现。 

例如,我希望监控一台远程服务器上的cpu负载。在远程主机的插件中有“check_load”,那么,在nrpe.conf中定义一个cpu负载的监控: 
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 
这个配置就声明了一个命令:“check_load”,也就是上述中红色字check_load的真身所在了。



四、nagios服务端配置与启动        1)、文件说明nagios.cfg                    #nagios主配置文件 
cgi.cfg                          #cgi配置文件 
commands.cfg            #命令配置文件 
contacts.cfg               #联系人配置文件 
resource.cfg               #定义插件路径文件 
templates.cfg、timeperiods.cfg 组,监控时间段等配置文件 
linux.cfg                      #用户自定义文件,监控linux主机,定义主机配置文件 
windows.cfg              #用户自定义文件,监控windows主机,定义主机配置文件 
l-services.cfg             #用户自定义文件,定义linux主机服务配置文件 
w-services.cfg          #用户自定义文件,定义windows主机服务配置文件
 2)、cgi.cfg文件配置root@nagios#cd /usr/local/nagios/etc 
vi    cgi.cfg                #以下是需要修改的地方
authorized_for_system_information=nagiosadmin,test 
authorized_for_configuration_information=nagiosadmin,test        
authorized_for_system_commands=nagiosadmin,test    
authorized_for_all_services=nagiosadmin,test 
authorized_for_all_hosts=nagiosadmin,test     authorized_for_all_service_commands=nagiosadmin,test     authorized_for_all_host_commands=nagiosadmin,test 
use_authentication=0   
 #修改为0,不然监控访问的时候会出现以下提示It appears as though you do not have permission to view information for any of the hosts you requested...If you believe this is an error, check the HTTP server authentication requirements for accessing this CGI
and check the authorization options in your CGI configuration file.
3)、配置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
 # wb config
cfg_dir=/usr/local/nagios/etc/linux   
#配置linux主机加载自定义文件的目录(下面包括linux.cfg、l-services.cfg文件)
cfg_dir=/usr/local/nagios/etc/windows #配置win主机加载自定义文件的 目录(包括windows.cfg、w-services.cfg)
 4)、配置commands.cfg命令配置文件define command{ 
                command_name check_nrpe 
                command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
                }
define command{
        command_name check_mysql_health  #定义mysql监控命令        command_line $USER1$/check_mysql_health --hostname $ARG1$ --port $ARG2$ --username $ARG3$ --password $ARG4$ --mode $ARG5$
        }
define command{
        command_name notify-service-by-sms #定义飞信监控命令        command_line /usr/local/tools/install/fetion --mobile=159230***** --pwd=2255*** --to=$CONTACTPAGER$ --msg-gb="$HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$ on $TIME$ result is $SERVICEOUTPUT$" $CONTACTPAGER$
}
notify-host-by-email、notify-service-by-email这二项是定义mail报警的命令,默认文件有这二项
5)、配置contacts.cfg联系人配置文件define contact{ 
     contact_name                          nagiosadmin
     use                                        generic-contact      alias                                       Nagios Admin      service_notification_period          24x7 
     host_notification_period              24x7 
     service_notification_options     w,u,c,r 
     host_notification_options            d,u,r 
     service_notification_commands     notify-service-by-email,notify-service-by-sms 
     host_notification_commands            notify-host-by-email 
     email                              
http://www.360doc.com/mailto:[email protected],http://www.360doc.com/mailto:[email protected]       pager                                           1592304**** 
                }
#email  定义联系人报警mail地址#pager 定义联系人报警手机号码#notify-service-by-email、notify-service-by-sms、notify-host-by-email、要与commands.cfg命令配置文件里的相对应6)、linux.cfg主机配置文件#====================linux server=====================
define host{ 
                use                          generic-host                        
                host_name                cvs-1.11 
                alias                         cvs-server 
                address                     192.168.1.11 
                check_command          check-host-alive 
                max_check_attempts             10 
                check_period                        24x7 
                notification_interval               20 
                notification_period                 24x7 
                notification_options                d,r 
                contact_groups    admins 
                
name                         cvs-1.11 #定义名字
                } 
define host{ 
                use                             generic-host   
                host_name                   web-1.72 
                alias                            web-server 
                address                        192.168.1.72 
                use                              cvs-1.11 #调用cvs-1.11的配置
                } 
7)、windows.cfg配置文件##############windows host################define host{ 
                use                           generic-host    
                host_name                 windows-1.8 
                alias                          win-server 
                address                      192.168.1.8 
                check_command          check-host-alive 
                max_check_attempts             10 
                check_period                        24x7 
                notification_interval               20 
                notification_period                 24x7 
                notification_options                d,r 
                contact_groups    admins 
                
name                          windows-1.8 #定义名字
                } 
define host{ 
                use                  generic-host  
                host_name        windows-1.71 
                alias                 web-server 
                address            192.168.1.71 
                use                  windows-1.8 #调用windows-1.8配置文件
                }
8)、l-services.cfg定义服务配置文件define service{ 
                use                                 generic-service 
                host_name                       cvs-1.11 #与l-linux.cfg主机服务的名字相对应
                service_description              HTTP    status 
                is_volatile                            0  #类似声音警告功能关闭
                check_period                       24x7 
#监控期限为24X7
                max_check_attempts              3  
#最大检测3次
                normal_check_interval             1  
#每一分钟检测一次
                retry_check_interval               1  #间隔1分钟检测
                contact_groups                       admins #监控组
                notification_options                  w,u,c,r 
# w,u,c,r 发生这四种情况时,进行通告
                notification_interval                  5 # 通告间隔
                notification_period                    24x7 #检测时间段
                check_command                       check_http 
                }
check_command监控命令有check-host-alive、check_nrpe!check_disk1、check_nrpe!check_load、check_nrpe!check_total_procs、check_nrpe!check_swap等9)、w-services.cfg配置文件define service{ 
                use                                  generic-service 
                host_name                        windows-1.8 
                service_description         NSClient++ Version 
                is_volatile                                 0 
                check_period                             24x7 
                max_check_attempts                  3 
                normal_check_interval                 1 
                retry_check_interval                   1 
                contact_groups                          admins 
                notification_options                     w,u,c,r 
                notification_interval                     5 
                notification_period                       24x7 
                check_command             check_nt!CLIENTVERSION 
                }
define service{
        use                        generic-service
        host_name               windows-1.8
        service_description     E:\ Drive Space
        is_volatile                     0
        check_period                 24x7
        max_check_attempts       3
        normal_check_interval      1
        retry_check_interval        1
        contact_groups               admins
        notification_options          w,u,c,r
        notification_interval           5
        notification_period             24x7
        check_command          
 check_nt!USEDDISKSPACE!-l e -w 80 -c 90
        }
# 如果要监控c 盘,check_nt!USEDDISKSPACE!-l c -w 80 -c 90  这里的c表示是c盘
  check_command命令有check_nt!UPTIME、check_nt!MEMUSE!-w 80 -c 90、(-w 80 -c 90)为当内存使用到80%为warning警告,内存使用到90%为critical紧急,check_nt!USEDDISKSPACE!-l c -w 80 -c 90、check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe等。10)、linux 客户端的安装配置与启动    tar zxvf nrpe-2.8.1.tar.gz 
    cd nrpe-2.8.1 
   ./configure �Cprefix=/usr/local/nrpe 
    make 
    make install
10.1)、添加nagios用户组,并设置权限root@client#useradd nagios -s /sbin/nologinchown -R nagios.nagios /usr/local/nrpe10.2)、需要把nagios监控服务器里的/usr/local/nagios/libexec下面的5个文件cp到 /usr/local/nrpe/libexec目录下cp /usr/local/nrpe/libexec/check_nrpe     /usr/local/nagios/libexec 
cp /usr/local/nagios/libexec/check_disk    /usr/local/nrpe/libexec 
cp /usr/local/nagios/libexec/check_load    /usr/local/nrpe/libexec 
cp /usr/local/nagios/libexec/check_ping    /usr/local/nrpe/libexec 
cp /usr/local/nagios/libexec/check_procs   /usr/local/nrpe/libexec
10.3)、配置nrpe.cfg文件mkdir /usr/local/nrpe/etc 创建目录复制nrpe解压目录下的nrpe.cfg文件以 /usr/local/nrpe/etc目录下cp /root/nrpe/nrpe.cfg /usr/local/nrpe/etc修改nrpe.cfg文件server_port=5666                #端口
server_address=192.168.1.56 
#服务器IP
allowed_hosts=127.0.0.1,192.168.1.56 #充许nagios服务器IP访问
10.4)启动nrpe服务      10.4.1)、以独立守护进程启动nrpe服务/usr/local/nrpe/bin/nrpe �Cc /usr/local/nrpe/etc/nrpe.cfg -d     10.4.2)、检测nrpe服务是否正常启动[root@nagios nrpe]# netstat -nltp | grep nrpe 
tcp   0  0 192.168.1.56:5666   0.0.0.0:*       LISTEN   2233/nrpe
能查看到5666这端口,说明nrpe启动正常11)、配置windows主机的nrpe服务修改c:\Program Files\NSClient++\NSC.ini文件FileLogger.dll 
CheckSystem.dll 
CheckDisk.dll 
NSClientListener.dll 
NRPEListener.dll 
SysTray.dll 
CheckEventLog.dll 
CheckHelpers.dll 
CheckWMI.dll
#把前面的;分给去掉allowed_hosts=127.0.0.1/32,192.168.1.56 #添加nagios监控服务器的IP,充许nagios服务器访问打开nsclient++ 服务,选择属性---登陆---本地系统账户---(选择)充许服务与桌面交互,重启nsclient++服务net stop nsclient 
net start nsclient
五、启动nagios监控服务器1)、检查配置/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfgChecking misc settings...Total Warnings: 0
Total Errors:   0
Things look okay - No serious problems were detected during the pre-flight check
2)、启动nagios服务/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg/etc/init.d/nagios restart #重新启动nagios服务3)、nagios监控页面如下 [url]http://localhost/nagios[/url]-----------------------------------------------------------------------------------------------------------------------

六、监控mysql服务

       1)、在要监控mysql主机上面建立mysql用户,用作mysql监控服务使用。

grant all on *.* to test@'%' identified by 'test';

      2)、在nagios监控服务器上安装check_mysql_health插件.

下载地址:http://www.consol.de/fileadmin/opensource/Nagios/check_mysql_health-2.0.3.tar.gz

tar zxvf check_mysql_health-2.0.3.tar.gz.rar

cd check_mysql_health

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

make && make install

yum install -y perl-DBD-MySQL.i386 perl-DBD-Pg.i386 # check_mysql_health使用需要这二个发安装包

 

在运行./check_mysql_health出现以下错误提示,

 

[root@file]# ./check_mysql_health    
-bash: ./check_mysql_health: yes: bad interpreter: No such file or directory

解决方法

因为check_mysql_health是用perl写的,将check_mysql_health的第一行由原来的#! yes -w修改为#!/usr/bin/perl,这样就OK了

七、nagios监控mysql页面

 

八、配置nagios声音报警和飞信报警

       1)、编辑nagios服务端的cgi.cfg文件

[root@nagios ~]# vi /usr/local/nagios/etc/cgi.cfg

# under the HTML path (i.e. /usr/local/nagios/share/media/).

<varname>=<sound_file>

host_unreachable_sound=hostdown.wav
host_down_sound=hostdown.wav
service_critical_sound=critical.wav
service_warning_sound=warning.wav
service_unknown_sound=warning.wav
normal_sound=noproblem.wav

#去掉这几项注释,保证/usr/local/nagios/share/media目录下有这些.wav文件,才能正常下行声音报警.

     2)、配置飞信

mkdir /usr/local/tools

cd /usr/local/tools

wget [url]http://www.it-adv.net/fetion/downng/fetion20090318001-linux.tar.gz[/url]

tar -xzvf fetion20090318001-linux.tar.gz

 

wget [url]http://www.it-adv.net/fetion/downng/library_linux.tar.gz[/url]
tar -xzvf library_linux.tar.gz -C /lib

#/usr/local/tools/fetion/fetion --mobile=159******  --pwd=2233*** --to=158*** --msg-gb="messages"

手机能接收到"messages",说明fetion发送短信息成功。

设置权限chown -R nagios.nagios /usr/local/tools

 

使linux下的fetion发送信息支持中文件,只需要修改--msg-gb=""为--msg-utf8=""


你可能感兴趣的:(nagios,安装配置,组件安装)