1. 程式人生 > 實用技巧 >nagios詳細配置

nagios詳細配置

本文是參考眾多nagios高手文件+nagios中文手冊+個人理解加工整理的,個人水平有限難免有不對的地方,請大家能夠諒解,也請大家及時批評指出,在此先謝謝大家了!
本文狀態:不斷修改新增中,大家有不理解的地方或者有關於nagios的各方面需求請留言,我會盡自己能力幫助大家,希望我們在開源的世界裡互相學習,共同提高。
一.簡介 nagiso是一個非常靈活的監控系統,可以監控常見的各種服務以及伺服器的執行狀態,並在監測到伺服器發生故障的情況下,使用各種不同的方式通知維護人員發生了何種故障。目前nagios支援如下幾種報警方式:郵件、MSN、QQ、簡訊、飛信。 nagios只提供了一個監控平臺,實際上nagios本身並不提供任何工具來對伺服器進行報警,也不提供傳送報警資訊的程式碼,所有這些功能都是由外掛來實現的。nagios可以很好地整合所有的外掛一起高效的工作。通過分工合作來實現一個完善的監控機制。 Nagios特徵包括:
1.監控網路服務(SMTP、POP3、HTTP、SSH、mysql、NNTP、PING等);
2.監控主機資源(處理器負荷、磁碟利用率等);
3.簡單地外掛設計使得使用者可以方便地擴充套件自己服務的檢測方法;
4.並行服務檢查機制;
5.具備定義網路分層結構的能力,用"parent"主機定義來表達網路主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;
6.當服務或主機問題產生與解決時將告警傳送給聯絡人(通過EMail、簡訊、使用者定義方式);
7.具備定義事件控制代碼功能,它可以在主機或服務的事件發生時獲取更多問題定位;
8.自動的日誌回滾;
9.可以支援並實現對主機的冗餘監控;
10.可選的WEB介面用於檢視當前的網路狀態、通知和故障歷史、日誌檔案等;
常用的nagios系統一般組成:nagios、nagios-plugs、nrpe、nsclient 一個典型的架構如下圖所示: 上面架構只能監控到伺服器的外部服務,如HTTP、SSH、FTP,要實現對本地資訊的監控可以通過在被監控伺服器上安裝NRPE服務,作為監控代理來實現對本地資訊的監控,架構如下:

NRPE 由兩個部分組成:工作在監控機一側的check_nrpe 外掛、工作在被監控機一側的NRPE 守護程序。 Nagios 伺服器執行check_nrpe 外掛並告訴他檢查哪個服務,check_nrpe 外掛通過SSL 連線方式聯絡遠端伺服器上的NRPE 守護程序,NRPE 守護程序執行相應的外掛完成指定的檢查,並返回結果。
nagios相關軟體下載地址http://sourceforge.net/projects/nagios/files/
nagios漢化版下載http://sourceforge.net/projects/nagios-cn/files/,感謝漢化者田朝陽 NSClient++下載http://sourceforge.net/projects/nscplus/files/nscplus/ 安裝步驟: 1.安裝執行環境
yum install httpd php php-devel gd gd-devel
2.安裝nagios並配置web訪問 useradd nagios usermod –G nagios apache //把apache 使用者加入nagios 組,如果省略這一步會在後續的操作中產生一些問題 ./configure --prefix=/usr/local/nagios //下面根據提示操作 make all make install //安裝nagios 主程式、CGI 和HTML 檔案 make install-init //安裝nagios 的啟動指令碼 make install-commandmode//安裝外部命令使用的目錄,並配置目錄許可權 make install-config //安裝樣板配置檔案,位於/usr/local/nagios/etc 目錄下 make install-webconf//安裝apache 配置檔案,以便能夠通過web 頁面訪問nagios htpasswd -c/usr/local/nagios/etc/htpasswd.users nagiosadmin//建立web驗證登入使用者 service httpd restart 測試:用http://監控機IP/nagios看能否用nagiosadmin登入 nagios 安裝完畢檢查/usr/local/nagios 目錄下是否存在如下子目錄 chkconfig --add nagios //將nagios加為系統服務 chkconfig nagios on //設定開機自啟動 /usr/local/nagios/bin/nagios ‐v /usr/local/nagios/etc/nagios.cfg//驗證Nagios的配置檔案 如果沒有報錯,可以啟動Nagios服務 service nagios start 3.安裝外掛nagios-plugin(用來實現各種監控取值的程式) tar -zxvf nagios-plugins-1.4.15.tar.gz ./configure --prefix=/usr/local/nagios make && make install 安裝後檢視/usr/local/nagios/libexec/目錄,會顯示安裝的所有外掛

