爛泥:學(xué)習(xí)Nagios(二):Nagios配置

本文首發(fā)于爛泥行天下

甘泉網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,甘泉網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為甘泉1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的甘泉做網(wǎng)站的公司定做!

nagios安裝完畢后,我們現(xiàn)在就來配置nagios。有關(guān)nagios的安裝,可以參考《爛泥:學(xué)習(xí)Nagios(一):Nagios安裝》這篇文章。

說明:為了和nagios版本的保持一直,我們在此使用的是nagios最新版nagios-4.1.0rc1。

注意:最新版的nagios可在web頁面查看其運行的PID。

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

一、nagois監(jiān)控對象

nagios監(jiān)控的對象比較多,我們可以從顆粒度的不同進行劃分,分為籠統(tǒng)對象和詳細(xì)對象。

1.1籠統(tǒng)對象

nagios監(jiān)控的籠統(tǒng)對象可以分為兩種類型:網(wǎng)絡(luò)服務(wù)和主機資源。

網(wǎng)絡(luò)服務(wù)包括主機(含網(wǎng)絡(luò)設(shè)備)存活狀態(tài)、web服務(wù)、ftp服務(wù)、數(shù)據(jù)庫服務(wù)、自定義服務(wù)等。

主機資源包括系統(tǒng)負(fù)載、當(dāng)前IP鏈接數(shù)、磁盤空間使用情況、當(dāng)前進程數(shù)、自定義資源等。

1.2詳細(xì)對象

nagios監(jiān)控的詳細(xì)對象,有以下對象:

網(wǎng)站監(jiān)控、主流數(shù)據(jù)庫監(jiān)控、協(xié)議監(jiān)控、操作系統(tǒng)監(jiān)控、應(yīng)用監(jiān)控、應(yīng)用服務(wù)器監(jiān)控、網(wǎng)絡(luò)監(jiān)控、動力環(huán)境監(jiān)控、存儲監(jiān)控、郵件監(jiān)控、安全監(jiān)控、日志監(jiān)控、虛擬化監(jiān)控。

網(wǎng)站監(jiān)控主要包括網(wǎng)站、網(wǎng)站應(yīng)用、網(wǎng)站內(nèi)容、HTTP、SSL等。

主流數(shù)據(jù)庫監(jiān)控主要包括MySQL、Oracle、DB2、MSSQL等。

協(xié)議監(jiān)控主要包括HTTP、DNS、FTP、SNMP、SMTP、SSH、LDAP、IMAP、POP、ICMP、DHCP等。

操作系統(tǒng)監(jiān)控主要包括Linux、Windows、Unix、Solaris、AIX、HP-UX等。

應(yīng)用監(jiān)控主要包括服務(wù)、進程等。

應(yīng)用服務(wù)器監(jiān)控主要包括Tomcat、JBoss、Websphere、Weblogic、Java、JMX等。

網(wǎng)絡(luò)監(jiān)控主要包括路由器、交換機、防火墻等。

日志監(jiān)控主要包括windows事件日志、Syslog等。

動力環(huán)境監(jiān)控主要包括溫濕度、煙霧傳感器、浸水、干接點、UPS、APC等。

如果想要詳細(xì)了解nagios監(jiān)控的對象,我們可以去nagios官網(wǎng)進行查看。如下:

http://www.nagios.com/solutions

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

二、nagios監(jiān)控方法

前面我們說了nagios監(jiān)控的對象,那么我們是通過哪些方法監(jiān)控這些對象的呢,即通過哪些監(jiān)控載體來實現(xiàn)監(jiān)控的?

nagios給我們提供了多種監(jiān)控方法,比較常見的有NRPE、SNMP、腳本。

NRPE方式在windows、Linux上都有對應(yīng)的客戶端軟件,而SNMP方式需要在windows、Linux上安裝SNMP相關(guān)的組件。對于腳本方式的監(jiān)控,我們可以使用shell、perl等腳本。

