第2節 基本選項的調適

前言

本章開始要進入nagios的核心設定檔。這一個設定檔的內容,掌握了nagios的主要動作,「可以」設定的選項非常的多,但是大多可以不用理它。用預設值就可以了,但是如果你想要多了解一下這一個工具,那或許可以好好讀讀這一章,我會努力將它用簡單的方式,呈現給大家。

這一個設定檔,nagios的主程式,以及cgi程式,都會去讀,所以簡單的說,就是這個設定檔裡規範了nagios的動作之外,也規範了cgi的動作,有的選項是用來調適cgi的,而有的選項是用來調適nagios的。

在安裝的時後,當我們執行config的命令之時,make就會幫我們生成一個最原始的file。我們就以這個隨手可得的設定檔原型當作範例,來作說明。

我們在執行設定config的時後,如果執行:
./configure -h 
之時,會出現很多的選項,其實在這個選項裡所指定的內容,都會在這個設定檔裡被反應。所以換句話說,在設定之時,也不用設定的太複雜,在安裝好之後,在進行設定就可以了。

我們只要仔細作個判斷,nagios本體的程式,也就是核心的部份,主要負責的部份,以及cgi所擔當的任務,可以作出下列的歸類:



記錄檔的設定:

這一個選項是用來指定設定當的吐出位置。所有的程式,只要是比較建全設計,都會吐出記錄檔。
這個記錄檔裡將記錄很多細節的動作,以及按照時間,記錄每一個動作。我們如果要查看nagios在那個時間出現了什麼事,只要看一下這一個紀綠檔,都可以得到確切的資料。


log_file=/usr/local/nagios/var/nagios.log

物件設定檔案


接下來的設定,是對於被監視的對像進行設定的設定檔的位置。這個位置可以是在一個檔案裡,也可以作分類在不同的檔案裡,全看實際的情況來作調整。語法也相當的簡單:

cfg_file=檔案的路徑及檔案的名字。

這其實是一個include的觀念,這裡的設定檔在啟動時會被讀進來。
把所有的物件定義全部寫在一個檔案裡時,當你的系統很小,這是一個最簡單的方式(所謂的簡單,應該是說在設定時,只要編輯一個檔案就好了,不需要不時的切換到別的檔案)可以用以下的方式:
cfg_file=/usr/local/nagios/etc/minimal.cfg

這個minimal.cfg檔案,是安裝時會自動被生成的,可以作為設定時參考之用,相對於這個minimal.cfg,還有一個叫bigger.cfg的,由字面上的意思來看,就是比較大的設定檔,裡面的範例更多,可以作為參考。

不過在實際運用時通當會設定成多個檔案,這樣子一來在維護時比較方便。
cfg_file=/usr/local/nagios/etc/contactgroups.cfg
cfg_file=/usr/local/nagios/etc/contacts.cfg
cfg_file=/usr/local/nagios/etc/hostgroups.cfg
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.cfg
cfg_file=/usr/local/nagios/etc/timeperiods.cfg

由於nagios的本體之外,還有另外一個專案,提供了很多檢查用 的plugin。這些檢查用的plugin由於不定時的會有版本更新,所以在進行命令檔的定義時,應該採用該專案所提供的命令定義檔,而不是nagios的。
命令檔為了管理方便,運用上還是採分開的定義。以下的這一行裡所定義的檔案,裡頭就全部都是定義了專門用來檢查用的命令群。

cfg_file=/usr/local/nagios/etc/checkcommands.cfg
而下列這一行,所記載的檔案,裡頭則定義了用來通知,以及用來對事件作出對應用的命令群。

cfg_file=/usr/local/nagios/etc/misccommands.cfg
而一些擴張的主機或是服務的資訊,則定義在以下兩個物件定義檔中。

cfg_file=/usr/local/nagios/etc/hostextinfo.cfg
cfg_file=/usr/local/nagios/etc/serviceextinfo.cfg




如果覺得一個一個的設定太麻煩的話,也可以指定dir的方式,在這個dir之下的所有cfg檔案,都會被讀進來。
cfg_dir=/usr/local/nagios/etc/servers
cfg_dir=/usr/local/nagios/etc/printers
cfg_dir=/usr/local/nagios/etc/switches
cfg_dir=/usr/local/nagios/etc/routers


物件快取檔案

nagios在啟動的時後,會讀取設定檔,然後將讀取的內容,保留在一個檔案裡面。這一個檔案裡的內容,將會是nagios運行的這一段過程之間,主要參照的地方。這一個檔案裡並沒有使用特別的編碼或演算法,只是單純的文字檔。
會這樣子作的理由,是因為,如果直接以各個設定檔作參考的依據,那如果程式執行過程中,設定檔被修改,就有可能會有發生錯誤的機會,因為無法保証設定檔的設定永遠是正確的。

換句話說,也因為有這樣子的設計,我們設定完這些設定檔之後,需要重新啟動nagios,讓nagios的主程式,幫我們將這些設定的內容更新到快取檔案裡,如此一來設定才會生效。

object_cache_file=/usr/local/nagios/var/objects.cache

資源檔