chown –R nagios.nagios /usr/local/nagios
4.監控機、被監控機(Linux/Unix機)上安裝nrpe(如果只需要監控服務可以不裝這個)
tar –zxvf nrpe-2.12.tar.gz
./configure --prefix=/usr/local/nagios make all make install-plugin (在被監控機安裝時先useradd nagios否則會出錯) make install-daemon make install-daemon-config make install-xinetd //安裝為xinetd服務 vim /etc/xinetd.d/nrpe only_from = 127.0.0.1 10.1.10.23(監控機的ip地址) vi/etc/services 增加如下一行 nrpe 5666/tcp # NRPE chkconfig nrpe on service xinetd restart NRPE 測試 在被監控機上確認服務是否啟動 netstat -at|grep nrpe tcp 0 0 *:nrpe *:* LISTEN 在監控機上測試被監控機的NRPE 工作是否正常 /usr/local/nagios/libexec/check_nrpe -H 被監控機IP NRPE v2.12 //顯示NRPE 版本資訊,說明NRPE 工作正常
安裝完畢接下來開始配置操作 對nagios 進行配置需要了解一個概念object(物件),nagios 使用object 來對各種資訊進行組織,nagios 中的包含如下obeject: 在配置前先來說明下需要修改的各配置檔案的作用: 配置檔案都存放在安裝目錄下的etc/下面 cgi.cfg用於定義瀏覽器對nagios操作,比如許可權控制等 nagios.cfg用於定義控制nagios行為 nrpe.cfg nrpe配置檔案 resource.cfg 資源配置檔案,用於定義外掛路徑,一般不需修改 objects目錄 監控物件配置檔案存放於下面,配置檔案可以自己新增,檔名可以自行定義,只要以.cfg結尾就行,但是必須在nagios.cfg加一行程式碼使nagios讀取這個檔案,例如你可以新建個linux.cfg來新增linux監控裝置,nagios.cfg應該新增一行“cfg_file=/usr/local/nagios/etc/objects/linux.cfg”,一般同一類裝置寫到一個檔案裡,當然也可以對預設的檔案進行修改來新增監控裝置,此目錄下預設有下面幾個檔案 commands.cfg 命令定義配置檔案 contacts.cfg 定義聯絡人列表 timeperiods.cfg 定義時間監控模板
templates.cfg 定義各種模板,可以是主機模板、聯絡人模板、監控服務模板等 localhost.cfg 用於定義linux監控裝置 windows.cfg 用於定義windows監控裝置 switch.cfg用於定義交換機,路由器等監控裝置 printer.cfg 用於定義印表機監控裝置 5.新增監控裝置 (1)監控linux伺服器 vi /usr/local/nagios/etc/objects/localhost.cfg 根據需要定義監控主機及監控內容 下面是個比較全的主機模板,可以在/usr/local/nagios/etc/objects/templates.cfg中找到適合的模板

