nagios安装使用指南

话不多说,下面开始,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/nagios
make all 
sudo make install 
sudo make install-init
make install-commandmode
make install-config
sudo chkconfig --add nagios
sudo chkconfig --level 35 nagios on

最后执行

sudo chkconfig --list nagios

显示如下结果:

[图片上传失败...(image-d2a366-1551885373192)]

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

[图片上传失败...(image-699daa-1551885373192)]

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

目录 作用
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/nagios
make
sudo make install

安装apache和php

安装apache

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

[nagios@localhost nagios-plugins-2.0.1]$ rpm -qa | grep httpd
httpd-tools-2.2.15-45.el6.centos.x86_64
httpd-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

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

[图片上传失败...(image-391ebf-1551885373192)]
说明没有安装libxml2和libxml2-devel,安装即可:

#已经存在libxml2,说明只安装libxml2-devel即可
[nagios@localhost php-5.4.10]$ rpm -qa libxml2
libxml2-2.7.6-20.el6.x86_64
#安装libxml2-devel
sudo 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 daemon
Group 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 magion
ScriptAlias /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
[图片上传失败...(image-20e1f0-1551885373192)]
输入用户名密码
[图片上传失败...(image-2491da-1551885373192)]
出现上述页面,即apache安装成功

配置nagios server

默认情况下,nagios没有做任何配置,那么下面介绍一些主要配置文件和如何配置服务,配置文件主要在目录: /usr/local/nagios/etc/
[图片上传失败...(image-823eed-1551885373192)]
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 其值可以为0或1,其作用为是否启用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!
        }
#定义一个监控本机的service
define 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,取名为localhost
define 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
        }
#定义主机组,成员只有localhost
define 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 ; 
        }
#联系人组,成员只有gzd
define 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.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.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/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.precache
resource_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

如果出现以下内容,则验证成功:
[图片上传失败...(image-3e4265-1551885373192)]

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":
[图片上传失败...(image-35349d-1551885373192)]
点击左侧菜单的"service",可以看到监控的服务状态,如果为PENDING,说明服务等待执行中,稍等一会或者调小运行间隔可缩短等待时间,可以看到,服务的监控状态均绿色,"OK"状态,表示正常:
[图片上传失败...(image-a88981-1551885373192)]
至此,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
#安装xinetd
make 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,出现:
[图片上传失败...(image-3ce7d-1551885373192)]
则为启动正常!

配置监控主机nrpe服务

安装NRPE:

一次执行命令:
tar zxvf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin

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

被监控主机的配置

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

