設定 Nagios 組態檔

設定 Nagios 組態檔


在此以設定監控一個網站伺服器為例,讀者可從 sample-config目錄下取得相關組態檔的範例,並複製到 /usr/local/nagios/etc 的目錄下。相關組態檔設定如下所述:

* nagios.cfg
Nagios 的主要組態檔,設定方式條列如下。

cfg_file=/usr/local/nagios/etc/localhost.cfg     #
在此檔設定主機及服務等相關資訊

cfg_file=/usr/local/nagios/etc/commands.cfg     #
在此檔設定查指令的參數

cfg_file=/usr/local/nagios/etc/contacts.cfg     #
在此檔定義聯絡人的相關資訊

cfg_file=/usr/local/nagios/etc/timeperiods.cfg      #
在此檔定義監控的時間區間

cfg_file=/usr/local/nagios/etc/templates.cfg     #
在此檔設定相關行為的樣版,可利用樣版方式來減低規則設定的複雜性

log_file=/usr/local/nagios/log/nagios.log      #
設定 Nagios log資訊存放的檔案位置

resource_file=/usr/local/nagios/etc/resource.cfg     #
設定相關的資源檔位置

status_file=/usr/local/nagios/log/status.dat    #
設定儲存 Nagios 的偵測結果檔案,在本方案中所使用的web程式即是解析此檔案來取得相關的結果,並顯示在網頁上

status_update_interval=10    #
設定 Nagios 偵測結果狀態更新的時間區隔,以秒為單位,此例即為 10 秒更新一次

nagios_user=nagios    #Nagios
執行時所使用的身份

nagios_group=nagios

use_syslog=1    #
設定也使用 syslog 機制,同時會將 Nagios 的相關 log 資訊寫入 messages 檔案中

log_service_retries 1     #Nagios
系統服務容錯機制,可設定需重試幾次偵測服務異常後,才判定服務 (service) 失敗而寫入 log 檔案中

log_host_retries=1     #Nagios
主機服務容錯機制,可設定需重試幾次偵測主機異常後才判定主機 (service) 異常而寫入 log 檔案中

lock_file=/tmp/nagios.pid     #
設定 Nagios 執行時,儲存 PID 資訊的檔案位置

temp_file=/tmp/nagios.tmp     #
設定 Nagios 執行時,暫存檔案的檔案位置

temp_path=/tmp         #
設定 Nagios 執行時,暫存檔案的目錄位置


* templates.cfg
:是設定相關行為的樣版,以供相關的主機服務或系統服務來套用,以下以定義 Linux 主機及 HTTP 服務為例。

define host{
        ; 定義此為主機服務的樣版

name  linux-server  ; template
樣版的名稱

use   generic-host  ;
繼承 generic-host 樣版的特性

check_period 24x7  ;
設定每天 24 小時的監控

check_interval 5 ;
設定每 5 分鐘重新檢查一次

retry_interval 1  ;
設定如果檢查失敗,隔一分鐘即重新檢查一次

max_check_attempts 10  ;
設定如果重新檢查超過 10次即判定為主機當掉

check_command check-host-alive ;
設定檢查主機是否存在所使用的程式

notification_period workhours ;

notification_interval 120 ;
設定每兩個小時,重新寄送通知給管理者

notification_options d,u,r ;
設定當主機符合相關狀態時,才寄發通知,告知管理者;u = 當主機為無法連線時(UNREACHABLE,常見原因為網路中斷)即通知管理者;r = 主機重新啟動成功後,通知管理者;f = 當主機啟動或停止時,通知管理者;n = 不管主機在任何情況下,均不通知管理者
contact_groups admins admin;
當監控到主機異常時所要通知的管理者,在此為通知位於 admin 群組的人員,管理者相關資訊定義在 contact.cfg 檔案中      
}