對于以上三種方式,建議根據(jù)實際的業(yè)務(wù)進行選擇。比如:要監(jiān)控網(wǎng)絡(luò)設(shè)備的相關(guān)情況,我們一般是通過SNMP方式的。而對于OS來說,我們最常見的是通過NRPE和SNMP方式。

三、nagios通知方式

監(jiān)控的主要目的是當(dāng)監(jiān)控的對象發(fā)生故障或資源緊張時及時通知相關(guān)人員,以便問題得到迅速的處理。

nagios為了方便我們的管理工作,給我們提供了至少3種通知方式。

web方式:通過瀏覽器觀看被監(jiān)控的對象,正常狀態(tài)下,其狀態(tài)(status)是以藍(lán)色填充并顯示一個OK。

郵件通知:當(dāng)發(fā)生故障同時達到設(shè)定重試次數(shù)和探測間隔時間時,發(fā)送郵件給管理員或相關(guān)人員,報告問題的大致情況。

手機短信:這是非常有用和及時的功能了,一旦發(fā)生故障,手機短信可以及時提醒你。

一般情況下,這三者是同時進行的:上班時間開個瀏覽器看頁面顯示、定時收取郵件、手機24小時在線。

四、nagios文件目錄

nagios以及其插件安裝并配置完畢后,整個目錄層次如下:

ll /usr/local/nagios/

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

bin目錄用來存放nagios的執(zhí)行程序,包括nagios、nrpe等。

etc目錄用來存放nagios的配置文件。

libexec目錄用來存放nagios的監(jiān)控插件。

sbin目錄用來存放nagios cgi文件,也就是執(zhí)行外部命令所需文件所在的目錄。

share目錄用來存放nagios網(wǎng)頁文件,也就是存放web頁面的目錄。

include目錄用來存放nagios cgi文件的外部調(diào)用。

var目錄用來存放nagios日志文件、lock文件等文件。

五、nagios配置文件

nagios目錄介紹完畢后,我們再來介紹nagios的配置文件。nagios配置文件默認(rèn)都在/usr/local/nagios/etc目錄下。

5.1 nagios配置文件簡介

查看nagios的配置文件,如下:

/usr/local/nagios

tree -L 2 ./etc/

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

通過上圖,我們可以很明顯的看到所有的配置文件。下面來介紹每個配置文件具體作用。如下:

cgi.cfg用于控制CGI訪問的配置文件。

htpasswd.users用于存放nagios管理員用戶名和密碼的文件。

nagios.cfg是nagios主配置文件,所有的cfg配置文件(外部調(diào)用除外)必須都在此文件中引用cfg配置文件才能生效。

resource.cfg變量定義文件,又稱為資源文件。該文件中定義的變量,可以被其他配置文件引用,如$USER1$。

objects是一個目錄,此目錄下的文件主要用于定義nagios的監(jiān)控對象。

commands.cfg是nagios監(jiān)控命令的定義文件,其中定義的命令可以被其他配置文件引用。

contacts.cfg是定義nagios監(jiān)控對象出現(xiàn)故障時,通知的聯(lián)系人和聯(lián)系人組的配置文件。

localhost.cfg是定義監(jiān)控本地主機的配置文件。

templates.cfg是定義主機和服務(wù)的一個模板配置文件。

timeperiods.cfg是定義nagios監(jiān)控時間段的配置文件。

services.cfg是存放具體被監(jiān)控服務(wù)的相關(guān)配置內(nèi)容。該配置文件默認(rèn)是不存在的,需要自己手工建立,并且要建立在services目錄下。同時還需要在nagios.cfg文件指定services目錄。如下:

egrep -v "^#|^$" nagios.cfg

cfg_dir=/usr/local/nagios/etc/services

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

hosts.cfg存放具體被監(jiān)控的主機相關(guān)配置。該配置文件默認(rèn)是不存在的,需要自己手工建立,并且要建立在hosts目錄下。同時還需要在nagios.cfg文件指定hosts目錄。與services.cfg使用方法相同。

5.2 nagios配置文件之間的關(guān)系