define host{
use model_host //定義用的模板機
host_name host_name(*) //定義主機名,可起任意名字
alias alias(*) //定義主機別名
display_name display_name // 定義顯示名字
address address(*) //主機名對應的ip 地址
parents host_names //定義父節點
hostgroups hostgroup_names //定義主機組名
check_command command_name //檢查主機狀態的命令
initial_state [o,d,u] //初始化狀態
max_check_attempts #(*) //當檢查命令返回值不是“OK”時最大重試次數
check_interval # //#分鐘進行一次檢查
retry_interval # //重試間隔時間
active_checks_enabled [0/1] //主動監控開關(1開0閉)
passive_checks_enabled [0/1] //被動監控開關
check_period timeperiod_name(*) //主機狀態檢查的時間段
obsess_over_host [0/1] //是否啟用主機作業系統探測
check_freshness [0/1] //是否啟用 freshness 檢查。freshness 檢查是對於啟用被動檢查模式的主機而言的,其作用是定期檢查主機報告的狀態資訊,如果該狀態資訊已經過期,freshness 將會強制做主機檢查。freshness_threshold #
event_handler command_name
event_handler_enabled [0/1] //主機事件處理是否啟用
low_flap_threshold #
high_flap_threshold #
flap_detection_enabled [0/1]
flap_detection_options [o,d,u]
process_perf_data [0/1]
retain_status_information [0/1]
retain_nonstatus_information [0/1]
contacts contacts(*) //傳送報警通知給誰
contact_groups contact_groups(*) //傳送通知給哪個報警組
notification_interval #(*) //主機狀態通知功能啟用
first_notification_delay #
notification_period timeperiod_name(*) //傳送通知的時間段
notification_options [d,u,r,f,s] //定義那些情況下發送通知
notifications_enabled [0/1] //傳送通告開關
stalking_options [o,d,u]
notes note_string
notes_url url
action_url url
icon_p_w_picpath p_w_picpath_file //定義主機圖示
icon_p_w_picpath_alt alt_string
vrml_p_w_picpath p_w_picpath_file
statusmap_p_w_picpath p_w_picpath_file
2d_coords x_coord,y_coord //定義圖示在網頁中顯示的二維座標
3d_coords x_coord,y_coord,z_coord //定義圖示在網頁中顯示的三維座標
...
}
定義樣例: define host{ host_name web1 alias web1 address 192.168.1.254 parents router1 check_command check-host-alive check_interval 5 retry_interval 1 max_check_attempts 5 check_period 24x7 process_perf_data 0 retain_nonstatus_information0 contact_groups router-admins notification_interval 30 notification_period 24x7 notification_options d,u,r } 根據需要還可定義主機組 樣例: define hostgroup{ //定義主機組 hostgroup_name tianway.net ; //定義主機組的名字 alias Linux Server ;//別名 members 192.168.0.2,192.168.0.3,192.168.0.4 ;//組成員,使用逗號分隔 } 接下來根據需要定義要監控的服務和服務組,哪臺裝置要監控什麼服務就在那個服務定義裡的host_name中新增在主機定義中的主機名就行,多臺裝置之間用逗號隔開,下面是一些常用服務和系統狀態定義 define service{ //定義監控ping use local-service host_name * service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ //定義監控根分割槽 use local-service host_name web1 service_description 根分割槽 check_command check_local_disk!20%!10%!/ } define service{ //定義監控登入使用者數 use local-service host_name web1 service_description 登入使用者數 check_command check_local_users!20!50 } define service{ //定義監控程序數 use local-service ; host_name web1 service_description 程序總數 check_command check_local_procs!250!400!RSZDT } define service{ //定義監控系統負荷 use local-service host_name web1 service_description 系統負荷 check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 } define service{ //定義監控swap利用率 use local-service host_name web1 service_description 交換空間利用率 check_command check_local_swap!20!10 } define service{ //定義監控SSH服務 use local-service host_name web1 service_description SSH check_command check_tcp!22!1.0!10.0 notifications_enabled 1 } define service{ //定義監控HTTP服務 use local-service host_name web1 service_description HTTP check_command check_http notifications_enabled1 } define servicegroup{ servicegroup_name 系統負荷檢查 alias 負荷檢查 members web1,程序總數,web1,登入使用者數,web1,根分割槽,web1,交換空間利用率,web1,PING } //服務組定義members格式:主機名1,服務名,主機名2,服務名…… 配置好後/usr/local/nagios/bin/nagios ‐v /usr/local/nagios/etc/nagios.cfg檢查有無錯誤並重啟nagios服務 (2)監控windows監控裝置 首先在Windows機器上安裝代理NSClient++構件,注意被監控機作業系統是32位還是64位,要安裝對應版本的NSClient++ 安裝到這一步時,文件不用安裝,安了也看不懂都是鳥語,下面plguins選項中,nsca選擇"用時再安裝",這個在分步式監控時才用到,nrpe支援就是windows版本的nrpe監控代理,你可以選擇用它代理監控windows機,也可以用nsclient,兩個都安裝吧,到時兩個都能用,如果用nrpe的話同監控linux機一樣設定,這裡我們用nsclient監控windows機。


在這裡要填寫監控機IP,設定監控機連線時要用的密碼,不設密碼為空,為了更安全可以設上,但我覺得沒必要設,因為你只允許監控機連線你的nsclietn++了,別的機器是拒絕連線的,除非別人知道你的監控機IP,然後偽造個相同ip來偷偷監控你的windows機器,這概率應該很小吧,設上後監控端要做相應的設定才能正常連線windows被監控機,比較麻煩。個人愚見至於加不加密碼自己決定。下面的模組載入與否也是自己決定。
如果加上密碼在監控機中要修改nagios安裝目錄下的etc/objects/commands.cfg修改chect_nt命令定義部分,加個-s 後跟連線密碼,注意在這裡修改的前提是每個nsclient設定的密碼都是相同的,如果設定的不同則不能改這裡,則需要改etc/objects/windows.cfg中的服務定義部分。
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 7758521 -v $ARG1$ $ARG2$
}

