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閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容