define service{
       ;定義系統服務的樣版  

name  generic-service         ;
樣版的名稱

active_checks_enabled 1 ;
接受主動檢查功能,1 表示啟用

passive_checks_enabled  1;
接受被動檢查功能

parallelize_check  1 ;
開啟平行處理的功能        

obsess_over_service 1;
是否啓用主機操作系統探測,check_freshness 0; 停用 freshness 功能,freshness 僅用於被動測試模式的主機而言的,其作用是定期檢查該主機報告的狀態信息,如果該狀態信息已經過期,freshness 將會強制作主機檢查。

notifications_enabled 1;
當服務發生異常時,需發出通知給管理者

contact_groups  admins ;
通知管理者的資訊,定義在conact.cfg         

event_handler_enabled 1;  Service event handler is enabled

flap_detection_enabled 1;
啟動是否需偵測 flap 現像,flap 指的是網路不斷的的離線及上線,就像拍翅一樣

check_period  24x7;
檢查時間區間為全年無休 (7*24)   

max_check_attempts 3  ; Nagios
的容錯機制,如果偵測服務失敗三次,才判別服務失敗

normal_check_interval 10;
檢查的時間區隔(單位為分),本例即為每 10 分鐘偵測一次

retry_check_interval 2;
檢查服務失敗後,重新檢查的時間區間,在本例為檢查服務失敗後,在隔兩分鐘後再重新檢查

notification_options w,u,c,r;
設定要發通知告知管理者的事件等級,其中 w warning 等級,u Unknown 等級,c critical 等級,r recovery 等級

notification_interval  60;
通知發送的時間區隔(單位為小時)

notification_period 24x7;
通知發送的時間,在本例即為 24 小時均可發送通知給管理者     


*   localhost.cfg
:設定欲監控的主機及服務等相關資訊。設定如下所示。

define host{
           #設定主機服務 

use   linux-server      #
採用 linux-sever 的樣版            

host_name  http-xxx-xxx-xxx     #
設定主機名稱

alias  fedro 9       #
設定別名 

address   xxx.xxx.xxx.xx     #
設定此主機的 IP  

}

define service{          #
設定系統服務

use local-service      #
使用 local-service 的樣版

host_name  http-xxx-xxx-xxx          #
設定主機名稱,需與 host 設定對應,即表示此服務為所設定主機名稱的服務

service_description
 HTTP     #描述服務

check_command    check_http     #
偵測用的程式,在這裏使用 check_http

notifications_enabled
      #設定當服務異常時,通知管理員

check_period 24*7     #
監控的時間為全天候 24 小時(24*7 定義在 timeperoid.cfg 檔案中) 
}

*commands.cfg
:用來定義指令的行為,需將程式所需的參數設定於此檔案中。

define command{

command_name    check_http
     #程式名稱

command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$       #
參數資訊,其中 $USER1$ 等變數內容定義在 resource.cfg
}

*contacts.cfg
:定義聯絡人的 相關資訊。

define contact{

contact_name  nagiosadmin;
設定連絡人名稱

use generic-contact ;
使用 generic-contact 的樣本(已定義在 template.conf )

email   [email protected]
這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看 ; 定義連絡人的 email
}

*timeperiods.cfg
:定義規則有效的時間區 間資訊。

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

}

* resource.cfg
:定義相關變數的資源。

$USER1$=/usr/local/nagios/plugins/libexec/         #
定義 $USER1$ 變數內容
$USER2$=@libexecdir@/eventhandlers      #
定義 $USER2 變數內容

在設定完成組態檔後,讀者可利用 Nagios –v 來驗證組態檔的參數設定是否正確。如果一切設定無誤,即可啟動 Nagios 監控主程式。請讀者依序下達下列指令:

chown nagios:nagios /usr/local/nagios/     #
重設 Nagios 安裝目錄下的檔案權限,以避免權限問題

/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg     #
daemon 方式啟動

安裝 Web 顯示狀態介面軟體


Vshell
Nagios 所提供的 Web 介面軟體(以 PHP 語言實作),可即時的查看所監看的主機或系統服務的目前狀態。安裝過程相當簡單,請讀者至下列網址取得最新版本的 vshell

http://assets.nagios.com/downloads/exchange/nagiosvshell/vshell.tar.gz

載網頁程式後,直接將程式拷貝至網頁根目錄,並修改 constants.inc.php 內的 STATUSFILE等相關資訊(需調整成與 nagios.cfg 所設定 status_file 的值一致)如下所示:

define("STATUSFILE", "/usr/local/nagios/log/status.dat");

# Nagios
會將監控結果寫入 staus.dat,而 vshell 即是讀取此檔內容並在網頁上顯示出來 define("OBJECTSFILE", "/usr/local/nagios/log/objects.cache");

define("CGICFG", "/usr/local/nagios/etc/cgi.cfg");

你可能感兴趣的:(nagios,設定,組態檔)