下面配置監控機上監控windows機的設定
vi /usr/local/nagios/etc/nagios.cfg 把下面這行最前面的#號去掉,只用第一次加windows監控機時修改
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg
vi /usr/local/nagios/etc/objects/windows.cfg 定義主機及監控內容
define host{
usewindows-server
host_namewinserver
aliasMy Windows Server
address192.168.1.2
}
下面根據需要選擇性加服務定義以使Nagios監控Windows機器上的不同屬性內容。如果是第一臺Windows機器,可以只是修改windows.cfg裡的服務物件定義。

加入下面的服務定義以監控運行於Windows機器上的NSClient++外部構件的版本。當到時間要升級Windows機器上的外部構件時這資訊會很用有,因為它可以告知這臺Windows機器上的NSClient++需要升級到最新版本。
define service{
use generic-service
host_namewinserver
service_descriptionNSClient++ Version
check_commandcheck_nt!CLIENTVERSION
}
加入下面的服務定義以監控Windows機器的啟動後執行時間。
define service{
use generic-service
host_namewinserver
service_descriptionUptime
check_commandcheck_nt!UPTIME
}
加入下面的服務定義可監控Windows機器的CPU利用率,並在5分鐘CPU負荷高於90%時給出一個緊急警報或是高於80%時給出一個告警警報。
define service{
usegeneric-service
host_namewinserver
service_descriptionCPU Load
check_commandcheck_nt!CPULOAD!-l 5,80,90
}
加入下面的服務定義可監控Windows機器的記憶體佔用率,並在5分鐘記憶體佔用率高於90%時給出一個緊急警報或是高於80%時給出一個告警警報。
define service{
usegeneric-service
host_namewinserver
service_descriptionMemory Usage
check_commandcheck_nt!MEMUSE!-w 80 -c 90
}
加入下面的服務定義可監控Windows機器的C:盤的磁碟利用率,並在磁碟利用率高於90%時給出一個緊急警報或是高於80%時給出一個告警警報。
define service{
use generic-service
host_namewinserver
service_descriptionC:\ Drive Space
check_commandcheck_nt!USEDDISKSPACE!-l c -w 80 -c 90
} //把紅色c換成d就是監控d盤
加入下面的服務定義可監控Windows機器上的W3SVC服務(IIS的3w網站服務)狀態,並在W3SVC服務停止時給出一個緊急警報。
define service{
use generic-service
host_namewinserver
service_descriptionW3SVC
check_commandcheck_nt!SERVICESTATE!-d SHOWALL -l W3SVC
} // W3SVC替換成別的服務名就是監控那個服務
加入下面的服務定義可監控Windows機器上的Explorer.exe程序,並在程序沒有執行時給出一個緊急警報。
define service{
usegeneric-service
host_namewinserver
service_descriptionExplorer
check_commandcheck_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
} // Explorer.exe換成那個程序就是監控那個程序
配置好後/usr/local/nagios/bin/nagios ‐v /usr/local/nagios/etc/nagios.cfg檢查有無錯誤並重啟nagios服務
如果配置好了但監控機取不到值,可以用libexec/check_nt手動除錯一下,看能否取到值
check_nt用法如下:
check_nt -H host -v variable [-p port] [-w warning] [-c critical] [-l params] [-d SHOWALL] [-u] [-t timeout]
選項:
-H 後跟被監控機主機名或IP
-p 後跟被監控nsclient埠號,預設是12489(必需有這個選項否則顯示連線拒絕)
-s 後跟連線密碼
-w 後跟wanring報警值
-c 後跟critical報警值
-t 後跟連線嘗試次數
-h 顯示幫助
-V 顯示check_nt版本
-v 後跟要檢視的效能值
可用的效能值有:
CLIENTVERSION 顯示nsclient++版本
CPULOAD -l <minutes range>,<warning threshold>,<critical threshold>.
注意:<minute range> 不要大於 24*60.
例: -l 60,90,95,120,90,95 顯示最後60分鐘和120分鐘waring為90%,critical為95%的平均cpuload
UPTIME 顯示開機執行時間
USEDDISKSPACE 顯示磁碟空間資訊
例:-l c 顯示當前c盤空間使用資訊
-l d -w 90 -c 95 顯示d盤設waring為90%,critical為95%時的空間使用資訊
MEMUSE 顯示記憶體使用情況,後可跟-w -c指定報警值,預設為5分鐘內平均值
SERVICESTATE 檢查一個或多個服務狀態
-l <service1>,<service2>,<service3>,...
用 -d SHOWALL 可以檢視正在執行有服務
PROCSTATE 檢查程序狀態
-l <程序名字>
COUNTER 檢查一些效能計數
用法:
-l "
\\<performance object>\\counter","<description>
<description> 引數用於列印輸出一個需要浮點引數的命令,如果 <description>不包含 "%%",它會做為一個標籤
例: "Paging file usage is %%.2f %%%%"
"%%.f %%%% paging file used."
INSTANCES 檢查效能物件計數
用法: check_nt -H <hostname> -p <port> -v INSTANCES -l <counter object>
<counter object>是一個windows效能物件計數 (eg. Process),
  如果它是兩個詞,它應該引號括起來,返回的結果將是一個逗號分隔的物件
