Nagios 監控系統架設全攻略

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

Nagios 結構說明

Nagios 結構上來說, 可分為核心和外掛兩個部分。Nagios 的核心部分只提供了很少的監控功能,因此要搭建一個完善的 IT 監控管理系統,使用者還需要在 Nagios 伺服器安裝相應的外掛,外掛可以從 Nagios 官方網站下載 ,也可以根據實際要求自己編寫所需的外掛。

Nagios 可實現的功能特性

  • 監控網路服務(SMTP、POP3、HTTP、FTP、PING 等);
  • 監控本機及遠端主機資源(CPU 負荷、磁碟利用率、程式 等);
  • 允許使用者編寫自己的外掛來監控特定的服務,方便地擴充套件自己服務的檢測方法,支援多種開發語言(Shell、Perl、Python、PHP 等)
  • 具備定義網路分層結構的能力,用"parent"主機定義來表達網路主機間的關係,這種關係可被用來發現和明晰主機當機或不可達狀態;
  • 當服務或主機問題產生與解決時將告警傳送給聯絡人(透過 EMail、簡訊、使用者定義方式);
  • 可以支援並實現對主機的冗餘監控;
  • 可用 WEB 介面用於檢視當前的網路狀態、通知和故障歷史、日誌檔案等;

Nagios 監控實現原理

Nagios 軟體需安裝在一臺獨立的伺服器上執行,這臺伺服器稱為監控中心,監控中心伺服器可以採用 Linux 或 Unix 作業系統;每一臺被監視的硬體主機或服務都執行一個與監控中心伺服器進行通訊的 Nagios 軟體後臺程式,也可以理解為 Agent 或外掛均可。監控中心伺服器讀取配置檔案中的指令與遠端的守護程式進行通訊,並且指示遠端的守護程式進行必要的檢查。雖然 Nagios 軟體必須在 Linux 或 Unix 作業系統上執行,但是遠端被監控的機器可以是任何能夠與其進行通訊的主機,根據遠端主機返回的應答,Naigos 將依據配置進行回應;接著 Nagios 將透過本地的機器進行測試,如果檢測返回值不正確,Nagios 將透過一種或多種方式報警;具體原理如下圖所示:

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

Nagios 安裝與配置

Nagios 安裝

  • 安裝前的準備工作
    清單 1. Nagios 安裝前準備操作
    # wget \
    rpmforge-release-0.3.6-1.el6.rf.x86_64.rpm
    # rpm --import 
    # 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

    安裝與配置 Apache

    由於 Nagios 提供了 Web 監控介面,可透過 Web 介面的方式可以清晰地看到被監控的主機和資源的執行狀態等,因此安裝需要安裝 Apache 服務。 同時配置 Web 監控介面是需要 PHP 模組的支援,這裡均選用當前系統自帶軟體包即可,也可透過原始碼包編譯安裝。

    (1)安裝 Apache 和 php

       #yum install httpd php*

    (2)配置 Apache

    在 Apache 配置檔案件/etc/httpd/conf/httpd.conf 中找到

    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 
 # 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 基本安裝成功,若要投入生產環境,還需要安裝其他相應的外掛及配置,否則是無法提供相應的監控等功能。 透過瀏覽器,在位址列輸入: , 輸入使用者名稱及密碼即可訪問 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 人員使用,不僅提高了效率同時減少了管理人員未能及時發現問題所帶來的的困繞,也提高了生產的環境的可用性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1764698/,如需轉載,請註明出處,否則將追究法律責任。

相關文章