在nagios的配置過程中涉及到定義有:主機、主機組,服務(wù)、服務(wù)組,聯(lián)系人、聯(lián)系人組,監(jiān)控時間,監(jiān)控命令等。從這些定義可以看出,nagios各個配置文件之間是互為關(guān)聯(lián)、彼此引用的。

要成功配置出一臺nagios監(jiān)控系統(tǒng),必須要弄清楚各個配置文件之間依賴與被依賴的關(guān)系,最重要的有四點:

第一:定義監(jiān)控哪些主機、主機組、服務(wù)和服務(wù)組。

第二:定義這個監(jiān)控要用什么命令實現(xiàn)。

第三:定義監(jiān)控的時間段。

第四:定義主機或服務(wù)出現(xiàn)問題時要通知的聯(lián)系人和聯(lián)系人組。

5.2 cgi.cfg文件介紹

cgi.cfg文件是用來控制nagios的相關(guān)cgi腳本。如果想在nagios的web監(jiān)控界面執(zhí)行相關(guān)的cgi腳本,例如重啟nagios進程、關(guān)閉nagios通知、停止nagios主機檢測等,這時就需要配置cgi.cfg文件。

在《爛泥:學(xué)習(xí)Nagios(一):Nagios安裝》文章中,我們已經(jīng)提到nagios默認(rèn)管理員是nagiosadmin。

如果我們要添加一個新管理員admin的話,我們就需要修改cgi.cfg文件添加此用戶的相關(guān)執(zhí)行權(quán)限即可。如下:

egrep -v "^#|^$" cgi.cfg

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

cgi.cfg文件修改完畢,我們還需要把admin用戶添加到htpasswd.users文件中使用htpasswd命令。如下:

htpasswd htpasswd.users admin

cat htpasswd.users

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

5.3 nagios.cfg文件介紹

nagios.cfg是nagios的主配置文件,默認(rèn)的路徑為/usr/local/nagios/etc/nagios.cfg。所有的對象配置文件都必須在這個文件中進行定義才能發(fā)揮其作用,這里只需將對象配置文件在nagios.cfg文件中引用即可。

nagios.cfg配置文件的內(nèi)容比較多,我們在此只介紹比較重要的部分。

查看nagios.cfg文件內(nèi)容,如下:

egrep -v "^#|^$" nagios.cfg

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

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

用于定義nagios在何處創(chuàng)建其日志文件。

說明:

log_file變量用于定義nagios在何處創(chuàng)建其日志文件。如果你使用了nagios日志輪詢功能,那么nagios將在每小時、每天、每周或每月對日志進行輪詢。

cfg_file=/usr/local/nagios/etc/objects/commands.cfg

用于定義nagios監(jiān)控命令的配置文件。

說明:

cfg_file變量用來引用對象配置文件,如果有更多的對象配置文件,我們只需在nagios.cfg文件中依次添加即可。

對象配置文件中一般包含主機、主機組、聯(lián)系人、聯(lián)系人組、服務(wù)、命令等對象的定義。

如果要使nagios處理所有在特定目錄中包含的對象配置文件,那么我們可以使用cfg_dir指令。如下所示:

cfg_dir=/usr/local/nagios/etc/services

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

說明:

cfg_dir變量用于引用一個目錄里包含的所有對象配置文件。所有在這個目錄下的且以.cfg為后綴名的文件將被作為對象配置文件來處理。

另外,nagios將會遞歸該目錄下的子目錄并處理其子目錄下的全部配置文件。你也可以把配置放入不同的目錄并且用cfg_dir=語句來指向每個待處理的目錄。

cfg_file=/usr/local/nagios/etc/objects/contacts.cfg

用于引用nagios聯(lián)系人的配置文件。

cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg

用于引用nagios監(jiān)控時段的配置文件。

cfg_file=/usr/local/nagios/etc/objects/templates.cfg

用于引用nagios監(jiān)控對象的模版文件。

cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

用于引用nagios監(jiān)控本地( Linux )主機的配置文件。