ommand[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_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
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      

如上图,我们在被监控的主机上定义的命令,需要在此配置文件给出!
最后请重启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*

继续执行

make
make 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/rrdtool
make all
sudo make install
sudo make install-webconf
make install-config
make 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.cfg
cp nagios.cfg-sample  nagios.cfg
cp rra.cfg-sample rra.cfg

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

cp web_traffic.cfg-sample web_traffic.cfg
cd ../check_commands
cp check_all_local_disks.cfg-sample  check_all_local_disks.cfg
cp check_nrpe.cfg-sample  check_nrpe.cfg
cp 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.cfg
process_performance_data=0
#修改为
rocess_performance_data=1
#打开注释
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata

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

#ss-host-perfdata' command definition
define command{
        command_name    process-host-perfdata
        command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
        }
# 'process-service-perfdata' command definition
define 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服务
最后验证是否安装正确:
[图片上传失败...(image-34aec3-1551885373192)]
图标已经出现(途中红框部分),点击进去,发现页面报错误:
[图片上传失败...(image-af70d7-1551885373192)]
解决办法,可以将/usr/local/pnp4nagios/share/ install.php文件删除即可.
删除后,重启点击图标,可以看到:
[图片上传失败...(image-59c129-1551885373192)]

以上则安装成功!

安装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
出现异常:
[图片上传失败...(image-a69adc-1551885373192)]
说明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-config
make
make install

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

extension = "gettext.so"

重新打开后,显示如下则正常:`
[图片上传失败...(image-eece90-1551885373192)]

开始安装

点击开始安装,出现错误:"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/目录下创建一个软连接,这样,重新运行的命令,就会执行通过.
继续执行命令:

make
make 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,点击"开始安装",可以看到:
[图片上传失败...(image-b09bdd-1551885373192)]
红框位置,已经不再报错,可以继续往下执行安装程序了!

mysql的配置

上面的网页中,点击"下一步",出现:
[图片上传失败...(image-9f2743-1551885373192)]

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

删除magiosql安装目录

点击"下一步"之后,出现:
[图片上传失败...(image-96ff17-1551885373192)]
要求删除安装目录,下面采用修改权限的方式来删除:

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

删除后,点击"完成",会弹出登录页面(如下图),至此,安装部分结束:
[图片上传失败...(image-8bc543-1551885373192)]

配置nagiosql

填写用户名:admin,密码,登陆进管理页面:
[图片上传失败...(image-87334d-1551885373192)]

修改nagios相关路径

[图片上传失败...(image-d8a705-1551885373192)]
点击左侧框的图标,计入页面,并填写红框内容:
[图片上传失败...(image-1f2be8-1551885373192)]
点击"保存",提示成功写入数据库则完成:
[图片上传失败...(image-f62b64-1551885373192)]

导入nagios配置文件

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

修改nagios主配置文件

主配置文件就是指"nagios.cfg",只不过,在这里是用web界面做修改,进入菜单"管理 -> 工具 -> Nagios配置":
[图片上传失败...(image-4e99bf-1551885373192)]
编辑里面的配置内容:将"cfg_file"开头的配置注释掉,加入新的配置,如下:

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

修改之后,点击"保存"
然后, "检查配置文件"来检测一下是否有错误的地方:
[图片上传失败...(image-e70205-1551885373192)]
点击后,报错:
[图片上传失败...(image-45a55d-1551885373192)]
检查文件目录"/etc/nagiosql"下,在这个目录下,里面寻找hosts/hplj2605dn.cfg文件,找到之后发现,里面是一个主机的配置:
[图片上传失败...(image-c279ba-1551885373192)]
看起来是一个惠普打印机的配置,所以觉得这个配置没有什么用,应该是模板配置文件,所以先尝试删除此文件,保险起见,先执行:

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",经过对三个配置文件的处理,重新检测,发现配置文件没有问题:
[图片上传失败...(image-9a6fe2-1551885373192)]
最后,请点击:重新启动nagios的按钮来重启nagios!

nagiosql的应用配置

nagiosql的应用配置是配置一些自定义或nagios带的一些服务,配置菜单在"管理 -> 命令 -> 定义":
[图片上传失败...(image-447688-1551885373192)]
他的主机定义在"管理 -> 监督 -> Host":
[图片上传失败...(image-1c6aa9-1551885373192)]
其中有三个主机,这三个主机的配置文件,已经在之前删除,所以,这里将这三个主机删除.删除按钮就在右侧的删除图标

如何自定义服务

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

编写监控shell脚本
#!/bin/bash
process=`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/目录下

定义命令

进入定义命令的菜单,如图:
[图片上传失败...(image-872765-1551885373192)]
点击"添加"按钮.
[图片上传失败...(image-e5bec6-1551885373192)]
填写完成后,保存.

定义服务

进入定义服务的菜单,如图:
[图片上传失败...(image-751b28-1551885373192)]
点击添加按钮,在页面内编辑:
[图片上传失败...(image-5e87d9-1551885373192)]
点击保存,现在看一下服务列表:
[图片上传失败...(image-595800-1551885373192)]

检查文件并重启nagios

重启前,需要进行配置检查和写入配置数据等,操作如下图,一次执行,确保每一步都没有报错才可以执行下一步:
[图片上传失败...(image-806621-1551885373192)]

检查服务是否成功执行

进入http://yourserver/nagios/,点击左侧菜单"services"按钮:
[图片上传失败...(image-5b8743-1551885373192)]

以上,则定义成功!

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容