Nagios 監控系統架設全攻略

Nagios 全名爲(Nagios Ain’t Goona Insist on Saintood),最初項目名字是 NetSaint。它是一款免費的開源 IT 基礎設施監控系統,其功能強大,靈活性強,能有效監控 Windows 、Linux、VMware 和 Unix 主機狀態,交換機、路由器等網絡設置等。一旦主機或服務狀態出現異常時,會發出郵件或短信報警第一時間通知 IT 運營人員,在狀態恢復後發出正常的郵件或短信通知。Nagios 結構簡單,可維護性強,愈來愈受中小企業青睞,以及運維和管理人員的使用。同時提供一個可選的基於瀏覽器的 Web 界面,方便管理人員查看系統的運行狀態,網絡狀態、服務狀態、日誌信息,以及其餘異常現象.

php

Nagios 結構說明

Nagios 結構上來講, 可分爲核心和插件兩個部分。Nagios 的核心部分只提供了不多的監控功能,所以要搭建一個完善的 IT 監控管理系統,用戶還須要在 Nagios 服務器安裝相應的插件,插件能夠從 Nagios 官方網站下載 http://www.nagios.org/,也能夠根據實際要求本身編寫所需的插件。


html

Nagios 可實現的功能特性

  • 監控網絡服務(SMTP、POP三、HTTP、FTP、PING 等);
  • 監控本機及遠程主機資源(CPU 負荷、磁盤利用率、進程 等);
  • 容許用戶編寫本身的插件來監控特定的服務,方便地擴展本身服務的檢測方法,支持多種開發語言(Shell、Perl、Python、PHP 等)
  • 具有定義網絡分層結構的能力,用"parent"主機定義來表達網絡主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;
  • 當服務或主機問題產生與解決時將告警發送給聯繫人(經過 EMail、短信、用戶定義方式);
  • 能夠支持並實現對主機的冗餘監控;
  • 可用 WEB 界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等;




    Nagios 監控實現原理

    Nagios 軟件需安裝在一臺獨立的服務器上運行,這臺服務器稱爲監控中心,監控中心服務器能夠採用 Linux 或 Unix 操做系統;每一臺被監視的硬件主機或服務都運行一個與監控中心服務器進行通訊的 Nagios 軟件後臺程序,也能夠理解爲 Agent 或插件都可。監控中心服務器讀取配置文件中的指令與遠程的守護程序進行通訊,而且指示遠程的守護程序進行必要的檢查。雖然 Nagios 軟件必須在 Linux 或 Unix 操做系統上運行,可是遠程被監控的機器能夠是任何可以與其進行通訊的主機,根據遠程主機返回的應答,Naigos 將依據配置進行迴應;接着 Nagios 將經過本地的機器進行測試,若是檢測返回值不正確,Nagios 將經過一種或多種方式報警;具體原理以下圖所示:linux

    圖 1. Nagios 監控原理圖
    Nagios 監控原理圖
     

    Nagios 安裝與配置

    Nagios 安裝

    • 安裝前的準備工做
      清單 1. Nagios 安裝前準備操做
      # wget http://apt.sw.be/redhat/el6/en/x86_64/RPMS.dag/\
      rpmforge-release-0.3.6-1.el6.rf.x86_64.rpm
      # rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
      # rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86.rpm
    • 安裝相關軟件包
      清單 2. 安裝軟件包
      #yum install gd fontconfig-devel libjpeg-devel libpng-devel gd-devel perl-GD \
      openssl-devel php mailx postfix cpp gcc gcc-c++ libstdc++ glib2-devel 
      libtoul-ltdl-devel
    • 建立用戶和組
      清單 3. 建立用戶和組
      #groupadd -g 6000 nagios
      #groupadd -g 6001 nagcmd
      #useradd -u 6000 -g nagios -G nagcmd -d /home/nagios -c "Nagios Admin" nagios
    • 編譯安裝 Nagios
      清單 4. 編譯安裝 Nagios
      # tar xzfv nagios-3.2.0.tar.gz
       # cd nagios-3.2.0
      # ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios \
       --with-nagios-group=nagios --with-command-user=nagios
       --with-command-group=nagcmd --enable-event-broker --enable-nanosleep 
      --enable-embedded-perl --with-perlcache    
      #make all           
      #make install        
      #make install-init     
      #make install-commandmode  
      #make install-webconf   
      #make install-config

      安裝與配置 Apachec++

      因爲 Nagios 提供了 Web 監控界面,可經過 Web 界面的方式能夠清晰地看到被監控的主機和資源的運行狀態等,所以安裝須要安裝 Apache 服務。 同時配置 Web 監控界面是須要 PHP 模塊的支持,這裏均選用當前系統自帶軟件包便可,也可經過源碼包編譯安裝。web

      (1)安裝 Apache 和 phpapache

         #yum install httpd php*

      (2)配置 Apachevim

      在 Apache 配置文件件/etc/httpd/conf/httpd.conf 中找到windows

      DirectoryIndex index.html index.html.var

      將其修改成:瀏覽器

      DirectoryIndex index.html index.php

      再在 Apache 配置文件下增長以下內容

      AddType application/x-httpd-php .php

      以上兩處主要用於增長 php 格式的支持。同時爲了安全,須要通過受權才能訪問 Nagios 的 Web 監控界面,因此須要在配置文件/etc/httpd/conf/http.conf 或 /etc/httpd/conf.d/nagios.conf 增長訪問控制配置,若定義在 httpd.conf 文件中,將下圖的語句加入到 httpd.conf 文件最後面便可.

      圖 2. Nagios 訪問控制設置
      Nagios 訪問控制設置

      (3)設置用戶訪問控制

      # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

      設置權限且重啓 Apache

      清單 5. 權限設定與啓動服務
      #chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users	
      # usermod -a -G nagios,nagcmd apache
      # /etc/init.d/httpd restart
    • 安裝 Postfix 郵件服務

      Nagios 監控平臺支持郵件報警功能,因此須要安裝郵件服務。這裏採用互聯網比較主流的 MTA —Postfix. 也可根據本身的生產環境去定義, 如: Sendmail、Qmail 等。因爲 Nagios 只用到了 Postfix 的郵件發送功能,因此這裏不須要對 Postfix 郵件服務做過多配置,安裝 Postfix 套件,啓動服務並在下次服務器重啓自動加載便可。具體以下命令:

      清單 6. Postifx 安裝與配置
      #yum install postifx
      #chkconfig postfix on; /etc/init.d/postfix restart

    安裝 Nagios 插件

    Naigos 提供的各類監控功能基本上是經過插件來完成的,而 Nagios 的核心指提供了不多的功能,所以安裝插件是很是有必要的。Nagios 官網提供了不少不一樣版塊的插件應用,同時插件版本與 Nagios 版本也沒有什麼關聯,若是支持漢化功能,則須要找到與之匹配的漢化軟件包,不然會致使部分功能不能完成運行,這裏保持默認英文,以下面的安裝細節:

    清單 7. Nagios 插件安裝
    # wget http://ovh.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
     # tar xzf nagios-plugins-1.4.14.tar.gz 
     # cd nagios-plugins-1.4.14
     # ./configure --with-nagios-user=nagios --with-nagios-group=nagios  \
    --with-command-user=nagios --with-command-group=nagcmd \ 
    --prefix=/usr/local/nagios
     # make all
     # make install
     # chmod 755 /usr/local/nagios

    這樣 Nagios 的插件就安裝完成了,經過查看 Nagios 主程序目錄,/usr/local/nagios/linexec 目錄下能夠看到不少的外部插件執行文件,以下圖:

    圖 3. Nagios 插件腳本示例
    Nagios 插件腳本示例

    重啓 Nagios 服務

    清單 8. Nagios 與 Apache 服務啓動與設定
    #/etc/init.d/nagios restart
    #/etc/init.d/httpd restart
    #chkconfig httpd on; chkconfig naigos on

    禁用 Selinux 和 iptables

    Selinux 和 Iptables 是 Linux 系統提供的安全防禦機制,主要用來防禦 Linux 系統下的服務或應用程序不受外界安全攻擊等。通常企業考慮到 Nagios 監控平臺的安全可靠性,都會採用硬件的防火牆或其餘安全設備來對服務器進行防禦。同時此部分不是此平臺描述的重點, 這裏就不做過多的闡述

    Nagios 監控平臺訪問

    到目前爲之 Nagios 基本安裝成功,若要投入生產環境,還須要安裝其餘相應的插件及配置,不然是沒法提供相應的監控等功能。 經過瀏覽器,在地址欄輸入: http://IPAddress/nagios, 輸入用戶名及密碼便可訪問 Naigos 登陸界面。

    圖 4. Nagios 登陸界面
    Nagios 登陸界面

    Nagios 配置

    Nagios 目錄與相關配置文件說明

    Nagios 安裝完成後,/usr/local/nagios/目錄下會生成 nagios 相關目錄及配置文件,默認的的配置文件在/usr/local/nagios/etc 目錄下。關於詳細的描述,見下表:

    表 1. Nagios 相關目錄的名稱及用途
    目錄名稱 做用
    bin Nagios 可執行程序所在目錄
    etc Nagios 配置文件目錄
    sbin Nagios cgi 文件所在目錄, 也就是執行外部 命令所須要文件所在的目錄
    share Nagios 網頁存放路徑
    libexec Nagios 外部插件存放目錄
    var Nagios 日誌文件、Lock 等文件所在的目錄
    var/archives Nagios 日誌自動歸檔目錄
    var/rw 用來存放外部命令文件的目錄
    表 2. 配置文件的做用概述
    配置文件 說明
    cgi.cfg 控制 CGI 訪問的配置文件
    nagios.cfg Nagios 主配置文件
    resource.cfg 變量定義文件,又稱爲資源文件,在此文件中定義變量,以便由其餘配置文件引用,如$USER1$
    objects objects 是一個目錄,在此目錄下有不少配置文件模板,用於定義 Nagios 對象
    objects/commands.cfg 命令定義配置文件,其中定義的命令能夠被其餘配置文件引用
    objects/contacts.cfg 定義聯繫人和聯繫人組的配置文件
    objects/localhost.cfg 定義監控本地主機的配置文件
    objects/printer.cfg 定義監控打印機的一個配置文件模板,默認沒有啓用此文件
    objects/switch.cfg 監控路由器的一個配置文件模板,默認沒有啓用此文件
    objects/templates.cfg 定義主機和服務的一個模板配置文件,能夠在其餘配置文件中引用
    objects/timeperiods.cfg 定義 Nagios 監控時間段的配置文件
    objects/windows.cfg 監控 Windows 主機的一個配置文件模板,默認沒有啓用此文件
    備註: Nagios 在配置方面很是靈活,默認的配置文件並非必需的。可使用這些默認的配置文件,也能夠建立本身的配置文件,而後在主配置文件 nagios.cfg 中引用便可。

    Nagios 配置文件間的關聯

    Nagios 的配置過程涉及幾個定義有:主機、主機組、服務、服務組、聯繫人、聯繫人組、監控時間和監控命令等,從這些定義能夠看出,Nagios 的各個配置文件之間是互爲關聯、彼此引用的。成功配置一臺 Nagios 監控系統,須要掌握每一個配置文件之間依賴與被依賴的關係,可從下面四個步驟來入手,第一步:定義哪些主機、主機組、服務和服務組,第二步:要定義這個監控要經過什麼命令實現,第三步:要定義監控的時間段,第四步:要定義主機或服務出現問題時要通知的聯繫人和 聯繫人組;強烈建議依據以上順序對 Nagios 系統進行相關配置。

    Nagios 配置設定

    Nagios 安裝成功後,會在/usr/loca/nagios 目下生成相應的主機,服務、命令、模板等配置文件,同時也可看到以前設置的 Nagios 受權目錄認證文件 htpasswed.users,而 Object 目錄是存放一些配置文件模板,主要用於定義 Nagios 對象,具體以下圖:

    圖 5. Nagios 配置目錄與文件
    Nagios 配置目錄與文件
    圖 6. Nagios 對象模板文件
    Nagios 對象模板文件

    自定義監控目錄

    默認狀況下 nagios.cfg 會啓用一些對象配置文件如:comands.cfg、 contacts.cfg localhost.cfg 、contacts.cfg 、windows.cfg 等,爲了更好的對 Nagios 平臺的管理與往後的維護,這裏採用了自定義目錄在/usr/local/nagios/etc/目錄下建立一個 monitor 文件夾,用來保存所管理被監控的對象。同時註釋 nagios.cfg 配置文件默認定義的對象配置文件,並在 nagios.cfg 文件增長一行:cfg_dir=/usr/local/nagios/etc/monitor 便可, 以下圖:

    圖 7. Nagios 啓用自定義目錄
    Nagios 啓用自定義目錄

    Nagios 的配置大可能是對監控對象配置文件進行修改配置,這裏需複製了 objects 目錄下的全部對象配置文件模板,同時在 monitor 文件下建立了獨立的配置文件 hosts.cfg 和 service.cfg 來定義主機和服務,至於聯繫人和監控的時間段這裏保持默認配置。 以下圖:

    圖 8. 自定義目錄下對象配置文件
    自定義目錄下對象配置文件

    下面主要描述下此平臺架設相關的幾個主要配置文件具體含義,分別爲:templates.cfg、hosts.cf、services.cfg.

    templates.cfg 文件

    默認模板配置文件

    define contact{ 
    name generic-contact #聯繫人名稱 
    service_notification_period 24x7 #當服務出現異常時,發送通知的時間段,時間段是 7x24 小時 
    host_notification_period 24x7 #當主機出現異常時,發送通知的時間段,時間段是 7x24 小時
    service_notification_options w,u,c,r #這個定義的是「通知能夠被髮出的狀況」。w 即 warning,表示警告狀態,u 即 unknown,表示不明狀態,c 即 criticle,表示緊急狀態,r 即 recover,表示恢復狀態 
    host_notification_options d,u,r #定義主機在什麼狀態下須要發送通知給使用者,d 即 down,表示宕機狀態,u 即 unreachable,表示不可到達狀態,r 即 recovery,表示從新恢復狀態。 
    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 文件中定義。


    define host{ 
    name linux-server #主機名稱 
    use generic-host #use 表示引用,也就是將主機 generic-host 的全部屬性引用到 linux-server 中來,在 nagios 配置中,不少狀況下會用到引用。 
    check_period 24x7 #這裏的 check_period 告訴 nagios 檢查主機的時間段 
    check_interval 5 #nagios 對主機的檢查時間間隔,這裏是 5 分鐘。 
    retry_interval 1 #重試檢查時間間隔,單位是分鐘。 
    max_check_attempts 10 #nagios 對主機的最大檢查次數, check_command check-host-alive #指定檢查主機狀態的命令,其中「check-host-alive」在 commands.cfg 文件中定義。 
    notification_period workhours #主機故障時,發送通知的時間範圍,其中「workhours」在 timeperiods.cfg 中進行了定義,下面會陸續講到。 

    notification_interval 30 #在主機出現異常後,故障一直沒有解決,nagios 再次對使用者發出通知的時間。單位是分鐘
    notification_options d,u,r #定義主機在什麼狀態下能夠發送通知給使用者,d 即 down,表示宕機狀態,u 即 unreachable,表示不可到達狀態,r 即 recovery,表示從新恢復狀態。 
    contact_groups admins #指定聯繫人組,這個「admins」在 contacts.cfg 文件中定義。 

    define service{
    name local-service #定義一個服務名稱 
    use generic-service #引用服務 local-service 的屬性信息,local-service 主機在 templates.cfg 文件中進行了定義
    max_check_attempts 4 #最大檢測 4 次,爲了肯定服務最終狀態 
    normal_check_interval 5 #每 5 分鐘檢測一次
    retry_check_interval 1 #每 1 分鐘從新檢測服務,最終的狀態能被肯定 
    }

    host.cfg 文件

    此文件默認狀況下不存在,須要手動建立。hosts.cfg 主要用來指定被監控的主機地址及相關屬性信息。配置以下表:

    定義主機配置實例

    define host {
    use linux-server #引用主機 linux-server 的屬性信息,linux-server 主機在 templates.cfg 文件中進行了定義。
    host_name DirHost162 #被監控主機名

    alias RHEL6.3_CSDA-FVT-Server #被監控主機別名

    address 192.168.1.162 ##被監控主機 IP 地址

    }
    ........

    services.cfg 文件

    此文件在默認狀況下也不存在,須要手動建立。services.cfg 文件主要用於定義監控的服務和主機資源,例如監控 HTTP 服務、FTP 服務、主機磁盤空間、主機系統負載等。

    定義服務配置


    #Define DirHost162

    define service{
    use local-service #引用服務 local-service 的屬性信息,local-service 主機在 templates.cfg 文件中進行了定義。
    host_name DirHost162 #被監控主機名
    service_description SSH #監控的服務
    check_command check_ssh # nagios 插件監控指令
    }

    define service{
    use local-service,services-pnp
    host_name DirHost162
    service_description SSHD
    check_command check_tcp!22 # 使用的檢測命令, 同時多個參數匹配用 「!」 分隔,如:check_ping!100.0,20%!500.0,60%

    }
    …….

    Nagios 運行與維護

    1.驗證 Nagios 配置文件的正確性

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

    Nagios 提供的這個驗證功能很是有用,若是你的配置文件有語法或配置錯誤,它會顯示出錯的配置文件及在文件中哪一行。檢測結果中的報警信息一般是能夠忽略的,由於通常只是建議性的提示。

    2.利用別名簡化 Nagios 配置檢測機制

    在當前用戶下的.bashrc 文件增長一行 alias nagioscheck 語句,以下表:

    圖 9. 簡化 Nagios 配置檢測機制
    簡化 Nagios 配置檢測機制

    # source /root/.bashrc

    3.啓動 Nagios 服務

    清單 9. 經過初始化腳本啓動 Nagios
    #/etc/init.d/nagios start|restart|stop 或者 service nagios start
    清單 10. 手工方式啓動 Nagios
     經過 Nagios 命令的-d 參數來啓動 nagios 過護進程。
     #/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
     

    Nagios 性能分析圖標的做用

    Nagios 對服務或主機監控的是一個瞬時狀態,有時候系統管理員須要瞭解主機在一段時間內的性能及服務的響應狀態,而且造成圖表,這就須要經過查看日誌數據來分析。可是這種方式不只煩瑣,並且抽象。爲了能更直觀的查看主機運行狀態,這裏採用 PNP 來實現此功能。PNP 是一個小巧的開源軟件包,它是基於 PHP 和 Perl 腳本編寫,PNP 能夠利用 rrdtoul 工具將 Nagios 採集的數據繪製成圖表,而後顯示主機或者服務在一段時間內運行的情況。如下詳細介紹 PNP 安裝配置流程:

    安裝 RDDtoul 工具

    清單 11. 編譯安裝 RDDtoul
    #tar zxvf rrdtoul-1.4.5.tar.gz
     #cd rrdtoul-1.4.5
     #./configure --prefix=/usr/local/rrdtoul
     #make
     #make install

    安裝 PNP

    清單 12. 編譯安裝 PNP
    #tar zxvf pnp-0.4.13.tar.gz
    #cd pnp-0.4.13
    #./configure\
      --with-nagios-user=nagios \
      --with-nagios-group=nagios \
      --with-rrdtoul=/usr/local/rrdtoul/bin/rrdtoul  \
      --with-perfdata-dir=/usr/local/nagios/share/perfdata
    #make all
    #make install
    #make install-config
    #make install-init

    1. PNP 配置文件定義

    在 PNP 安裝完成後, 默認安裝目錄下回自帶相應的模板配置文件, 所以只須要參考相應的模板文件進行修改便可,

    清單 13. PNP 配置文件定義
    # cd /usr/local/nagios/etc/pnp/
    # cp process_perfdata.cfg-sample process_perfdata.cfg
    # cp npcd.cfg-sample npcd.cfg
    # cp rra.cfg-sample rra.cfg
    # chown -R nagios:nagios /usr/local/nagios/etc/pnp

    2.修改 process_perfdata.cfg 文件

    打開 Nagios 下的 process_perfdata.cfg 文件,修改相關內容。可從下圖的註釋信息瞭解到

    將數字 0 變動爲 2 是開啓了日誌的調試功能,操做以下:

    圖 10. 開啓日誌調試功能
    開啓日誌調試功能

    3.修改 Nagios 相關配置文件

    • 增長小太陽圖標

    修改 templates.cfg,增長一個定義 PNP 的 host 和 service,詳細見下圖 :

    圖 11. PNP 配置與設定
    PNP 配置與設定
    • 修改 nagios.cfg

    若是想讓 nagios 將數據輸出,首先要修改 nagios 的主配置文件 nagios.cfg,找到以下幾項,若有註釋的將其去掉。修改後的信息以下:

    清單 14. 增長 nagios 數據輸出設置
    #vim /usr/local/nagios/etc/nagios.cfg
    process_performance_data=1
    host_perfdata_command=process-host-perfdata
    service_perfdata_command=process-service-perfdata
    • 修改 commands.cfg

    process-host-perfdata 和 process-service-perfdata 指令聲明瞭 nagios 輸出哪些值到輸出文件中。 不過這些定義相對簡單,而 PNP 提供了一個 Perl 腳本,很是詳細地定義了一個輸出數據的方法,process_perfdata.pl 實際上是 PNP 自帶的一個腳本,這個腳本在 PNP 安裝完成後會自動生成。所以,能夠將 process-host-perfdata 和 process-service-perfdata 指令中對應的執行命令的內容替換成此腳本。增長下圖的內容:

    圖 12. 在 commands.cfg 文件中增長性能圖片配置
    在 commands.cfg 文件中增長性能圖片配置
    • 修改 hosts.cfg 與 services.cfg

    將 hosts-pnp 和 services-pnp 引用到 hosts.cfg 和 services.cfg 中,修改後的 hosts.cfg 內容如圖 13 和圖 14 所示:

    圖 13. 在 hosts.cfg 文件中增長性能圖片配置
    在 hosts.cfg 文件中增長性能圖片配置
    圖 14. 在 services.cfg 文件中增長性能圖片配置
    在 services.cfg 文件中增長性能圖片配置
     

    驗證性能分析圖標功能

    訪問 nagios 管理界面,點擊查看哪臺主機小太陽的圖標,便可看到此主機的狀態信息,這裏點擊的是 DirHost162 主機,詳細如圖 15 和圖 16 所示:

    圖 15. 被監控主機管理界面
    被監控主機管理界面
    圖 16. 性能圖標分析示意圖
    性能圖標分析示意圖
     

    利用 NRPE 擴展 Nagios 功能

    NRPE 是 Nagios 的一個功能擴展,它可在遠程 Linux 和 UNIX 主機上執行插件程序。經過在遠程服務器上安裝 NRPE 構件及 Nagios 插件程序來向 Nagios 監控平臺提供該服務器的一些本地狀況,如 CPU 負載、內存使用、硬盤使用,服務等。這裏將 Nagios 監控平臺稱爲 Nagios 服務器 端,而將遠程被監控的服務器稱爲 Nagios 客戶端。

    下圖爲 NRPE 構件監控遠程主機本地信息的運行原理:

    圖 17. 監控遠程主機原理圖
    監控遠程主機原理圖

    NRPE 組成部分與檢測類型

    NRPE 總共由兩部分組成:

    check_nrpe 插件,位於監控主機上

    NRPE daemon,運行在遠程被監控的 Linux 主機上

    當監控遠程 Linux/UNIX 主機服務或資源時,工做流程以下:

    • nagios 會運行 check_nrpe 這個插件,而且會告訴它須要檢查什麼;
    • check_nrpe 插件會鏈接到遠程的 NRPE daemon,所用的方式是 SSL;
    • NRPE daemon 會運行相應的 Nagios 插件來執行檢查動做;
    • NPRE daemon 將檢查的結果返回給 check_nrpe 插件,插件將其遞交給 Nagios 作處理。

    NRPE daemon 須要 Nagios 插件安裝在遠程的 Linux 主機上,不然 daemon 不能作任何的監控。

    NRPE 的檢測類型分爲兩種:

    直接檢測:檢測的對象是運行 NRPE 的那臺 Linux 主機的本地資源,原理以下:

    直接使用 NRPE 插件監控遠程 Linux/UNIX 主機的本地或者私有資源;如 CPU 負載、內存使用、SWAP 空間使用、硬盤等運行情況。

    圖 18. 直接檢測結構圖
    直接檢測結構圖

    間接檢測:當運行 Nagios 的監控主機沒法訪問到某臺被監控主機,可是運行 NRPE 的機器能夠訪問獲得的時候,運行 NRPE 的主機就充當一箇中間代理,將監控請求發送到被監控對象上。

    圖 19. 間接檢測結構圖
    間接檢測結構圖

    在服務器端安裝 NRPE 安裝

    清單 15. 服務器安裝 NRPE
    # cd /usr/local/src/
    # tar zxvf nrpe-2.12.tar.gz 
    # cd nrpe-2.12
    # ./configure && make all
    # make install-plugin
    # make install-daemon
    # make install-daemon-config

    修改命令定義文件

    因爲在 Nagios 命令定義文件 commands.cfg 沒有 check_nrpe 命令, 所以須要對此文件進行修改與定義,配置細節以下圖:

    圖 20. 在 commands.cfg 文件中增長 NRPE 配置
    在 commands.cfg 文件中增長 NRPE 配置

    定義被監控主機

    在被監控或遠程主機上增長 check_nrpe 的相關配置,因爲 hosts.cfg 已定義了相應的主機,因此這裏編輯文件 Nagios 服務器上的 services.cfg 文件便可

    #vim /usr/local/nagios/etc/monitor/services.cfg
    圖 21. 在被監控主機,增長 NRPE 指令
    在被監控主機,增長 NRPE 指令

    查看配置文件是否正確

    清單 16. 服務器安裝 NRPE
    # nagioscheck

    從新加載配置文件

    清單 17. Ngaios 配置加載
    # /etc/init.d/nagios reload
     

    在 Linux 客戶端安裝 NRPE 安裝

    安裝 Nagios 插件 nagios-plugin

    添加 nagios 用戶名,且不容許 nagios 用戶登陸, 此用戶用於與 Nagios 服務器通訊所用。

    清單 18. 客戶端安裝 nagios-plugin
    # useradd -s /sbin/nulgin nagios
    # tar -zxvf nagios-plugins-1.4.14.tar.gz
    # cd nagios-plugins-1.4.14
    #./configure
    # make && make install

    安裝 NRPE

    在 Linux 客戶端安裝 nrpe 程序包,根據編譯提示嚮導完成安裝操做。在安裝的過程當中會看到 NRPE 的端口爲 5666,且可經過 Xinetd 服務來控制 nrpe 進程,具體實現步驟以下:

    清單 19. 客戶端安裝 NRPE
    #tar zxvf tar zxvf nrpe-2.12.tar.gz
    # cd nrpe-2.12
    #./configure
    #make all
    #make install-plugin
    #make install-daemon
    #make install-daemon-config
    #make install-xinetd
    #chown -R nagios:nagios /usr/local/nagios/

    配置 NRPE

    定義被監控的 Linux 主機的對象,監控此主機的 CPU 負載、登陸用戶數、磁盤分區、進程、swap 使用狀況等,編輯/usr/local/nagios/etc/nrpe.cfg 文件, 內容以下示例:

    清單 20. NRPE 配置與設定
    command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
    command[check_load]=/usr/local/nagios/libexec/check_load -w 30,25,20 -c 60,55,40
    command[check_sda3]=/usr/local/nagios/libexec/check_disk -w 15% -c 8% -p /dev/sda3
    command[check_vg01]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vg01
    command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
    command[check_swap_1]=/usr/local/nagios/libexec/check_swap -w 20 -c 10

    定義 Xinetd 服務支持 nrpe

    這裏只須要修改 only_from 項,增長 Ngaios 服務的地址便可,這樣一來服務器與客戶端就可進行 nrpe 會話,監控到 Linux 客戶端相關信息,被監控端也更加容易維護管理,見下圖:

    #vim /etc/xinetd.d/nrpe
    圖 22. 定義 Xinetd 服務支持 nrpe
    定義 Xinetd 服務支持 nrpe

    定義服務端口

    在 Linux 客戶端"/etc/services" 文件增長一行

    nrpe            5666/tcp                #Naigos_Client

    測試 NRPE

    因爲 NRPE 相應的插件已經安裝成功, 這裏使用 check_nrpe 命令來驗證是否 nrpe 是否正常運行,若是執行如下命令可以顯示 NRPE 的具體版本信息,則表示 nrpe 運行正常,加載重啓 xinetd 服務便可。

    清單 21. NRPE 功能測試
    #/usr/local/nagios/libexec/check_nrpe -H localhost
    NRPE v2.12 
    #/etc/init.d/xinetd restart
     

    Nagios 管理平臺界面介紹

    經過上面全部的軟件及插件的安裝與配置,Nagios 監控系統架構成功的完成了;若想進一步擴展,如監控 Windows 平臺,則須要在 Windowns 系統安裝 NSClient 軟件,並在 Nagios 服務器定義 windows.cfg 等文件,VMware 則須要 Nagios 官網下載相應的插件及模塊文件,並在 Nagios 服務器編輯 command.cfg、hosts.cfg、services.cfg 文件,這裏不過多的闡述,可分別參照如下表 6 和表 7 方法來進行:

    Window 平臺

    #vim /usr/local/nagios/etc/monitor/windows.cfg

    Windows 平臺配置

    define host{
    use windows-server, hosts-pnp 
    host_name Windowns Server 2003_192 
    alias Remote win2003 192 
    address 192.168.1.192 
    }
    define service{
    use generic-service, services-pnp
    host_name Windowns Server 2003_192
    service_description NSClient++ Version
    check_command check_nt!CLIENTVERSION
    } }
    ………

    VMware 平臺

    # vim/usr/local/nagios/etc/monitor/commands.cfg

    VMware 平臺配置

    define command{
    command_name check_esx3_host_net_usage
    command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l net -s usage -w $ARG3$ -c $ARG4$
    }
    define command{
    command_name check_esx3_host_runtime_issues
    command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l runtime -s issues
    ……
     

    當前狀態界面介紹

    經過瀏覽器訪問 Nagios 服務器,從當前頁面能夠看到當前主機和服務的健康狀態,網絡運行狀況,以及服務與主機的檢測時間等,以下圖 15,能夠看到個人 Nagios 服務器有一臺服務器處於宕機狀態。

    圖 23. Nagios 當前狀態界面
    Nagios 當前狀態界面
     

    系統主機界面介紹

    點擊 Hosts 標籤,能夠看到 Nagios 服務器監控多少臺主機狀態及當前主機的活躍狀態,從下面圖示能夠看到監控的主機類型有,Windwos,Linux,Switch,FC-Swith,Storage 等,若想進一步瞭解每臺主機的服務,系統負載等被監控的對象,能夠直接點擊某個主機,也可點擊小太陽圖標來查看當前被監控的主機的生成的圖表信息。

    圖 24. 全部被監控主機界面
    全部被監控主機界面

    下圖是主機組頁面,可看到 Nagios 服務器將相對應的主機組或監控的對象進行了分組定義,同時能夠具體看到當前總共有多少臺主機,活躍的主機,服務的健康狀態等等

    圖 25. 主機組和服務組界面
    主機組和服務組界面

    報告界面介紹

    圖 26,主要是記錄一些事件信息,記錄某臺主機所監控對象的狀態,若超出本身定義的配置,則會提示通常警告或嚴重告警信息,一旦主機恢復則自動告知用戶當前主機的狀態:

    圖 26. 事件報告管理界面
    事件報告管理界面

    同時能夠將事件信息以郵件的方式告知聯繫人,讓其在第一時間瞭解到服務器的健康狀態等信息,及時做出處理,提供服務器的工做效率等,以下圖:

    圖 27. 郵件通知界面
    郵件通知界面

    關於 Nagios 管理界面詳細,可在左側的導航菜單去查閱相應的具體功能,如:當前狀態、拓補圖、總覽、問題故障、報告、配置等信息,都可根據本身的生產環境來制定。

     

    結束語

    經過此篇文章描述了 Nagios 監控管理平臺的工做原理,以及如何在 Linux 平臺部署開源軟件的管理平臺,掌握 Naigos 配置管理,經過外部插件的方式來對服務對象 Windows 、Linux、 Unix 、 VMware 等平臺進行有效的管理與監控,適合運行部門及管理部門的 IT 人員使用,不只提升了效率同時減小了管理人員未能及時發現問題所帶來的的困繞,也提升了生產的環境的可用性。http://www.ibm.com/developerworks/cn/linux/1309_luojun_nagios/index.html

相關文章
相關標籤/搜索