resource_file=/usr/local/nagios/etc/resource.cfg

resource_file變量用于定義nagios資源配置文件,可以在nagios.cfg中定義多個資源文件。

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

status_file變量用于定義nagios的狀態(tài)文件,此文件用于保存nagios當(dāng)前的狀態(tài)、宕機信息等。它會在每次nagios重新啟動的時候被清空刪除。

status_update_interval=10

該變量用于定義狀態(tài)文件(即status.dat)的更新時間間隔,單位是秒,最小更新間隔是1秒,默認(rèn)是10秒。

nagios_user=nagios

該變量指定nagios進程使用哪個用戶運行。

nagios_group=nagios

該變量指定nagios使用哪個用戶組運行。

check_external_commands=1

該變量用于設(shè)置是否允許nagios在web監(jiān)控界面運行cgi命令,也就是是否允許nagios在web界面下執(zhí)行重啟nagios、停止主機、服務(wù)檢查等操作。其中1表示允許,0表示不允許。

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

定義nagios用來檢查外部命令請求的文件。這個文件同樣也是用戶操作提交與CGI命令寫入的地方,所以這個文件必須對于相關(guān)服務(wù)可寫,一般是針對Apache的宿主用戶可寫。并且注意,這個文件所在的目錄的權(quán)限必須被Apache可寫,而不單指這文件,因為這個文件在工作當(dāng)中是頻繁被寫入和刪除的。

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

定義nagios運行時用來保存它的PID文件。

temp_file=/usr/local/nagios/var/nagios.tmp

定義nagios臨時文件路徑。它將在nagios運行時不停地被建立、使用和刪除。

log_rotation_method=d

定義nagios的日志輪詢方式,默認(rèn)是每天輪詢。

值為n表示none,不做輪詢。值為h表示hourly,每小時輪詢一次(每小時的開始)。值為d表示daily,每天輪詢一次(每天的午夜)。值為w表示weekly,每周輪詢一次(每周六的晚上)。值為m表示monthly,每月輪詢一次(每上個月的最后一天的午夜)。

log_archive_path=/usr/local/nagios/var/archives

定義nagios日志的歸檔路徑。

command_check_interval=10s

該變量用于定義nagios對外部命令檢測的間隔,默認(rèn)為10秒。如果這個數(shù)值不加上單位的話,默認(rèn)單位為分鐘。例如1就是表示1分鐘,nagios每分鐘檢測一次。

service_check_timeout=60

定義服務(wù)檢測的超時時間,默認(rèn)為60秒。如果服務(wù)檢查時間超過所定義的時間,則顯示為CRITICAL狀態(tài)。

host_check_timeout=30

定義主機檢測的超時時間,默認(rèn)為30秒。若主機檢查時間超過所定義的時間,則顯示為CRITICAL狀態(tài)。

event_handler_timeout=30

定義事件處理最長時間,默認(rèn)為30秒。若事件處理最長時間超出所定義的時間,則nagios會發(fā)出一條warning警告信息并記錄到日志中。

notification_timeout=30

定義通知信息發(fā)送的時間間隔,默認(rèn)為30秒。

interval_length=60

該變量用于定義nagios檢測時間間隔的單位,默認(rèn)值是60秒,即1分鐘。也就是說在nagios中,檢測時間間隔默認(rèn)是以分鐘為單位的。

這樣定義以后其他地方需要用到時間單位長度的,默認(rèn)都為分鐘。在配置模版文件templates.cfg中定義主機和服務(wù)時,就是以該值為基礎(chǔ)的。如下:

egrep -v "^#|^$" templates.cfg

check_interval 5

retry_interval 1

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

表示檢查間隔為5*60s(5分鐘),即每5分鐘檢查一次。重試檢查時間間隔為1分鐘,最多重試檢查10次。

