0x01 Nagios配置文件

Nagios配置文件

Nagios有多個不一樣的配置文件,用於不一樣的配置目的。要搞懂和配置Nagios設置,是一個比較花費時間的事情。做爲初學者的你,一旦弄懂了這些配置是怎樣工做的,那麼你後面將會更加高效和值得。
Note: 若是你是按照個人安裝文檔中的快速安裝指導安裝的nagios,那麼樣例配置文件都被存放在路徑/usr/local/nagios/etc/目錄下。
大體有四類配置文件:1. Main config 2. cgi config 3. resource file 4. object definition file.html

配置文件介紹

配置文件和程序之間的關係圖

引用來自官方文檔,能夠記在心中,至關於有了一層組織架構。
關係圖ios

圖內容說明:Nagios Daemon就是Nagios核心服務,CGI能夠說是可執行程序,能夠讀取http請求的內容並響應給請求方。4個配置文件將在下面進行介紹。web

Main Config File

主配置文件,裏面有不少指令,指示不一樣的配置信息。
Nagios Daemon和CGI程序都會讀取,不過CGI程序是經過讀取CGI Config file中的引用來知道Main Config的路徑的。
從圖中也看出,從Main Config 能夠知道REsource file和 object Definition file。
這也是咱們學習配置Nagios的配置的起始地。
詳細文檔main config file doc數據庫

文件一般名字是nagios.cfg 位於/usr/local/nagios/etc/目錄下安全

CGI Config File

這是CGI相關的配置文件,裏面配置的指令,是用於指導CGI程序的。其中包含了一個指令用於指示引用Main Config File的位置,同時也間接知道了object 定義。網絡

詳細文檔cgi config file doc架構

Resource Config File

存儲了用戶自定義的宏。該文件的一個主要用途就是存儲用戶的敏感信息,包括密碼。該文件不須要給CGI看到或訪問到。
在main中經過resource_file指令進行指定。oop

Object Definition File

該文件首先是定義了:學習

  • hosts
  • services
  • hostgroups
  • contacts
  • contactgroups
  • commands
    等等

這裏就是定義了你全部要監控的東西的定義,和怎麼監控他們。是否是有點像定義使用類初始化對象。設計

在main中經過cfg_file or cfg_dir 指定

詳細介紹object definition file doc

配置文件語法說明

  1. '#' 開頭的是備註
  2. 指令變量名必須是行首開始,空格是不予許的
  3. 大小寫敏感
  4. 對於指令變量值是路徑的,分爲絕對路徑和相對路徑,相對路徑是相對當前main文件做爲參照路徑。
  5. 分號;後的字符也是註釋

核心配置詳解

Object相關配置

咱們都知道,一套系統要管理控制不少東西,首先是要對控制的東西進行抽象再按照格式定義落地下來。相似oop中的封裝。同時爲了更好的管理這些封裝的對象,產生繼承關係是必要的,經過繼承不只可讓子類繼承一些東西,還能夠經過繼承這種關係控制其某些行爲。定義好不少類型後,類型之間還有一些類似的共通的特色,將這些共通的特色也要表現出來,這樣使用方就能夠經過這些共通的特色來統一訪問使用這些對象,多個種共通特色,使用方就能夠在多個共同點維度來管理訪問這些對象。這就是oop中的多態,具體表現就是接口的定義。實現了接口,就表現出一種共通特性。從而將異構的對象進行在必要的維度上統一管理了。

還有不要忘記了定義好的東西存儲持久化到哪裏呢?核心定義確定是在代碼文件裏落地,可是怎麼要讓在咱們核心代碼基礎上用戶自定義東西,咱們代碼再從中讀取來擴展,那麼就能夠用配置文件或者結構化數據(數據庫數據)來存儲。這也體現了oop很是重要的序列化和反序列化來保存或讀取對象狀態了。

高談闊論後,思想指導後,咱們就按照這個思想指導,看看nagios是怎樣對應思想指導中的一些東西的

  1. object在配置文件中的定義語法是
define host{
    host_name nagios_server_001
    check_command  check-host-alive
}

這裏定義了一個host類型的子類。應該說host至關於一個抽象類,會約束定義的這個子類必須定義必要的屬性。

  1. 固然object能夠繼承自定義的其它host類,能夠看作是多層繼承
define host {
    host_name host1
    check_command check-host-alive
    name host1template  # name代表該子類能夠做爲一個可繼承的類
}

define host {
    host_name host2
    check_command check-host-alive
    use host1  # 這裏能夠看作是host2繼承了抽象類host,又繼承了host1這個。可是他兩個都是繼承了host這個抽象類才行。這樣理解比較好。
}
  1. object的本地變量會覆蓋同名的繼承變量
    則很好理解,如題意。

  2. 固然繼承也是鏈式的
    也就是說,父親的父親的變量也會繼承下來

  3. 把共通的默認變量放到父類中,來統一管理共通屬性。

  4. group 組的概念,不管host仍是contact仍是service都有一個對應的gourp,像host group/contact group
    這些組裏面,有個列表類型的變量,存儲了host的引用。這裏面的host都是都會被統一訪問,說明host都有相同的接口,體現了部分多態特性。

  5. 自定義變量屬性
    能夠自定義變量屬性,就是在定義的屬性前加上_開頭

define host {
    _customvar1  10  ; 自定義一個屬性
    _snmp_community  pulic ; 自定義的第二個屬性
    name  custometemplate1
    register 0  ; 注意這裏是不會被加載到內存中使用的。
}

define host {
    host_name bighost1
    address 10.10.1.1
    use customertemplate1 ; 這裏就繼承了自定義類,也有了自定義類的自定義屬性。

8.若是有不想繼承某個屬性,本身本地又用不上,那麼本地對應設置爲null值

9.若是要繼承和本地的屬性的值都要使用能夠在本地值前使用+好來合併一個列表

  1. nagios特有的跳出傳統繼承關係的繼承規則。
    將關聯組合的對象中的屬性變量值拿來用。而不須要顯示的引用組合對象名。若是services 類型關聯了host類型,那麼service可能就會使用host中的變量。從需求上這樣設計很好理解,好比說服務所要用的contact,能夠從host中拿去。

  2. 在use 後能夠設置多個繼承,使用,號間隔,若是多個繼承有相同屬性,那麼靠前的優先級高。且繼承是深度優先的。

CGI 的配置

CGI是nagios操做的入口,大多數時候咱們經過cgi程序來調用命令。
主要介紹裏面幾個關鍵的配置

  1. use_authentication 用於配置cgi調用時,是否進行用戶身份認證,強力建議設置認證。否則,肯定刪除了命令性CGI,避免沒有被認證用戶觸發命令的執行。雖然當關閉認證後cgi是不會觸發命令的,可是爲了安全仍是按照說的作。

cgi的安全設置是很是重要的,畢竟cgi經過web是對外暴露的,若是不進行認證等安全限制,那麼網絡均可以執行相關cgi,是很是危險的。

驗證Nagios Core 配置可用性

修改了配置文件,不知道配置文件是否格式或語法或配置是否正確,能夠經過ngios -V path_of_nagios_config 來驗證。 命令你能夠檢測出錯誤,或者警告。

相關文章
相關標籤/搜索