check_nt用法舉例:

check_nt -H 192.168.1.2 -p 12489 -v CPULOAD -l 60,90,95 //顯示最後60分鐘waring為90%,critical為95%時的平均cpuload
check_nt -H 192.168.1.2 -p 12489 -v UPTIME //顯示192.168.1.2從開機到現在執行時間
check_nt -H 192.168.1.2 -p 12489 -v USEDDISKSPACE -l c //顯示192.168.1.2 C盤使用情況

check_nt -H 192.168.1.2 -p 12489 -v USEDDISKSPACE -ld -w 60 -c 95//顯示192.168.1.2 D盤設waring為90%,critical為95%時的空間使用資訊
check_nt -H 192.168.1.2 -p 12489 -v MEMUSE //顯示192.168.1.2記憶體使用情況
check_nt -H 192.168.1.2 -p 12489 -v SERVICESSTATE -d SHOWALL //顯示192.168.1.2所有正在執行的服務

check_nt -H 192.168.1.2 -p 12489 -v SERVICESSTATE -d SHOWALL-l W3SVC//顯示192.168.1.2上IIS網站服務執行情況
check_nt -H 192.168.1.2 -p 12489 –s 7758521 –v CLIENTVERSION //檢視192.168.1.2上nsclient++版本
check_nt -H 192.168.1.2 -p 12489 –s 7758521 -v INSTANCES -l Process //列舉192.168.1.2上執行的程序
(3)監控路由器、交換機
vi /usr/local/nagios/etc/nagios.cfg 移除檔案裡下面這行的最前面的#號
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg
vi /usr/local/nagios/etc/objects/switch.cfg 定義網路裝置
define host{

use generic-switch host_name linksys-srw224p aliasLinksys SRW224P Switch address 192.168.1.253 hostgroups allhosts,switches } //監控丟包率和RTA 增加如下的服務定義以監控自Nagios監控主機到交換機的丟包率和平均回包週期RTA,在一般情況下每5分鐘檢測一次。 define service{ usegeneric-service host_namelinksys-srw224p service_description PING check_command check_ping!200.0,20%!600.0,60% normal_check_interval 5 retry_check_interval1 } 解釋:這個服務的狀態將會處於: 緊急(CRITICAL)-條件是RTA大於600ms或丟包率大於等於60%; 告警(WARNING)-條件是RTA大於200ms或是丟包率大於等於20%; 正常(OK)-條件是RTA小於200ms或丟包率小於20% //監控SNMP狀態資訊 如果交換機與路由器支援SNMP介面,可以用check_snmp外掛來監控更豐富的資訊。 define service{ usegeneric-service host_namelinksys-srw224p service_description Uptime check_command check_snmp!-C public -o sysUpTime.0 } 在上述服務定義中的check_command域裡,用"-C public"來指定SNMP共同體名稱為"public",用"-o sysUpTime.0"指明要檢測的OID(譯者注-MIB節點值)。 如果要確保交換機上某個指定埠或介面的狀態處於執行狀態,可以在物件定義里加入一段定義: define service{ usegeneric-service host_name linksys-srw224p service_description Port 1 Link Status check_command check_snmp!-C public -o ifOperStatus.1 -r 1 -m RFC1213-MIB } 在上例中,"-o ifOperStatus.1"指出取出交換機的埠編號為1的OID狀態。"-r 1"選項是讓check_snmp外掛檢查返回一個正常(OK)狀態,如果是在SNMP查詢結果中存在"1"(1說明交換機埠處於執行狀態)如果沒找到1就是緊急(CRITICAL)狀態。"-m RFC1213-MIB"是可選的,它告訴check_snmp外掛只加載"RFC1213-MIB"庫而不是載入每個在系統裡的MIB庫,這可以加快外掛執行速度。 有成百上千種資訊可以通過SNMP來監控,這完全取決於你需要做什麼和如果來做監控。通常可以用如下命令來尋找你想用於監控的OID節點(用你的交換機IP替換192.168.1.253):snmpwalk -v1 -c public 192.168.1.253 -m ALL .1 //監控頻寬和流量 可以監控交換機或路由器的頻寬利用率,用MRTG繪圖並讓Nagios在流量超出指定門限時報警。check_mrtgtraf外掛可以實現。需要讓check_mrtgtraf外掛知道如何來儲存MRTG資料並存入檔案,以及門限等。在例子中,監控了一個Linksys交換機。MRTG日誌保存於/var/lib/mrtg/192.168.1.253_1.log檔案中。這就是我用於監控的服務定義,它可以用於監控頻寬資料到日誌檔案之中... define service{ usegeneric-service host_name linksys-srw224p service_description Port 1 Bandwidth Usage check_command check_local_mrtgtraf!/var/lib/mrtg/192.168.1.253_1.log!AVG!1000000,2000000!5000000,5000000!10 } 在上例中,"/var/lib/mrtg/192.168.1.253_1.log"引數傳給check_local_mrtgtraf命令意思是外掛的MRTG日誌檔案在這個檔案裡讀寫,"AVG"引數的意思是取頻寬的統計平均值,"1000000,200000"引數是指流入的告警門限(以位元組為單位),"5000000,5000000"是輸出流量緊急狀態門限(以位元組為單位),"10"是指如果MRTG日誌如果超過10分鐘沒有資料返回一個緊急狀態(應該每5分鐘更新一次)。 配置好後/usr/local/nagios/bin/nagios ‐v /usr/local/nagios/etc/nagios.cfg檢查有無錯誤並重啟nagios服務 6.報警設定 nagios 常見的報警方式有郵件報警、簡訊報警、飛信報警、QQ 報警、MSN 報警等。
1) 郵件報警 郵件報警是一種廣為使用的報警方式,具有成本低廉,效能穩定等優勢,預設採用系統自帶的mail程式來發送郵件。 # echo test |mail –s "nagios報警" [email protected]//傳送測試郵件 如果能正常收到測試郵件,就進行下一步郵件報警配置 需要修改兩個地方,一個是contacts.cfg檔案,一個是主機定義中的contacts選項
在contacts.cfg新增聯絡人物件,例如:
define contact{
contact_namenagiosadmin
use generic-contact
alias Nagios Admin
email llq@163.com ;[email protected] } //多個聯絡人用分號隔開
最後在需要郵件報警的主機定義檔案中加上contacetsnagiosadmin 配置檔案修改完成後重啟nagios 服務,如果設定正常,發生故障時nagios 就會發送郵件給指定的E-mail 信箱。
2) 飛信報警 發生故障時nagios 傳送郵件到指定的信箱是一個可行的通知辦法,但是對於關鍵的業務服務而言,這樣的報警方式顯然不能滿足需要。對於關鍵業務的執行情況,我們需要在發生故障後的第一時間獲取到相關資訊,甚至希望能夠在故障發生前就進行處理。例如對磁碟空間的監控可以在磁碟被佔滿之前發出預警,是我們有足夠的時間進行處理。綜合各種情況,最合適的關鍵業務報警方式無非是簡訊、電話兩種方式。簡訊及時性好、花費低廉對終端要求低等各種優勢,往往成為最佳的選擇。對於大企業使用者而言,可以使用簡訊閘道器來發送簡訊,對於小型企業可以購買簡訊貓來實現相同的功能,對於不原意花錢又想用簡訊報警的使用者,飛信就成為最好的選擇。 用飛信報警可以通過裝飛信機器人實現。實現方法如下: http://bbs.it-adv.net/viewthread.php?tid=1081&extra=page%3D1&page=1下載飛信程式和需要的庫檔案linux飛信程式是通用的,但32位和64位系統用的庫檔案不同,下載時請注意根據自已監控機系統版本下載相應庫檔案 對於linux 32位系統設定:
cp庫檔案到/usr/libcp fetion程式到/usr/local/bin 下面 對於linux 64位系統設定: cp 庫檔案和fetion程式到/usr/local/fetion 下面,64位的庫檔案最好不要往/usr/lib/usr/lib64下面cp,防止覆蓋系統lib庫,最好單獨放到一目錄下 echo ‘/usr/local/fetion’>>/etc/ld.so.conf ldconfig 重新載入下lib 以下以32位系統為例子測試配置測試前請保證監控機能夠訪問外網8080埠,飛信機器人用這個埠與移動伺服器通訊 自己給自己發個飛信測試一下: fetion --mobile=15012345678 --pwd=xxxxx --to=15012345678 --msg-utf8="測試飛信" //pwd指飛信登入密碼 現在飛信第一次發信時要有圖形碼驗證(在和fetion程式同目錄下生成),檔名字是150112345678.jpg,你可以把圖形弄到桌面環境讀取或者弄到windows機讀取後再輸入 輸入正確後會提示飛信傳送成功! 測試成功後請不要將fetion程式同目錄下的150112345678.cache檔案刪除,否則用的時候需要再次輸入驗證碼,不小心刪除了會影響nagios自動呼叫使用哦!!!