注意:nagios在OK狀態(tài)時,用check_interval定義的時間間隔來監(jiān)控,出現(xiàn)問題后,切換為retry_interval和max_check_attempts進行監(jiān)控,當(dāng)重試次數(shù)達到max_check_attempts值后觸發(fā)首次報警,同時恢復(fù)為check_interval進行監(jiān)控,并用notification_interval定義的時間間隔來發(fā)送報警。故障恢復(fù)正常后,在最近的check_interval點發(fā)送OK通知,完成報警周期。

對于一些敏感度要求高的服務(wù),這明顯不能滿足我們的要求,因此可以將其調(diào)小,如調(diào)整為10秒:

interval_length=10s

這樣就提高了檢查的靈敏度,但有些服務(wù)又不需要如此高的靈敏度,如磁盤空間(不會一下就增加很多),則可以在定義check_interval是增大其數(shù)值。

注意:靈敏度和誤報率是成正比的,檢查間隔越小,出現(xiàn)誤報的可能性越大。所以,建議根據(jù)實際情況調(diào)整到合適的值。

5.4 resource.cfg文件介紹

resource.cfg是nagios的變量定義文件,文件內(nèi)容只有一行。如下:

$USER1$=/usr/local/nagios/libexec

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

其中,變量$USER1$指定安裝nagios插件的路徑。

如果把插件安裝在了其它路徑,只需在這里進行修改即可。

需要注意的是,變量必須先定義,然后才能在其它配置文件中進行引用,同時該變量也是可以通過宏進行定義。

nagios的一個重要特征就是可以在命令行的定義里使用宏,通過定義宏,nagios可以靈活的獲取主機、服務(wù)和其它對象的信息。

5.4.1宏的工作機制

在執(zhí)行命令之前,nagios將對命令里的每個宏替換成它們應(yīng)當(dāng)取得的值。這種宏替換發(fā)生在nagios執(zhí)行各種類型的宏時候。例如主機和服務(wù)的檢測、通知、事件處理等。

5.4.2宏的分類

根據(jù)宏的不同,我們可以把宏分成:默認(rèn)宏、按需而成的宏、用戶自定義宏。

默認(rèn)宏,以主機IP地址宏為例。

當(dāng)在命令定義中使用主機或服務(wù)宏時,宏將要執(zhí)行時所用的值指向主機或服務(wù)所帶的值。

看下面這個例子,假如在check_ping命令定義里使用了一個主機對象,如下:

define host{

  host_name ilanni

  address 192.168.1.247

  check_command check_ping }

define command{

  command_name check_ping

  command_line /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$-w 100.0,90% -c 200.0,60% }

那么執(zhí)行這個主機檢測命令時,最終執(zhí)行的將是這樣的:

/usr/local/nagios/libexec/check_ping -H 192.168.1.247 -w 100.0,90% -c 200.0,60%

nagios宏的優(yōu)美之處在于你可以只用一個命令定義來完成無限個主機的檢測,并且每個主機可以使用相同的命令來進行檢測,而在對它們檢測之前將把主機地址正確地進行替換。

命令參數(shù)宏

同樣你也可以向命令傳遞參數(shù),這樣可以保證命令定義更具通用性。參數(shù)指定在對象(像主機或服務(wù))中定義,用一個“!”來分隔,例如這樣:

define service{

  host_name ilanniservice

  service_description PING

  check_command check_ping!200.0,80%!400.0,40% }

上例中,服務(wù)的檢測命令中含有兩個參數(shù),$ARG1$宏將是"200.0,80%",$ARG2$將是"400.0,40%"(都不帶引號)。假如check_ping命令是這樣定義的:

define command{

  command_name check_ping

  command_line /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ }

那么對于服務(wù)的檢測命令最終將是這樣的:

/usr/local/nagios/libexec/check_ping -H 192.168.1.247 -w 200.0,80% -c 400.0,40%

另外,按需而成的宏和用戶自定義宏,在此我們就不做過多介紹。如果想要深入學(xué)習(xí)有關(guān)nagios宏的相關(guān)知識的話,可以去nagios官網(wǎng)進行查看。

5.4.3 nagios可用的宏

nagios可用的宏比較多,但是每個命令最多支持32個參數(shù)宏。在此我們介紹幾個經(jīng)常使用的宏。