這是一個可以自由設定的選項。如果說你有一些東西,像是登入主機用的id,甚至是密碼,等等一些敏感性的資料,為了安全的理由,你想把他獨立出來,不想直接寫到命令的定義檔,或是其他的檔案裡頭,就可以使用這一個檔案。
這個檔案的寫法,是以$USERx$為主要的格式,在這些檔案所定義的巨集,在其他的檔案裡就可以引用。
cgi並不會存取這一個檔案,再加上你可以將這個檔案的權限設為600,就可以防止其他人讀取。

如果你不想把所有的定義值,寫在一個檔案裡,也可以將他們分開,只要在這裡作好定義,讓nagios能認識就可以了。


resource_file=/usr/local/nagios/etc/resource_server1.cfg
resource_file=/usr/local/nagios/etc/resource_server2.cfg

資源檔設定範例




狀態檔案

這些檔案是nagios對於服務或是主機監視的結果。也就是所有的主機與服務目前的狀態。這個監視的結果會被cgi的程式們所讀取,然後在畫面上以比較容易被了解的圖形來表示。
這些狀態檔,在每一次nagios被啟動的時後,都會被清空歸零,也就是刪除掉。

status_file=/usr/local/nagios/var/status.dat


程式的執行者

在linux下面使用者的觀念是非常的明確的。這一個選項可以讓我們決定nagios要使用那一個身份來執行。可以使用使用者帳號或者是uid。當然,這裡所被指定的使用者需要是系統裡存在的帳號,不能無中生有。不然程式會無法啟動。
nagios_user=Administrator



程式所屬的群組

這一個選項與上個選項相對應,用來決定運行的程式,適用於那一個群組的權限與設定。十
nagios_group=Administrators

是否要檢查有來自外部的命令


這個選項告訴nagios是否有檢查來自外部的命令。感覺很抽象,不過只要了解nagios的運作方式就可以了解。

所謂來自外部的命令是指來自nagios本體程式的外部所設定的命令。通常命令都是寫在設定物件檔裡,在nagios啟動時就載入,然後按照規範來運行。而外部的命令是指在nagios運行的狀態之下,從web介面,通過cgi所加入的命令。

這個選項就是要設定nagios的主體程式,是否需要去檢查有來自外部的命令。0的話是不去作檢查,1的話則是要作檢查。

而該隔久,以及該去那裡作檢查,則在接下來的二個選項作設定。當然,理所當然的,這一個選項要設為一,接下來相關選項的設定,才會具有意義。

check_external_commands=0


外部命令檢查時間間隔


這一個選項讓我們設定檢查的時間間隔。基本的單位是分。
command_check_interval=1
此時的檢查時間間隔就是1分。


# EXTERNAL COMMAND CHECK INTERVAL
# This is the interval at which Nagios should check for external commands.
# This value works of the interval_length you specify later. If you leave
# that at its default value of 60 (seconds), a value of 1 here will cause
# Nagios to check for external commands every minute. If you specify a
# number followed by an "s" (i.e. 15s), this will be interpreted to mean
# actual seconds rather than a multiple of the interval_length variable.
# Note: In addition to reading the external command file at regularly
# scheduled intervals, Nagios will also check for external commands after
# event handlers are executed.
# NOTE: Setting this value to -1 causes Nagios to check the external
# command file as often as possible.

#
#command_check_interval
=15s
command_check_interval=-1


外部命令檔案

這個檔案是nagios的主體程式會定期的作檢查是否有外部的外令的檔案。
所以,這個檔案也是cgi程式保存使用者所設定外部命令的地方。所以這個檔案的權限,是必需要讓nagios讀取,也需要讓cgi寫入的。

通常cgi的執行者是apache的執行者。如果apache是使用nobody執行的,那這一個檔案需要能夠被nobody寫入才行。

這個檔案每次在使用過一次後都會被刪掉。所以權限的設定應該是設定在rw這一個目錄,而不是檔案本身。

這一個檔案,其實是一個大小為0k的具名管道。(named pipe),所以他的檔案型態(用 ls -al)的話,是以p開頭的。這是一個編寫程式時的小技巧。因為我們這裡是二個行程之間的通信,也就是nagios主程式與apache所執行的cgi這兩個行程,所以使用具名管道是一個方便的方法。一方等待讀取,直到另外一方進行寫入。當這個寫入完成之後,這個管道就消失。

當然有些os不支援這種具名管道。(比方說一些不允許檔案的size為0的os),此時就必需改用其他的方式。


command_file=/usr/local/nagios/var/rw/nagios.cmd



# COMMENT FILE
# This is the file that Nagios will use for storing host and service
# comments.

comment_file=/usr/local/nagios/var/comments.dat



# DOWNTIME FILE
# This is the file that Nagios will use for storing host and service
# downtime data.

downtime_file=/usr/local/nagios/var/downtime.dat



# LOCK FILE
# This is the lockfile that Nagios will use to store its PID number
# in when it is running in daemon mode.

lock_file=/usr/local/nagios/var/nagios.lock



# TEMP FILE
# This is a temporary file that is used as scratch space when Nagios
# updates the status log, cleans the comment file, etc. This file
# is created, used, and deleted throughout the time that Nagios is
# running.

temp_file=/usr/local/nagios/var/nagios.tmp
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。