nagios安装使用指南

来源:互联网 发布:安知玉如意好看吗 编辑:程序博客网 时间:2024/05/29 23:47

话不多说,下面开始,nagios具体的介绍,可以搜一下,这篇文章为作者在实际操作中整理出来,写出来的都是负责人的内容~

环境准备

此文档共用2台服务器的配置,操作系统均为centOS6.7,安装用户都为nagios用户,所有的安装都必须基于nagios,当权限不足时,采用sudo的方式,具体信息如下:

IP地址 角色 安装用户 192.168.1.10 Nagios服务端 nagios 192.168.1.11 被监控主机 nagios

nagios服务端安装步骤

编译安装nagios软件

安装需要192.168.1.10服务器预装cc,glibc,glibc-common,gd,gd-devel,xinetd,openssl-devel等,执行命令:

[nagios@localhost ~]$ rpm -qa | grep **#依次检查是否安装以上软件,如果没有安装则执行命令:[nagios@localhost ~]$ sudo yum install -y **

依赖部分处理好之后,下面进行nagios的编译安装,nagios的下载地址为:nagios官网下载 ,下载好之后,进入防止安装包的目录,解压压缩包:

[nagios@localhost ~]$ tar zxvf nagios-3.5.0.tar.gz

进入解压后的目录: cd /home/nagios/nagios依次执行:

./configure --prefix=/usr/local/nagiosmake all sudo make install sudo make install-initmake install-commandmodemake install-configsudo chkconfig --add nagiossudo chkconfig --level 35 nagios on

最后执行

sudo chkconfig --list nagios

显示如下结果:

这里写图片描述

下面来验证nagios是否被安装:
切换到目录/usr/local/nagios/下,查看目录结构如下:

这里写图片描述

如果以上目录都存在,说明程序已经被安装到服务器中,各个目录的作用为:

目录 作用 bin 可执行程序所在目录 etc 配置文件所在目录 libexec 外部插件所存放的目录 sbin Nagios CGI文件所在目录,也就是执行外部命令所需文件所在的目录 share 网页文件存放目录 var 日志,lock文件目录

安装nagios插件

nagios插件下载地址为:官网下载解压安装包:

tar zxvf nagios-plugins-2.0.1.tar.gz

进入解压目录:

[nagios@localhost ~]$ cd nagios-plugins-2.0.1[nagios@localhost nagios-plugins-2.0.1]$ pwd   /home/nagios/nagios-plugins-2.0.1     #解压路径

分别执行命令:

./configure --prefix=/usr/local/nagiosmakesudo make install

安装apache和php

安装apache

nagios提供了web页面,可以观看被监控的资源状态,所以需安装apache与php来支持此项功能,那么首,查看操作系统是否自带了apache,如果有就删除掉:

[nagios@localhost nagios-plugins-2.0.1]$ rpm -qa | grep httpdhttpd-tools-2.2.15-45.el6.centos.x86_64httpd-2.2.15-45.el6.centos.x86_64#删除自带的apache[nagios@localhost nagios-plugins-2.0.1]$ sudo rpm -e --nodeps httpd

下载apache安装包 官网下载 解压下载的安装包并安装:

#创建文件夹,存到执行脚本配置文件等sudo mkdir /usr/local/apache2#解压安装包tar zxvf httpd-2.2.23.tar.gz#进入安装路径cd httpd-2.2.23#配置值向目录,通第一条命令的目录./configure --prefix=/usr/local/apache2#编译make#安装sudo make install
安装php

php安装包下载地址:官网下载,下载后执行以下命令:

#解压安装包tar zxvf php-5.4.10.tar.gz#创建文件夹,存到执行脚本配置文件等sudo mkdir /usr/local/php#进入解压之后的目录cd php-5.4.10#配置指向目录./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs

执行最后一条语句时,出现如下错误:

这里写图片描述
说明没有安装libxml2和libxml2-devel,安装即可:

#已经存在libxml2,说明只安装libxml2-devel即可[nagios@localhost php-5.4.10]$ rpm -qa libxml2libxml2-2.7.6-20.el6.x86_64#安装libxml2-develsudo yum install -y libxml2-devel

执行成功,接续执行:

#编译make#安装make install

最后将安装目录下的php.ini-production文件,拷贝至/usr/local/php/lib/下并命名为php.ini

sudo cp php.ini-production /usr/local/php/lib/php.ini
配置apache

编辑apache的配置文件httpd.conf

sudo vim /usr/local/apache2/conf/httpd.conf

找到:

User daemonGroup daemon

修改为:

Group nagios

找到:

<IfModule dir_module>    DirectoryIndex index.html</IfModule>

修改为:

<IfModule dir_module>    DirectoryIndex index.html index.php    AddType application/x-httpd-php .php</IfModule>

为了增加用户的访问权限,在此文件中增加以下配置:

#setting for magionScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"<Directory "/usr/local/nagios/sbin">    AuthType Basic    Options ExecCGI    AllowOverride None    Order allow,deny    Allow from all    AuthName "Nagios Access"    AuthUserFile /usr/local/nagios/etc/htpasswd    Require valid-user</Directory>Alias /nagios "/usr/local/nagios/share"<Directory "/usr/local/nagios/share">    AuthType Basic    Options None    AllowOverride None    Order allow,deny    Allow from all    AuthName "nagios Access"    AuthUserFile /usr/local/nagios/etc/htpasswd    Require valid-user</Directory>

创建apache目录验证文件
在上面的配置中,指定了权限验证文件/usr/local/nagios/etc/htpasswd,下面来创建这个文件,最后的nagios是用户名,输入命令后,需要手工输入密码:

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

最后启动apache服务:

sudo /usr/local/apache2/bin/apachectl start

访问地址http://yourserver/nagios
这里写图片描述
输入用户名密码
这里写图片描述
出现上述页面,即apache安装成功

配置nagios server

默认情况下,nagios没有做任何配置,那么下面介绍一些主要配置文件和如何配置服务,配置文件主要在目录: /usr/local/nagios/etc/
这里写图片描述
nagios的配置文件,是相互联系的,搞清楚具体的配置,就可以弄清楚他们之间的依赖:

  • templates.cfg
    nagios主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用,这就是templates.cfg的作用,具体的含义如下:
#一般的通用配置,下面具体的某种类型配置中,可以引用次配置define contact{        name                            generic-contact         ; 别名        service_notification_period     24x7    当服务出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义        host_notification_period        24x7                ;当主机出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义        service_notification_options    w,u,c,r,f,s             ; 什么级别的通知(针对主机),会被发送出去(w:warn|u:unknow|c:criticle紧急状态|r:recover恢复状态|d:宕机),f,s含义还没查到        host_notification_options       d,u,r,f,s               ;什么级别的警告(针对服务)会被通知出去        service_notification_commands   notify-service-by-email ; 服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件; 其中“notify-service-by-email”在commands.cfg文件中定义        host_notification_commands      notify-host-by-email    ; 主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件; 其中“notify-host-by-email”在commands.cfg文件中定义        register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!        }define host{        name                            generic-host    ; 主机名称,这里的主机名,并不是直接对应到真正机器的主机名 ; 乃是对应到在主机配置文件里所设定的主机名        notifications_enabled           1               ; Host notifications are enabled 主机启动通知,1已启用,0为启用        event_handler_enabled           1               ; Host event handler is enabled         flap_detection_enabled          1               ; Flap detection is enabled        failure_prediction_enabled      1               ; Failure prediction is enabled        process_perf_data               1               ; Process performance data 其值可以为01,其作用为是否启用Nagios的数据输出功能;如果将此项赋值为1,那么Nagios就会将收集的数据写入某个文件中,以备提取        retain_status_information       1               ; Retain status information across program restarts        retain_nonstatus_information    1               ; Retain non-status information across program restarts        notification_period             24x7            ; Send host notifications at any time 指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!        }# 功能同上,只不过这个是针对linux服务器的特殊配置define host{        name                            linux-server    ; The name of this host template        use                             generic-host    ; This template inherits other values from the generic-host template use表示引用,也就是将主机generic-host的所有属性引用到linux-server中来; 在nagios配置中,很多情况下会用到引用        check_period                    24x7            ; By default, Linux hosts are checked round the clock 这里的check_period告诉nagios检查主机的时间段        check_interval                  5               ; Actively check the host every 5 minutes 对主机的检查间隔时间,单位/分钟        retry_interval                  1               ; Schedule host check retries at 1 minute intervals cho 重试间隔,单位/分钟        max_check_attempts              10              ; Check each Linux host 10 times (max) 最大重试此书        check_command                   check-host-alive ; Default command to check Linux hosts  指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义        notification_period             workhours       ; Linux admins hate to be woken up, so we only notify during the day 主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义                                                        ; Note that the notification_period variable is being overridden from                                                        ; the value that is inherited from the generic-host template!        notification_interval           0               ; Resend notifications every 2 hours 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间,0代表值通知1次        notification_options            d,u,r           ; Only send notifications for specific host states 定义主机在什么状态下可以发送通知给使用者        contact_groups                  admins          ; Notifications get sent to the admins by default 指定联系人组,这个“admins”在contacts.cfg文件中定义        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!        }# Generic service definition template - This is NOT a real service, just a template!定义服务的通用配置,下面的可以利用use来引用define service{        name                            generic-service         ; The 'name' of this service template 为这个服务取一个名字        active_checks_enabled           1                       ; Active service checks are enabled        passive_checks_enabled          1                       ; Passive service checks are enabled/accepted        parallelize_check               1                       ; Active service checks should be parallelized (disabling this can lead to major performance problems)        obsess_over_service             1                       ; We should obsess over this service (if necessary)        check_freshness                 0                       ; Default is to NOT check service 'freshness'        notifications_enabled           1                       ; Service notifications are enabled        event_handler_enabled           1                       ; Service event handler is enabled        flap_detection_enabled          1                       ; Flap detection is enabled        failure_prediction_enabled      1                       ; Failure prediction is enabled        process_perf_data               1                       ; Process performance data        retain_status_information       1                       ; Retain status information across program restarts        retain_nonstatus_information    1                       ; Retain non-status information across program restarts        is_volatile                     0                       ; The service is not volatile        check_period                    24x7                    ; The service can be checked at any time of the day 告诉nagios检查服务的时间段        max_check_attempts              3                       ; Re-check the service up to 3 times in order to determine its final (hard) state        normal_check_interval           10                      ; Check the service every 10 minutes under normal conditions        retry_check_interval            2                       ; Re-check the service every two minutes until a hard state can be determined        contact_groups                  admins                  ; Notifications get sent out to everyone in the 'admins' group 指定联系人组        notification_options            w,u,c,r                 ; Send notifications about warning, unknown, critical, and recovery events        notification_interval           60                      ; Re-notify about service problems every hour        notification_period             24x7                    ; Notifications can be sent out at any time         register                        0                      ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!        }#定义一个监控本机的servicedefine service{        name                            local-service           ; The name of this service template        use                             generic-service         ; Inherit default values from the generic-service definition        max_check_attempts              4                       ; Re-check the service up to 4 times in order to determine its final (hard) state        normal_check_interval           5                       ; Check the service every 5 minutes under normal conditions        retry_check_interval            1                       ; Re-check the service every minute until a hard state can be determined        register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!        }#其余的配置,如打印机,windowServer,交换机的监控这里暂时不介绍
  • resource.cfg
    这个配置文件只有一行:
$USER1$=/usr/local/nagios/libexec

指定了nagios可执行插件的路径,这个根据自己的实际路径来决定.将来配置插件或者自定义插件,会大量用到这个变量

  • commands.cfg
    这个文件是定义一些命令的时候,需要修改的文件,目前不需要修改默认的配置文件,后面章节中会有添加自定义服务,那里会详细介绍如何修改

  • hosts.cfg文件
    这个文件需要手动创建,在/usr/local/nagios/etc/objects目录下创建,内容如下:

define host{        use                    linux-server     ;引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。        host_name              nagios1          ;主机名        alias                  nagios1          ;主机别名        address                192.168.1.11     ;被监控的主机地址,这个地址可以是ip,也可以是域名。        }#定义一个主机组  define hostgroup{        hostgroup_name          bsmart-servers  ;主机组名称,可以随意指定。        alias                  bsmart servers   ;主机组别名        members                nagios1          ;主机组成员,其中“Nagios-Linux”就是上面定义的主机。            }
  • localhost.cfg
    这个配置文件是监控nagios server本身的
# 为本机定义一个host,取名为localhostdefine host{        use                     linux-server            ; 引用模板配置文件里的内容                                                        ; This host definition will inherit all variables that are defined                                                        ; in (or inherited by) the linux-server host template definition.        host_name               localhost        alias                   localhost        address                 127.0.0.1        }#定义主机组,成员只有localhostdefine hostgroup{        hostgroup_name  linux-servers ; The name of the hostgroup        alias           Linux Servers ; Long name of the group        members         localhost     ; Comma separated list of hosts that belong to this group        }#配置文件的其他内容都为利用默认的插件,配置的一些服务,也就是localhost需要监控的一些项目
  • services.cfg
    这个文件也需要手工创建, 在/usr/local/nagios/etc/objects下创建,主要内容为:
define service{        use                    local-service          ;引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。        host_name              nagios1                ;指定要监控哪个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。        service_description    check-host-alive       ;对监控服务内容的描述,以供维护人员参考。        check_command          check-host-alive       ;指定检查的命令。        }define service{        use                    local-service        host_name              nagios1        service_description    Current Load        check_command          check_nrpe!check_load        }define service{        use                    local-service        host_name              nagios1        service_description    Check Disk sda1        check_command          check_nrpe!check_sda1        }define service{        use                    local-service        host_name              nagios1        service_description    Total Processes        check_command          check_nrpe!check_total_procs        }define service{        use                    local-service        host_name              nagios1        service_description    Current Users        check_command          check_nrpe!check_users        }define service{        use                    local-service        host_name              nagios1        service_description    Check Zombie Procs        check_command          check_nrpe!check_zombie_procs        }
  • contacts.cfg
    主要配置一些联系人,联系人组:
#联系人define contact{        contact_name                    gzd             ; Short name of user        use                             generic-contact ; Inherit default values from generic-contact template (defined above)引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义        alias                           gzd             ; Full name of user        email                           gzd4215@163.com ;         }#联系人组,成员只有gzddefine contactgroup{        contactgroup_name       admins        alias                   admins        members                 gzd        }
  • timeperiods.cfg
    时间的定义文件:
#24*7也就是每天define timeperiod{        timeperiod_name 24x7        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    }#美国的节假日,用不到,可以直接删除define timeperiod{    name            us-holidays        timeperiod_name         us-holidays        alias                   U.S. Holidays        january 1               00:00-00:00     ; New Years        monday -1 may           00:00-00:00     ; Memorial Day (last Monday in May)        july 4                  00:00-00:00     ; Independence Day        monday 1 september      00:00-00:00     ; Labor Day (first Monday in September)        thursday 4 november     00:00-00:00     ; Thanksgiving (4th Thursday in November)        december 25             00:00-00:00     ; Christmas        }
  • cgi.cfg
    此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程,关闭nagios通知,停止nagios主机检测等,就需要配置cgi.cfg文件了,由于nagios的web监控界面验证用户为nagios,所以只需在cgi.cfg文件中需要修改的配置信息如下:

    default_user_name=nagios
    authorized_for_system_information=nagiosadmin, nagios
    authorized_for_configuration_information=nagiosadmin, nagios
    authorized_for_system_commands= nagios
    authorized_for_all_services=nagiosadmin, nagios
    authorized_for_all_hosts=nagiosadmin, nagios
    authorized_for_all_service_commands=nagiosadmin, nagios
    authorized_for_all_host_commands=nagiosadmin, nagios
  • nagios.cfg

  • nagios的核心配置文件,所有的配置,需要在此定义,才可以生效.
log_file=/usr/local/nagios/var/nagios.log                  # 定义nagios日志文件的路径cfg_file=/usr/local/nagios/etc/objects/commands.cfg        # “cfg_file”变量用来引用对象配置文件,如果有更多的对象配置文件,在这里依次添加即可。cfg_file=/usr/local/nagios/etc/objects/contacts.cfgcfg_file=/usr/local/nagios/etc/objects/hosts.cfgcfg_file=/usr/local/nagios/etc/objects/services.cfgcfg_file=/usr/local/nagios/etc/objects/timeperiods.cfgcfg_file=/usr/local/nagios/etc/objects/templates.cfgcfg_file=/usr/local/nagios/etc/objects/localhost.cfg      # 本机配置文件cfg_file=/usr/local/nagios/etc/objects/windows.cfg        # windows 主机配置文件(不用可以删掉)object_cache_file=/usr/local/nagios/var/objects.cache      # 该变量用于指定一个“所有对象配置文件”的副本文件,或者叫对象缓冲文件precached_object_file=/usr/local/nagios/var/objects.precacheresource_file=/usr/local/nagios/etc/resource.cfg          # 该变量用于指定nagios资源文件的路径,可以在nagios.cfg中定义多个资源文件。status_file=/usr/local/nagios/var/status.dat              # 该变量用于定义一个状态文件,此文件用于保存nagios的当前状态、注释和宕机信息等。status_update_interval=10                                  # 该变量用于定义状态文件(即status.dat)的更新时间间隔,单位是秒,最小更新间隔是1秒。nagios_user=nagios                                        # 该变量指定了Nagios进程使用哪个用户运行。nagios_group=nagios                                        # 该变量用于指定Nagios使用哪个用户组运行。check_external_commands=1                                  # 该变量用于设置是否允许nagios在web监控界面运行cgi命令;                                                          # 也就是是否允许nagios在web界面下执行重启nagios、停止主机/服务检查等操作;                                                        # “1”为运行,“0”为不允许。command_check_interval=10s                                # 该变量用于设置nagios对外部命令检测的时间间隔,如果指定了一个数字加一个"s"(如10s);                                                          # 那么外部检测命令的间隔是这个数值以秒为单位的时间间隔;                                                          # 如果没有用"s",那么外部检测命令的间隔是以这个数值的“时间单位”的时间间隔。interval_length=60                                        # 该变量指定了nagios的时间单位,默认值是60秒,也就是1分钟 # 即在nagios配置中所有的时间单位都是分钟。

