運維監控利器Nagios
Nagios的概念、結構和功能
1、使用Nagios的必要性
大量的IT基礎設施系統管理繁瑣、複雜。
減少管理和維護成本
優化系統、合理利用服務資源
監控軟件侷限性:
沒有任何工具可以監視你所需的一切內容。
要讓工具完全適應你的需求需要做許多自定義工作。
2、什麼是Nagios
Nagios—NagiosAin’t Gonna Insist on Sainthood
最初項目名字是NetSaint,程序主體由ANSI C編制.
Nagios是一款開源的免費網絡監視工具,其功能強大,靈活性強。能有效監控Windows、Linux和Unix的主機狀態,交換機、路由器等網絡設置,打印機等,在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。
商業IT管理系統,如 IBM Tivoli, HPOpenView/Operations等
官方站點:http://www.nagios.org/
3、Nagios的結構
Nagios可分爲核心和插件兩個部分。
Nagios的核心部分只提供了很少的監控功能,因此要搭建一個完善的IT監控管理系統,用戶還需要給Nagios安裝相應的插件,插件可以從Nagios官方網站下載,也可以根據實際要求自己編寫所需的插件。
Nagios必須運行在linux/Unix平臺下,需要gcc編譯器支持,nagios還提供了一個web監控界面。
4、 Nagios可實現的功能
(1)監視本地或者遠程主機資源 (內存、進程、磁盤等)
(2)監視網絡服務資源 (HTTP、PING、FTP、SMTP、POP3等)
(3)允許用戶編寫自己的插件來監控特定的服務。
(4)當被監控對象出現異常時,可以通過郵件、短信等方式通知管理人員。
(5)可以事先定義事件處理程序,當主機或者服務出現故障時自動調用指定的處理程序。
(6)可以通過web界面來監控各個主機或服務的運行狀態。
5、 Nagios監控實現原理
Nagios軟件需要安裝在一臺獨立的服務器上運行,這臺服務器稱爲監控中心,這個監控中心服務器可以採用Linux或者Unix操作系統。每一臺需要監視的硬件主機或者服務都運行一個與監控中心服務器進行通信的Nagios軟件後臺程序。監控中心服務器根據讀取配置文件中的指令與遠程的守護程序進行通信,並且指示遠程的守護程序進行必要的檢查。雖然nagios軟件必須在Linux或者Unix操作系統上運行,但是,遠程被監控的機器可以是任何能夠與其進行通信的主機。根據遠程主機返回的應答,Nagios將根據配置以合適的行動進行迴應。接着,Nagios將通過本地的機器進行測試。如果檢查返回的值不正確,Nagios將通過一種或者多種方式報警。這也是根據事先的配置而採取的行動。
配置:
系統需求:
系統環境——linux;gcc;網絡;web服務-CGI(php);
[root@tx nagios]# yum install -y httpd php glibc glibc-common gd gd-develgcc
構建基本環境:
[root@tx nagios]# useradd nagios
[root@tx nagios]# groupadd nagcmd
[root@tx nagios]# usermod -a -G nagcmd apache
[root@tx nagios]# usermod -a -G nagcmd nagios
開始安裝:
(1)安裝核心程序:nagios-3.2.3.tar.gz
# tar zxf nagios-3.2.3.tar.gz-C /usr/local/src
[root@tx nagios-3.2.3]#pwd
/usr/local/src/nagios-3.2.3
[root@tx nagios-3.2.3]#./configure --prefix=/usr/local/nagios --with-command-group=nagcmd
#指定nagios的安裝目錄,這裏指定nagios安裝到/usr/local/nagios目錄
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
Embedded Perl: no
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Lock file: ${prefix}/var/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults
Init directory: /etc/rc.d/init.d
Apache conf.d directory: /etc/httpd/conf.d
Mail program: /bin/mail
Host OS: linux-gnu
[root@tx nagios-3.2.3]#make all
[root@tx nagios-3.2.3]#make install
# make install用來安裝nagios的主程序,CGI和HTML文件
[root@tx nagios-3.2.3]#make install-init
#通過make install-init命令可以在/etc/rc.d/init.d目錄下創建nagios啓動腳本
[root@tx nagios-3.2.3]#make install-config
#make install-cofig命令用來安裝nagios示例配置文件,這裏安裝的路徑
[root@tx nagios-3.2.3]#make install-commandmode
#通過make install-commandmode命令來配置目錄權限
[root@tx nagios-3.2.3]#make install-webconf
安裝nagios的web接口
3、Nagios目錄介紹
Nagios安裝完成後,各個目錄結構以及功能說明如下表所示:
# cd /etc/httpd/conf.d
# vim nagios.conf
ScriptAlias/nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory"/usr/local/nagios/sbin">
# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile/usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Alias /nagios"/usr/local/nagios/share"
<Directory"/usr/local/nagios/share">
# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
[root@tx nagios]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
(3)啓動服務:
[root@tx libexec]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@tx libexec]# /etc/init.d/nagios start
Starting nagios:/etc/bashrc
done.
打開瀏覽器訪問:
[root@tx libexec]# firefox http://192.168.8.4/nagios&
nagiosadmin
密碼是自己設的
-------------------------------------------------------
1、介紹nagios的配置文件:
[root@tx etc]# pwd
/usr/local/nagios/etc
[root@tx etc]# cd objects/
2、配置文件之間的關係
在nagios的配置過程中涉及到的幾個定義有:主機、主機組,服務、服務組,聯繫人、聯繫人組,監控時間,監控命令等,從這些定義可以看出,nagios各個配置文件之間是互爲關聯,彼此引用的。
成功配置出一臺nagios監控系統,必須要弄清楚每個配置文件之間依賴與被依賴的關係,最重要的有四點:
第一:定義監控哪些主機、主機組、服務和服務組
第二:定義這個監控要用什麼命令實現,
第三:定義監控的時間段,
第四:定義主機或服務出現問題時要通知的聯繫人和聯繫人組。
3、開始配置nagios
爲了能更清楚的說明問題,同時也爲了維護方便,建議將nagios各個定義對象創建獨立的配置文件:
即爲:
創建hosts.cfg文件來定義主機和主機組,被監控的主機
創建services.cfg文件來定義服務,監控的服務
用默認的contacts.cfg文件來定義聯繫人和聯繫人組,出了問題向誰發信息
用默認的commands.cfg文件來定義命令,監控用的命令
用默認的timeperiods.cfg來定義監控時間段,7x24; workhour
用默認的templates.cfg文件作爲資源引用文件
(1)templates.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對主機的最大檢查次數,也就是nagios在檢查發現某主機異常時,並不馬上判斷爲異常狀況,而是多試幾次,因爲有可能只是一時網絡太擁擠,或是一些其他原因,讓主機受到了一點影響,這裏的10就是至少試10次的意思。
check_command check-host-alive #指定檢查主機狀態的命令,其中“check-host-alive”在commands.cfg文件中定義。
notification_period workhours #主機故障時,發送通知的時間範圍,其中“workhours”在timeperiods.cfg中進行了定義,下面會陸續講到。
notification_interval 120 #在主機出現異常後,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你覺得,所有的事件只需要一次通知就夠了,可以把這裏的選項設爲0
notification_options d,u,r #定義主機在什麼狀態下可以發送通知給使用者,d即down,表示宕機狀態,u即unreachable,表示不可到達狀態,r即recovery,表示重新恢復狀態。
contact_groups admins #指定聯繫人組,這個“admins”在contacts.cfg文件中定義。
register 0
}
define service{
name generic-service #定義一個服務名稱
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 0
check_period 24x7 #這裏的check_period告訴nagios檢查服務的時間段。
max_check_attempts 3 #nagios對服務的最大檢查次數。
normal_check_interval 10 #此選項是用來設置服務檢查時間間隔,也就是說,nagios這一次檢查和下一次檢查之間所隔的時間,這裏是10分鐘。
retry_check_interval 2 #重試檢查時間間隔,單位是分鐘。
contact_groups admins #指定聯繫人組,同上。
notification_options w,u,c,r #這個定義的是“通知可以被髮出的情況”。w即warn,表示警告狀態,u即unknown,表示不明狀態,c即criticle,表示緊急狀態,r即recover,表示恢復狀態。也就是在服務出現警告狀態、未知狀態、緊急狀態和重新恢復後都發送通知給使用者。
notification_interval 60 #在服務出現異常後,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你認爲,所有的事件只需要一次通知就夠了,可以把這裏的選項設爲0。
notification_period 24x7 #指定“發送通知”的時間段,也就是可以在什麼時候發送通知給使用者。
register 0
}
(2)resource.cfg文件
resource.cfg是nagios的變量定義文件,文件內容只有一行:
$USER1$=/usr/local/nagios/libexec
其中,變量$USER1$指定了安裝nagios插件的路徑,如果把插件安裝在了其它路徑,只需在這裏進行修改即可。需要注意的是,變量必須先定義,然後才能在其它配置文件中進行引用。
(3)理解Nagios宏及其工作機制
Nagios配置非常靈活,繼承和引用是一大特徵,另一個重要特徵就是可以在命令行的定義裏使用宏,通過定義宏,nagios可以靈活的獲取主機、服務和其它對象的信息。
宏(Macro),香港和臺灣稱爲巨集,是一種批量批量處理的稱謂。
計算機科學裏的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。解釋器或編譯器在遇到宏時會自動進行這一模式替換。
宏的工作機制
在執行命令之前,nagios將對命令裏的每個宏替換成它們應當取得的值。這種宏替換髮生在Nagios執行各種類型的宏時候。例如主機和服務的檢測、通知、事件處理等。
宏的分類:
默認宏、按需而成的宏、用戶自定製宏等。
默認宏:
主機IP地址宏
當在命令定義中使用主機或服務宏時,宏將要執行所用的值指向主機或服務所帶有值。看下面這個例子,假定在check_ping命令定義裏使用了一個主機對象,例如這樣:
define host{
host_name ixdba
address 192.168.12.246
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%
}
那麼執行這個主機檢測命令時展開並最終執行的將是這樣的:
/usr/local/nagios/libexec/check_ping -H192.168.12.246 -w 100.0,90% -c 200.0,60%
命令參數宏
同樣你可以向命令傳遞參數,這樣可以保證命令定義更具通用性。參數指定在對象(象主機或服務)中定義,用一個“!”來分隔,例如這樣:
define service{
host_name linuxbox
service_description PING
check_command check_ping!200.0,80%!400.0,40%
...
}
在上例中,服務的檢測命令中含有兩個參數(請參考$ARGn$宏),而$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$
}
那麼對於服務的檢測命令最終將是這樣子的:
/usr/local/nagios/libexec/check_ping-H 192.168.12.246 -w 200.0,80% -c 400.0,40%
Nagios可用的全部的宏
主機宏
$HOSTNAME$ 主機簡稱(如"web"),取自於主機定義裏的host_name域
$HOSTADDRESS$ 主機地址。取自於主機定義裏的address域
服務宏
$SERVICESTATE$ 服務狀態描述,有w,u,c
$SERVICEDESC$ 對當前服務的描述
聯繫人宏
$CONTACTNAME$ 表示聯繫人,在聯繫人文件中定義
通知宏
$NOTIFICATIONTYPE$ 返回下面信息:("PROBLEM", "RECOVERY","ACKNOWLEDGEMENT", "FLAPPINGSTART","FLAPPINGSTOP", "FLAPPINGDISABLED","DOWNTIMESTART", "DOWNTIMEEND", or"DOWNTIMECANCELLED").
日期/時間宏
$LONGDATETIME$ 當前的日期/時間戳
文件宏
$LOGFILE$ 日誌文件的保存位置。
$MAINCONFIGFILE$ 主配置文件的保存位置。
其他宏
$ADMINEMAIL$ 全局的管理員EMail地址
$ARGn$ 指向第n個命令傳遞參數(通知、事件處理、服務檢測等)。Nagios支持最多32個參數宏
(4)commands.cfg文件
此文件默認是存在的,無需修改即可使用,當然如果有新的命令需要加入時,在此文件進行添加即可。這裏並未列出文件的所有內容,僅僅介紹了配置中用到的一些命令。
#下面是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$ #命令具體的執行方式,“-H $HOSTADDRESS$”是定義目標主機的地址,這個地址在hosts.cfg文件中定義了。
}
#下面是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\nAdditionalInfo:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"$CONTACTEMAIL$
}
#下面是check-host-alive命令的定義
define command{
command_name check-host-alive #命令名稱,用來檢測主機狀態。
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w3000.0,80% -c 5000.0,100% -p 5 #這裏的變量$USER1$在resource.cfg文件中進行定義,即$USER1$=/usr/local/nagios/libexec
,那麼check_ping的完整路徑爲/usr/local/nagios/libexec/check_ping。“-w 3000.0,80%”中“-w”說明後面的一對值對應的是“WARNING”狀態,“80%”是其臨界值。“-c 5000.0,100%”中“-c”說明後面的一對值對應的是“CRITICAL”,“100%”是其臨界值。“-p 1”說明每次探測發送一個包。
}
#下面是check_ftp命令的定義
define command{
command_name check_ftp
command_line $USER1$/check_ftp -H $HOSTADDRESS$$ARG1$ #$ARG1$是指在調用這個命令的時候,命令後面的第一個參數。
}
#下面是check_http命令的定義
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
#下面是check_ssh命令的定義
define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}
。。。。。。
(5) hosts.cfg文件
此文件默認不存在,需要手動創建,hosts.cfg主要用來指定被監控的主機地址以及相關屬性信息,一個配置好的實例如下:
define host{
use linux-server #引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。
host_name web #主機名
alias ixdba-web #主機別名
address 192.168.12.251 #被監控的主機地址,這個地址可以是ip,也可以是域名。
}
define host{
use linux-server
host_name mysql
alias ixdba-mysql
address 192.168.12.237
}
define hostgroup{ #定義一個主機組
hostgroup_name sa-servers #主機組名稱,可以隨意指定。
alias sa servers #主機組別名
members web,mysql #主機組成員,其中“web”、“mysql”就是上面定義的兩個主機。
}
(6) services.cfg文件
此文件默認也不存在,需要手動創建,services.cfg文件主要用於定義監控的服務和主機資源,例如監控http服務、ftp服務、主機磁盤空間、主機系統負載等等。
################# ixdba web #####################
define service{
use local-service #引用local-service服務的屬性值,local-service在templates.cfg文件中進行了定義。
host_name web #指定要監控哪個主機上的服務,“web”在hosts.cfg文件中進行了定義。
service_description PING #對監控服務內容的描述,以供維護人員參考。
check_command check_ping!100.0,20%!500.0,60% #指定檢查的命令,check_ping命令在commands.cfg中定義,後跟兩個參數,命令與參數間用!分割。
}
define service{
use local-service
host_name web
service_description SSH
check_command check_ssh # check_ssh命令也在commands.cfg中定義。
}
define service{
use local-service
host_name web
service_description SSHD
check_command check_tcp!22
}
(7) contacts.cfg文件
contacts.cfg是一個定義聯繫人和聯繫人組的配置文件,當監控的主機或者服務出現故障,nagios會通過指定的通知方式(郵件或者短信)將信息發給這裏指定的聯繫人或者使用者。
define contact{
contact_name sasystem #聯繫人名稱
use generic-contact #引用generic-contact的屬性信息,其中“generic-contact”在templates.cfg文件中進行定義
alias sa-system #聯繫人別名
email [email protected] #聯繫人的郵件地址
}
define contactgroup{
contactgroup_name admins #聯繫人組名稱
alias system administrator group #聯繫人組描述
members sasystem #聯繫人組成員,其中“sasystem”就是上面定義的聯繫人
}
(8) timeperiods.cfg文件
此文件只要用於定義監控的時間段,下面是一個配置好的實例:
#下面是定義一個名爲24x7的時間段,即監控所有時間段
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
}
#下面是定義一個名爲workhours的時間段,即工作時間段。
define timeperiod{
timeperiod_name workhours
alias Normal Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
(9) cgi.cfg文件
此文件用來控制相關cgi腳本,如果想在nagios的web監控界面執行cgi腳本,例如重啓nagios進程、關閉nagios通知、停止nagios主機檢測等,這時就需要配置cgi.cfg文件了。
所以只需在cgi.cfg文件中添加此用戶的執行權限就可以了,需要修改的配置信息如下:
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
(10) nagios.cfg文件
Nagios.cfg默認的路徑爲/usr/local/nagios/etc/nagios.cfg,是nagios的核心配置文件,所有的對象配置文件都必須在這個文件中進行定義才能發揮其作用,這裏只需將對象配置文件在Nagios.cfg文件中進行引用即可。
log_file=/usr/local/nagios/var/nagios.log
“log_file”變量用來定義nagios日誌文件的路徑。
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.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
“cfg_file”變量用來引用對象配置文件,如果有更多的對象配置文件,在這裏依次添加即可。
object_cache_file=/usr/local/nagios/var/objects.cache
該變量用於指定一個“所有對象配置文件”的副本文件,或者叫對象緩衝文件
resource_file=/usr/local/nagios/etc/resource.cfg
該變量用於指定nagios資源文件的路徑,可以在Nagios.cfg中定義多個資源文件。
status_file=/usr/local/nagios/var/status.dat
該變量用於定義一個狀態文件,此文件用於保存nagios的當前狀態、註釋和宕機信息等。
status_update_interval=10
該變量用於定義狀態文件(即status.dat)的更新時間間隔,單位是秒,最小更新間隔是1秒。
nagios_user=nagios
該變量指定了Nagios進程使用哪個用戶運行。
nagios_group=nagios
該變量用於指定Nagios使用哪個用戶組運行。
check_external_commands=1
該變量用於設置是否允許nagios在web監控界面運行cgi命令,也就是是否允許nagios在web界面下執行重啓nagios、停止主機/服務檢查等操作。“1”爲運行,“0”爲不允許。
command_check_interval=2
該變量用於設置nagios對外部命令檢測的時間間隔,如果指定了一個數字加一個"s"(如10s),那麼外部檢測命令的間隔是這個數值以秒爲單位的時間間隔。如果沒有用"s",那麼外部檢測命令的間隔是以這個數值的“時間單位”的時間間隔。
interval_length=60
該變量指定了nagios的時間單位,默認值是60秒,也就是1分鐘,即在nagios配置中所有的時間單位都是分鐘
例子:
定義一個new contact:
#vim/usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name matrix
alias administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email matrix@localhost
}
#vim /usr/local/nagios/etc/objects/remotehost.cfg
define host{
host_name apache
alias apache
address 192.168.8.6
max_check_attempts 5
check_period 24x7
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_period 24x7
notification_options d,u,r
}
#vim/usr/local/nagios/etc/objects/services.cfg
define service{
use local-service
host_name apache
service_description remotehost_boot
check_command check_nrpe!check_sda1
}
define service{
use local-service
host_name apache
service_description apache_alive
check_command check_ping!100.0,20%!500.0,60%
}
define service{
host_name apache
service_description check_tcp 80
max_check_attempts 5
check_period 24x7
normal_check_interval 5
retry_check_interval 2
contact_groups admins
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!80
}
修改主配置文件,加入你自己編寫的remotehost.cfg,services.cfg
vim /usr/local/nagions/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/remotehost.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
檢查主配置文件,確定是否書寫正確
#/usr/local/nagios/bin/nagios -v /usr/local/nagions/etc/nagios.cfg
重新啓動nagios服務:
# /etc/init.d/nagios restart
Runningconfiguration check...done.
Stoppingnagios: .done.
Starting nagios: done.
=====================================================================
利用NRPE外部構件監控遠程主機
1、nrpe實現監控遠程主機原理
NRPE是nagios的一個功能擴展,它可在遠程Linux/Unix主機上執行插件程序,通過在遠程服務器上安裝nrpe構件以及nagios插件程序,來向nagios監控平臺提供該服務器的一些本地的情況。例如,cpu負載、內存使用、硬盤使用等等。
在被監控端安裝所需的軟件: 192.168.8.6
# wget http://192.168.8.4/nagios-bj/nagios-plugins-1.4.15.tar.gz
# wgethttp://192.168.8.4/nagios-bj/nrpe-2.12.tar.gz
#useradd -s /sbin/nologin -M nagios
# pwd
/usr/local/src/nagios-plugins-1.4.15
# ./configure --prefix=/usr/local/nagios
# make
# make install
安裝NRPE:
nagios的遠程插件執行程序,負責收集被監控端的信息,並傳輸到監控端。
在客戶端安裝nrpe插件過程要比在服務端安裝複雜,因爲nrpe在客戶端是作爲一個守護進程在運行的
# tar xvzf nrpe-2.12.tar.gz -C/usr/local/src
# pwd
/usr/local/src/nrpe-2.12
# cd nrpe-2.12
# ./configure --prefix=/usr/local/nagios/
checking for SSL headers... configure:error: Cannot find ssl headers
# yum search ssl
openssl.i386 : The OpenSSL toolkit
openssl.i686 : The OpenSSL toolkit
openssl-devel.i386 : Files for developmentof applications which will
: use OpenSSL
# yum install -y openssl openssl-devel
# ./configure--prefix=/usr/local/nagios/ 再跑一遍
General Options:
-------------------------
NRPEport: 5666
NRPEuser: nagios
NRPEgroup: nagios
Nagios user: nagios
Nagios group: nagios
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config
# make install-xinetd
配置nrpe,添加nrpe服務:
#vim /etc/services
418nrpe 5666/tcp # nrpe
# vim /etc/xinetd.d/nrpe
only_from = 192.168.8.4 127.0.0.1
# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
# netstat -antpul | grep nrpe
# netstat -antpul | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 32502/xinetd
# cd /usr/local/nagios/etc/
# vim nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users-w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load-w 15,10,5 -c 30,25,20
command[check_sda1]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/sda1
command[check_sda2]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/sda2
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs-w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs-w 150 -c 200
本地測試:
# /usr/local/nagios/libexec/check_nrpe -Hlocalhost -c check_sda1
DISK OK - free space: /boot 82 MB (88%inode=99%);| /boot=11MB;78;88;0;98
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.7G2.8G6.5G 31% /
/dev/sda1 99M12M83M 12% /boot
tmpfs 252M 0 252M 0% /dev/shm
/dev/hdc 2.9G2.9G 0 100% /iso
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 2621440 105226 2516214 5% /
/dev/sda1 26104 34 26070 1% /boot
tmpfs 64413 1 64412 1% /dev/shm
=================================================================
監控服務器配置監控端的nrpe:
[root@tx nagios-bj]# tar zxfnrpe-2.12.tar.gz -C /usr/local/src/
[root@tx nagios-bj]# cd/usr/local/src/nrpe-2.12/
[root@tx nrpe-2.12]# yum install -y opensslopenssl-devel
[root@tx nrpe-2.12]# ./configure--prefix=/usr/local/nagios/
[root@tx nrpe-2.12]# make all
[root@tx nrpe-2.12]# make install-plugin
手動測試:
[root@tx nrpe-2.12]# cd/usr/local/nagios/libexec/
[root@tx libexec]# /usr/local/nagios/libexec/check_nrpe -H 192.168.8.6 -c check_sda1
DISK OK - free space: /boot 82 MB (88%inode=99%);| /boot=11MB;78;88;0;98
[root@tx objects]# pwd
/usr/local/nagios/etc/objects
# vim/usr/local/nagios/etc/objects/commands.cfg
# "check_nrpe" command define
define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe-H $HOSTADDRESS$ -c $ARG1$
}
# vim/usr/local/nagios/etc/objects/remotehot.cfg
# 192.168.8.6 linux_host
define host{
host_name apache
address 192.168.8.6
check_period 24x7
check_interval 5
retry_interval 1
max_check_attempts 10
notification_period 24x7
notification_options d,u,r
# d - down
# u - unreachable
# r - 從異常恢復正常
contact_groups admins
}
#vim /usr/local/nagios/etc/objects/services.cfg
# define 192.168.8.6 "/boot"
define service{
use local-service
host_name apache
service_description bootpartition
check_command check_nrpe!check_sda1
}
# define 192.168.8.6 "login users"
define service{
use local-service
host_name apache
service_description loginusers
check_command check_nrpe!check_users
}
# define 192.168.8.6 "/"
define service{
use local-service
host_name apache
service_description rootpartition
check_command check_nrpe!check_sda2
}
寫完之後注意這個文件的權限:
在主配置文件要聲明監控主機使用的文件:
檢查配置文件的正確性:***
[root@tx etc]# /usr/local/nagios/bin/nagios-v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
[root@tx etc]# /etc/init.d/nagios restart
監控被監控端的服務:
要求:被監控端的服務一定要開啓!~
http ssh mysql ftp
----------------------------------------------------------------------------------------------------------------------------
http://bbs.it-adv.net/viewthread.php?tid=1010&extra=page%3D1