主機宏:

$HOSTNAME$主機簡稱,取自于主機定義里的host_name。$HOSTADDRESS$主機地址,取自于主機定義里的address。

服務(wù)宏:

$SERVICESTATE$當(dāng)前服務(wù)的狀態(tài),有w、u、c、r。其中w即warn,表示警告狀態(tài)。u即unknown,表示狀態(tài)不明。c即criticle,表示緊急狀態(tài)。r即recover,表示恢復(fù)狀態(tài)。

$SERVICEDESC$對當(dāng)前服務(wù)的描述。

聯(lián)系人宏:

$CONTACTNAME$表示聯(lián)系人,在聯(lián)系人contacts.cfg文件中定義。

通知宏:

$NOTIFICATIONTYPE$返回下面信息:("PROBLEM", "RECOVERY", "ACKNOWLEDGEMENT","FLAPPINGSTART","FLAPPINGSTOP","FLAPPINGDISABLED","DOWNTIMESTART","DOWNTIMEEND",or"DOWNTIMECANCELLED")。

日期/時間宏:

$LONGDATETIME$當(dāng)前的日期/時間戳。

文件宏:

$LOGFILE$日志文件的保存位置。$MAINCONFIGFILE$主配置文件的保存位置。

其他宏:

$ADMINEMAIL$全局管理員email地址。

$ARGn$指向第n個命令傳遞參數(shù)(通知、事件處理、服務(wù)檢測等)。

如果想查看nagios所有宏的信息,可以在nagios的官方網(wǎng)站進行查看。如下:

http://nagios.sourceforge.net/docs/nagioscore/4/en/toc.html

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

當(dāng)然也可以查看nagioc中文版的連接,如下:

http://nagios-cn.sourceforge.net/nagios-cn/advance.html

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

5.5 commands.cfg文件介紹

commands.cfg是nagios監(jiān)控命令的定義文件,該文件默認(rèn)是存在的,無需修改即可使用。當(dāng)然如果有新命令需要加入時,只需在此文件中添加即可。這里并未列出該文件的所有內(nèi)容,僅僅介紹在配置中經(jīng)常使用到的一些命令。

egrep -v "^#|^$" commands.cfg

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

下面是notify-host-by-email命令的定義:

define command{

   command_name notify-host-by-email

   command_line /usr/bin/printf "%b" "*****Nagios*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost:$HOSTNAME$\nState: $HOSTSTATE$\nAddress:$HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time:$LONGDATETIME$\n"|/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert:$HOSTNAME$ is $HOSTSTATE$**"$CONTACTEMAIL$ }

command_name行定義命令名稱,即定義了一個主機異常時發(fā)送郵件的命令。

command_line行定義命令具體的執(zhí)行方式,其中“-H $HOSTADDRESS$”是定義目標(biāo)主機的地址。

下面是notify-service-by-email命令的定義:

define command{

command_name notify-service-by-email

command_line /usr/bin/printf "%b" "*****Nagios*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n"|/bin/mail -s "** $NOTIFICATIONTYPE$Service Alert: $HOSTALIAS$/$SERVICEDESC$is $SERVICESTATE$**"$CONTACTEMAIL$ }

command_name行定義命令名稱,即定義了一個服務(wù)異常時發(fā)送郵件的命令。

command_line命令具體的執(zhí)行方式,“-H $HOSTADDRESS$”是定義目標(biāo)主機的地址,這個地址在hosts.cfg文件中定義了。

下面是check-host-alive命令的定義:

define command{

command_name check-host-alive

command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 }

command_name行定義命令名稱,用來檢測主機的狀態(tài)。

command_line這里的變量$USER1$是在resource.cfg文件中進行定義的,即$USER1$=/usr/local/nagios/libexec,最后check_ping的完整路徑為/usr/local/nagios/libexec/check_ping。

“-w 3000.0,80%”中“-w”說明后面的一對值對應(yīng)的是“WARNING”狀態(tài),“80%”是其臨界值?!?c 5000.0,100%”中“-c”說明后面的一對值對應(yīng)的是“CRITICAL”,“100%”是其臨界值?!?p 5”表示發(fā)送5個數(shù)據(jù)包。

check_ping命令的參數(shù):

-H 目標(biāo)主機地址。

-w WARNING警告狀態(tài):響應(yīng)時間(毫秒),丟包率(%)的閥值。

-c CRITICAL危險狀態(tài):響應(yīng)時間(毫秒),丟包率(%)的閥值。

-p 發(fā)送包的個數(shù),默認(rèn)5個包。

-t 超時時間,默認(rèn)10秒。

-4|-6 使用ipv4|ipv6 地址,默認(rèn)ipv4。

5.6 contacts.cfg文件介紹

contacts.cfg是定義聯(lián)系人和聯(lián)系人組的配置文件。當(dāng)監(jiān)控的主機或者服務(wù)出現(xiàn)故障時,nagios會通過指定的通知方式,將信息發(fā)給這里指定的聯(lián)系人。

egrep -v "^$|^#" contacts.cfg

define contact{

contact_name nagiosadmin

use generic-contact

alias Nagios Admin

email nagios@localhost }

define contactgroup{

contactgroup_name admins

alias Nagios Administrators

members nagiosadmin }

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

contact_name行定義聯(lián)系人名稱。

use行表示引用generic-contact的屬性信息,其中g(shù)eneric-contact在templates.cfg文件中進行定義。

alias行定義聯(lián)系人別名。

email行定義聯(lián)系人的郵件地址。

contactgroup_name行定義聯(lián)系人組名稱。

members行定義聯(lián)系人組成員,其中“nagiosadmin”就是上面定義的聯(lián)系人。

5.7 timeperiods.cfg文件介紹

timeperiods.cfg文件用于定義監(jiān)控的時間段。

下面是定義一個名為24x7的時間段,即監(jiān)控所有時間段。如下:

egrep -v "^#|^$" timeperiods.cfg

爛泥:學(xué)習(xí)Nagios(二):Nagios配置

注意:timeperiod_name行定義的時間段名稱中不能有空格。

5.8 templates.cfg文件介紹

為了不必重復(fù)定義一些監(jiān)控對象,nagios引入了一個模板配置文件templates.cfg,將一些共性的屬性定義成模板,以便于多次引用。

templates.cfg通用模板定義,包括監(jiān)控主機模板generic-host、linux_server,監(jiān)控服務(wù)模板local_service,聯(lián)系人模板generic-contact(并非真正的聯(lián)系人,真正的聯(lián)系人在contacts.cfg中定義)。

下面詳細(xì)介紹下templates.cfg文件中每個參數(shù)的含義:

define contact{

name generic-contact

定義聯(lián)系人名稱。

service_notification_period 24x7

當(dāng)服務(wù)出現(xiàn)異常時,發(fā)送通知的時間段,這個時間段“24x7"在timeperiods.cfg文件中定義。

host_notification_period 24x7

當(dāng)主機出現(xiàn)異常時,發(fā)送通知的時間段,這個時間段“24x7"在timeperiods.cfg文件中定義。

service_notification_options w,u,c,r

定義通知可以發(fā)出的狀態(tài)。w即warn,表示警告狀態(tài)。u即unknown,表示狀態(tài)不明。c即criticle,表示緊急狀態(tài)。r即recover,表示恢復(fù)狀態(tài)。也就是說在服務(wù)出現(xiàn)警告狀態(tài)、未知狀態(tài)、緊急狀態(tài)和重新恢復(fù)狀態(tài)時都發(fā)送通知給使用者。

host_notification_options d,u,r

定義主機在什么狀態(tài)下需要發(fā)送通知給使用者。d即down,表示宕機狀態(tài)。u即unreachable,表示不可到達狀態(tài)。r即recovery,表示重新恢復(fù)狀態(tài)。

service_notification_commands notify-service-by-email

定義服務(wù)發(fā)生故障時,發(fā)送通知的方式,這里定義的是郵件,其中“notify-service-by-email”在commands.cfg文件中定義。

host_notification_commands notify-host-by-email

定義主機發(fā)生故障時,發(fā)送通知的方式,這里定義的是郵件,其中“notify-host-by-email”在commands.cfg文件中定義。

register 0

}

define host{

name generic-host

定義主機名稱。這里的主機名,并不是直接對應(yīng)到真正機器的主機名,而是對應(yīng)到在主機配置文件里所設(shè)定的主機名。

notifications_enabled 1

event_handler_enabled 1

flap_detection_enabled 1

failure_prediction_enabled 1

process_perf_data 1

retain_status_information 1

retain_nonstatus_information 1

notification_period 24x7

指定發(fā)送通知的時間段,也就是可以在什么時候發(fā)送通知給使用者。

register 0 }

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對主機的最大檢查次數(shù),也就是nagios在檢查發(fā)現(xiàn)某主機異常時,并不馬上判斷為異常狀況,而是多試幾次,因為有可能只是一時網(wǎng)絡(luò)太擁擠,或是一些其他原因,讓主機受到了一點影響,這里的10就是最多試10次的意思。

check_command check-host-alive

指定檢查主機狀態(tài)的命令,其中“check-host-alive”在commands.cfg文件中定義。

notification_period workhours

當(dāng)主機故障時,發(fā)送通知的時間范圍,其中“workhours”在timeperiods.cfg中進行定義。

notification_interval 120

在主機出現(xiàn)異常后,故障一直沒有解決,nagios再次對使用者發(fā)出通知的時間,單位是分鐘。

notification_options d,u,r

定義主機在什么狀態(tài)下可以發(fā)送通知給使用者。d即down,表示宕機狀態(tài)。u即unreachable,表示不可到達狀態(tài)。r即recovery,表示重新恢復(fù)狀態(tài)。

contact_groups admins

指定聯(lián)系人組,這個“admins”在contacts.cfg文件中定義。

register 0 }