最后验证配置文件是正确:

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

如果出现以下内容,则验证成功:
这里写图片描述

nagios的启动,停止操作

启动主要有三种方式:

#指定配置文件启动/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg#初始化脚本启动/etc/init.d/nagios start#利用服务启动 service nagios start

重启:

#初始化脚本重启/etc/init.d/nagios reload或者/etc/init.d/nagios restart#利用服务启动 service nagios restart#可以通过web监控页的 "Process Info" -> "Restart the Nagios process"来重启nagios

停止

#初始化脚本重启/etc/init.d/nagios stop#利用服务启动 service nagios stop#可以通过web监控页的 "Process Info" -> "Shutdown the Nagios process"来停止nagios

启动nagios后,登录web页面,点击左侧菜单”hosts”,可以看到我们在上面定义的主机”localhost”:
这里写图片描述
点击左侧菜单的”service”,可以看到监控的服务状态,如果为PENDING,说明服务等待执行中,稍等一会或者调小运行间隔可缩短等待时间,可以看到,服务的监控状态均绿色,”OK”状态,表示正常:
这里写图片描述
至此,nagios Serveer的配置已经完成!

nagios客户端配置

安装nagios插件和NRPE

被监控主机上需要安装NRPE和安装nagios-plugins-2.0.1.tar.gz
这个插件和nagios server上的插件为同一,安装方法也一样:

# mkdir /usr/local/nagios# tar zxvf nagios-plugins-2.0.1.tar.gz# cd nagios-plugins-2.0.1# configure --prefix=/usr/local/nagios# make && make install

安装NPRE:
下载请点击:下载地址!
安装需SSL库,运行:sudo yum install -y openssl-devel安装,安装后,一次执行以下命令:

#解压安装包tar zxvf nrpe-2.8.1.tar.gz#进入解压目录     cd nrpe-2.8.1#配置安装./configure#编译make all#安装check_nrpe插件make install-plugin#安装daemon make install-daemon#安装配置文件make install-daemon-config#安装xinetdmake install-xinetd

安装好了之后,可以看到多了这个文件:/etc/xinetd.d/nrpe,编辑这个文件:

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         #在这里增加nagios server的ip,空格分割        only_from       = 127.0.0.1 192.168.1.10}

编辑etc/services 文件,增加nrpe服务,增加内容:

nrpe            5666/tcp        # nrpe

重启xinted服务:

service xinetd restart

输入命令netstat -na | grep :5666,出现:
这里写图片描述
则为启动正常!

配置监控主机nrpe服务

安装NRPE:

一次执行命令:tar zxvf nrpe-2.13.tar.gzcd nrpe-2.13./configuremake allmake install-plugin

以上内容结束,重启nagios服务!

被监控主机的配置

修改/usr/local/nagios/etc/nrpe.cfg配置文件:

ommand[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Zcommand[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200      

如上图,我们在被监控的主机上定义的命令,需要在此配置文件给出!
最后请重启nagios

PNP4Nagios

PNP4Nagios 是一个用于显示nagios性能图表的插件,基于RRDTool日志分析,并以 Kohana(一个 PHP 开发框架)呈现在 Web 端,可以以 Action Url 的形式集成到 Nagios 中,此处的安装主机均在nagios server机器上安装

Nagios对服务或主机监控的是一个瞬时状态,有时候系统管理员如果需要了解主机在一段时间内的性能以及服务的响应状态,并且形成图表时,就需要通过查看日志数据来分析,但是这种方式不但繁琐,而且抽象,可以利用PNP来解决这个问题

安装PNP

PNP是一个小巧的开源软件包,它基于PHP和PERL,PNP可以利用rrdtool工具将Nagios采集的数据绘制成相关的图表,然后显示主机或者服务在一段时间内的运行状况

安装rrdtool

rrdtool是一个生成图表的工具,下载地址为: 下载地址
以此执行以下命令:

#进入压缩包所在目录cd /home/nagios/创建配置目录sudo mkdir /usr/local/rrdtool解压压缩包,注意这里用tar xvf命令解压tar xvf rrdtool-1.4.8.tar.gz  进入解压包目录cd rrdtool-1.4.8#配置目录./configure --prefix=/usr/local/rrdtool

提示需要安装依赖:perl和fix库文件:

yum -y install pango*yum -y install perl*

继续执行

makemake install

安装pnp4nagios

tar -xvzf pnp4nagios-0.6.21.tar.gz    cd pnp4nagios-0.6.21./configure --with-nagios-user=nagios --with-nagios-group-nagios    --with-rrdtool=/usr/local/rrdtool/bin/rrdtoolmake allsudo make installsudo make install-webconfmake install-configmake install-init

配置PNP

创建配置文件misccommands.cfg, nagios.cfg, rra.cfg, check_all_local_disks.cfg, check_nrpe.cfg, check_nwstat.cfg等
执行命令:

cp misccommands.cfg-sample  misccommands.cfgcp nagios.cfg-sample  nagios.cfgcp rra.cfg-sample rra.cfg

进入pages目录,创建配置文件web_traffic.cfg

cp web_traffic.cfg-sample web_traffic.cfgcd ../check_commandscp check_all_local_disks.cfg-sample  check_all_local_disks.cfgcp check_nrpe.cfg-sample  check_nrpe.cfgcp check_nwstat.cfg-sample  check_nwstat.cfg

最后,重启NPCD服务:

sudo /etc/init.d/npcd restart

修改nagios server配置文件

修改nagios.cfg文件:

sudo vim /usr/local/nagios/etc/nagios.cfgprocess_performance_data=0#修改为rocess_performance_data=1#打开注释host_perfdata_command=process-host-perfdataservice_perfdata_command=process-service-perfdata

修改/usr/local/nagios/etc/objects/commonds.cfg:
增加下面内容:

#ss-host-perfdata' command definitiondefine command{        command_name    process-host-perfdata        command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA        }# 'process-service-perfdata' command definitiondefine command{command_name    process-service-command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl

修改 /usr/local/nagios/etc/objects/templates.cfg:
添加:

define host {        name      hosts-pnp        register  0        action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$}define service {        name      services-pnp        register  0        action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$     }

修改vim /usr/local/nagios/etc/objects/services.cfg:
所有服务引用services-pnp服务,例如:

define service{        use                    local-service,services-pnp        host_name              nagios1        service_description    Current Load        check_command          check_nrpe!check_load        }

最后,重启nagios server

配置pnp4nagios虚拟目录

执行命令: vi /usr/local/apache2/conf/httpd.conf,在文档末尾添加:

Alias /pnp4nagios  "/usr/local/pnp4nagios/share"<Directory "/usr/local/pnp4nagios/share">    AuthType Basic    Options None    AllowOverride None    Order allow,deny    Allow from all    AuthName "nagios Access"    AuthUserFile /usr/local/nagios/etc/htpasswd    Require valid-user</Directory>

修改之后,重启apache服务
最后验证是否安装正确:
这里写图片描述
图标已经出现(途中红框部分),点击进去,发现页面报错误:
这里写图片描述
解决办法,可以将/usr/local/pnp4nagios/share/ install.php文件删除即可.
删除后,重启点击图标,可以看到:
这里写图片描述

以上则安装成功!

安装nagiosql

NagiosQL是一个基于Web方式的Nagios配置管理工具,它使用PHP语言开发,可运行在Apache下,后台使用Mysql数据库.同时,NagiosQL也是一个开源软件,Nagios监控配置信息都存放于文件中,配置和修改都需要手工编辑文件,这样十分不便,尤其当监控的内容增多时,问题就更加明显.NagiosQL就是一款解决此类问题的软件,它提供了可视化的配置环境(基于Web方式),以下的所有安装,均在nagios server上进行

安装nagiosql

安装包下载地址:下载请点击
解压安装包:

tar zxvf /home/nagios/nagiosql_311.tar.gz

将解压包放入nagios目录下:

mv nagiosql /usr/local/nagios/

建立配置文件目录:
建立nagiosql导出nagios的配置文件目录,命令如下:

sudo mkdir -p /etc/nagiosql/{hosts,services,backup,import}sudo mkdir -p /etc/nagiosql/backup/{hosts,services}

修改httpd.conf:
添加nagiosql的虚拟目录,文件目录:

/usr/local/apache2/conf/httpd.conf

添加的内容为:

Alias /nagiosql "/usr/local/nagios/nagiosql/"<Directory "/usr/local/nagios/nagiosql/">    Options None    AllowOverride None    Order allow,deny    Allow from all</Directory>

最后重启apache:

sudo /usr/local/apache2/bin/apachectl restart

访问nagiosql web页面,地址为访问地址: http://yourserver/nagiosql
出现异常:
这里写图片描述
说明php环境没有安装gettext,那么下面安装gettext
进入php解压包里的目录: /home/nagios/php-5.4.10/ext/gettext
依次执行命令:

/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmakemake install

最后,修改文件/usr/local/php/lib/php.ini,在文件里增加内容:

extension = "gettext.so"

重新打开后,显示如下则正常:`
这里写图片描述

开始安装

点击开始安装,出现错误:”mysql组件未安装”,这个错误并不是没有安装mysql数据库造成的,而是因为PHP在安装时,没有安装mysql相关模块造成的,那么,下面开始说明,如何在php已经安装的情况下,安装php-mysql组件:
进入php的解压目录:
所有php的版本都要统一的,文档中都是用的同一PHP:

cd /home/nagios/php-5.4.10/ext/mysql

执行命令:

/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/ --with-zlib-dir=/usr/local/lib

这里有个问题,通过yum安装的mysql, “–with-mysql”参数填写”/usr/”就好,这个初步判断是由于configure脚本的内容决定的,继续添写下级目录,会报错找不到mysql头文件.上述命令执行后,如果报错信息为:

configure: error: Cannot find libmysqlclient under /usr.Note that the MySQL client library is not bundled anymore!

解决办法为执行命令:

ln -s /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so

这个是因为php的在编译的时候,会去/usr/lib目录下寻找libmysqlclient,但是mysql默认是将libmysqlclient安装到了/usr/lib64/mysql/目录下,所以在这里,为/usr/lib64/mysql/libmysqlclient.so.16在/usr/lib/目录下创建一个软连接,这样,重新运行的命令,就会执行通过.
继续执行命令:

makemake install

修改php.ini文件

sudo vim /usr/local/php/lib/php.ini

将”;extension=php_mysql.dll”修改为extension=mysql.so
将” ;date.timezone = “修改为” date.timezone = Asia/Shanghai”
这里的时区不做修改,在安装nagiosql的时候,会有可能显示配置文件已过期!因为时区不一致,导致时间比对出问题,报错”配置文件已过期”
重启apache服务:

sudo /usr/local/apache2/bin/apachectl restart

进入web页面:http://yourserver/nagiosql,点击”开始安装”,可以看到:
这里写图片描述
红框位置,已经不再报错,可以继续往下执行安装程序了!

mysql的配置

上面的网页中,点击”下一步”,出现:
这里写图片描述

填写上图红框中的内容.点击”下一步”:

删除magiosql安装目录

点击”下一步”之后,出现:
这里写图片描述
要求删除安装目录,下面采用修改权限的方式来删除:

chmod 000 /usr/local/nagios/nagiosql/install

删除后,点击”完成”,会弹出登录页面(如下图),至此,安装部分结束:
这里写图片描述

配置nagiosql

填写用户名:admin,密码,登陆进管理页面:
这里写图片描述

修改nagios相关路径

这里写图片描述
点击左侧框的图标,计入页面,并填写红框内容:
这里写图片描述
点击”保存”,提示成功写入数据库则完成:
这里写图片描述

导入nagios配置文件

进入菜单”管理->工具->导入数据”,如下图:
这里写图片描述
将nagios的全部配置文件导入,选择所有文件,点击”导入”按钮.
继续进入菜单:”管理 -> 工具 -> Nagios控制”:
这里写图片描述
点击红框按钮,完成数据写入.
其实上面的两个步骤,第一个是将nagios配置文件的数据写入到mysql表,而写第二个步骤,则是将mysql中已经写好的nagios配置文件数据,写入到/etc/nagiosql/目录中,那么,现在来查看/etc/nagiosql/目录下是否已经写好了配置文件,如果增加了配置文件,则证明写入成功,如下图,文件已经成功写入:
这里写图片描述

修改nagios主配置文件

主配置文件就是指”nagios.cfg”,只不过,在这里是用web界面做修改,进入菜单”管理 -> 工具 -> Nagios配置”:
这里写图片描述
编辑里面的配置内容:将”cfg_file”开头的配置注释掉,加入新的配置,如下:

cfg_dir=/etc/nagiosql/hosts/cfg_dir=/etc/nagiosql/services/cfg_file=/etc/nagiosql/commands.cfgcfg_file=/etc/nagiosql/contactgroups.cfgcfg_file=/etc/nagiosql/contacts.cfgcfg_file=/etc/nagiosql/contacttemplates.cfgcfg_file=/etc/nagiosql/hostdependencies.cfgcfg_file=/etc/nagiosql/hostescalations.cfgcfg_file=/etc/nagiosql/hostextinfo.cfgcfg_file=/etc/nagiosql/hostgroups.cfgcfg_file=/etc/nagiosql/hosttemplates.cfgcfg_file=/etc/nagiosql/servicedependencies.cfgcfg_file=/etc/nagiosql/serviceescalations.cfgcfg_file=/etc/nagiosql/serviceextinfo.cfgcfg_file=/etc/nagiosql/servicegroups.cfgcfg_file=/etc/nagiosql/servicetemplates.cfgcfg_file=/etc/nagiosql/timeperiods.cfg

修改之后,点击”保存”
然后, “检查配置文件”来检测一下是否有错误的地方:
这里写图片描述
点击后,报错:
这里写图片描述
检查文件目录”/etc/nagiosql”下,在这个目录下,里面寻找hosts/hplj2605dn.cfg文件,找到之后发现,里面是一个主机的配置:
这里写图片描述
看起来是一个惠普打印机的配置,所以觉得这个配置没有什么用,应该是模板配置文件,所以先尝试删除此文件,保险起见,先执行:

mv /etc/nagiosql/hosts/hplj2605dn.cfg /etc/nagiosql/hosts/hplj2605dn.cfg.bak

同样的,修改这个,同时也必须修改相关依赖文件,比如service的配置文件,所以在此执行命令:

mv /etc/nagiosql/services/imp_hplj2605dn.cfg /etc/nagiosql/services/imp_hplj2605dn.cfg.bak

重新检测配置文件,发现类似的错误,不过,这次的错误是” hosts/inksys-srw224p.cfg”造成的,这个是一个路由器的配置,所以和以上的处理方法同样,删除或者重名了,以此类推,以同样的方式来处理”hosts/winserver.cfg”,经过对三个配置文件的处理,重新检测,发现配置文件没有问题:
这里写图片描述
最后,请点击:重新启动nagios的按钮来重启nagios!

nagiosql的应用配置

nagiosql的应用配置是配置一些自定义或nagios带的一些服务,配置菜单在”管理 -> 命令 -> 定义”:
这里写图片描述
他的主机定义在”管理 -> 监督 -> Host”:
这里写图片描述
其中有三个主机,这三个主机的配置文件,已经在之前删除,所以,这里将这三个主机删除.删除按钮就在右侧的删除图标

如何自定义服务

因为,在nagios server(10.10.20.243)上已经安装了mysql,那么下面,准备在此自定义一个查询mysql服务是否启动的服务

编写监控shell脚本
#!/bin/bashprocess=`ps -ef |grep mysql|grep -v grep |wc -l`if [ $process -ne 2 ]then echo "OK-mysql已经运行!|mc=1;-;0;"else echo "CRITICAL info: 未发现mysql进程|mc=0;-;0;"fi

编写完成后,将此脚本check_mysql.sh放入nagios server(10.10.20.243)主机的/usr/local/nagios/libexec/目录下

定义命令

进入定义命令的菜单,如图:
这里写图片描述
点击”添加”按钮.
这里写图片描述
填写完成后,保存.

定义服务

进入定义服务的菜单,如图:
这里写图片描述
点击添加按钮,在页面内编辑:
这里写图片描述
点击保存,现在看一下服务列表:
这里写图片描述

检查文件并重启nagios

重启前,需要进行配置检查和写入配置数据等,操作如下图,一次执行,确保每一步都没有报错才可以执行下一步:
这里写图片描述

检查服务是否成功执行

进入http://yourserver/nagios/,点击左侧菜单”services”按钮:
这里写图片描述

以上,则定义成功!

没有更详细的说明自定义服务的说明和更多的一些例子,因为需要结合pnp4nagios做报表展示,作者只研究出了一个大概和满足了当下需求,所以为了不误导大家,并没有把其他示例和编写规则写上去,大家可以先自己去研究一下,篇幅较长,整理过程中可能会出现有问题的地方,希望谅解,编写不易,转载请注明出处!

原创粉丝点击