用飛信客戶端登入飛信,將移動手機報警人全部加到報警傳送者好友中,這是必須的,否則無法向非好友傳送飛信,現在飛信也可以向非移動手機發飛信了,但是收費的,使用時請注意!向聯通,電信手機發簡訊買第三方簡訊通道會更划算一些,發一條簡訊是6分錢左右,但是第三方簡訊通道可能有時不太靠譜,存在簡訊延遲!相對沒有飛信靠譜,這是經過實踐檢驗的哦!

修改commands.cfg 檔案,為nagios 增加兩個報警命令 [[email protected] objects]# vi commands.cfg //增加以下內容 define command{ command_name notify-service-by-fetion command_line /usr/bin/fetion --mobile=15012345678 --pwd=xxxxx --to=$CONTACTPAGER$ --msg-utf8="$HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$ on $TIME$ result is $SERVICEOUTPUT$" //飛信內容可自行定義,但一些變數必不可少 } define command{ command_name notify-host-by-fetion command_line /usr/bin/fetion --mobile=15012345678 --pwd=xxxxx --to=$CONTACTPAGER$ --msg-utf8="$NOTIFICATIONTYPE$Host Alert: $HOSTNAME$ is $HOSTSTATE$ " } 建議:命令定義請儘量言簡意賅,儘量縮短報警內容字元,內容太多傳送時可能會被移動截斷成2條進行傳送,影響收看效果 命令定義設定需要了解nagios一些巨集的使用,這個請自行查手冊,其實參照郵件報警命令修改就行了 然後修改contacts.cfg,增加飛信報警方式 define contact{ contact_name sa alias system admin host_notification_period 24x7 service_notification_period 24x7 host_notification_options d,r, service_notification_options c,w,r service_notification_commands notify-service-by-fetion //這裡報警命令名字與上面對應 host_notification_commands notify-host-by-fetion pager 15012345678 //配置飛信報警接收人,注意這裡page關鍵字和命令定義中的$CONTACTPAGER$對應 }
最後在需要飛信報警的服務或主機定義檔案中加上contacetssa

配置檔案修改完成後重啟nagios 服務,使配置檔案生效就可以使用飛信報警了

後緒:為保證飛信通道可靠性,我在監控機上寫個crontabl任務,每天0點向我傳送一個飛信是否正常的資訊
0 0 * * * /usr/local/fetion/fetion --mobile=15012345678 --pwd=xxxxx --to=15012345678 --msg-utf8="飛信通道正常!"

轉載於:https://blog.51cto.com/lilinqing/483604