define service{

name generic-service

定義服務(wù)名稱。

active_checks_enabled 1

passive_checks_enabled 1

parallelize_check 1

obsess_over_service 1

check_freshness 0

notifications_enabled 1

event_handler_enabled 1

flap_detection_enabled 1

failure_prediction_enabled 1

process_perf_data 1

retain_status_information 1

retain_nonstatus_information 1

is_volatile 1

check_period 24x7

這里的check_period告訴nagios檢查服務(wù)的時間段。

max_check_attempts 3

nagios對服務(wù)的最大檢查次數(shù)。

normal_check_interval 10

此選項是用來設(shè)置服務(wù)檢查時間間隔,也就是說,nagios這一次檢查和下一次檢查之間所隔的時間,這里是10分鐘。

retry_check_interval  2

重試檢查時間間隔,單位是分鐘。

contact_groups  admins

指定聯(lián)系人組,同上。

notification_options  w,u,c,r

這個定義的是通知可以發(fā)出時的狀態(tài)。w即warn,表示警告狀態(tài),u即unknown,表示不明狀態(tài)。c即criticle,表示緊急狀態(tài)。r即recover,表示恢復(fù)狀態(tài)。也就是在服務(wù)出現(xiàn)警告狀態(tài)、未知狀態(tài)、緊急狀態(tài)和重新恢復(fù)后都發(fā)送通知給使用者。

notification_interval 60

在服務(wù)出現(xiàn)異常后,故障一直沒有解決,nagios再次對使用者發(fā)出通知的時間,單位是分鐘。

notification_period  24x7

指定發(fā)送通知的時間段,也就是可以在什么時候發(fā)送通知給使用者。

register  0 }

分享文章:爛泥:學(xué)習(xí)Nagios(二):Nagios配置
本文來源:http://muchs.cn/article28/gpjicp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、微信公眾號、網(wǎng)站內(nèi)鏈、網(wǎng)站營銷、網(wǎng)站維護品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)