天天看點

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

一個典型的架構如下圖所示:

nagios詳細配置

   上面架構隻能監控到伺服器的外部服務,如HTTP、SSH、FTP,要實作對本地資訊的監控可以通過在被監控伺服器上安裝NRPE服務,作為監控代理來實作對本地資訊的監控,架構如下:

nagios詳細配置

   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 目錄下是否存在如下子目錄

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

make && make install   

安裝後檢視/usr/local/nagios/libexec/目錄,會顯示安裝的所有插件

nagios詳細配置

chown –R nagios.nagios /usr/local/nagios

4.監控機、被監控機(Linux/Unix機)上安裝nrpe(如果隻需要監控服務可以不裝這個)

tar –zxvf nrpe-2.12.tar.gz

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:

nagios詳細配置
nagios詳細配置

在配置前先來說明下需要修改的各配置檔案的作用:

配置檔案都存放在安裝目錄下的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 //定義圖示在網頁中顯示的三維坐标

...

定義樣例:

              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_information 0

              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{          //定義監控根分區

        host_name                       web1

        service_description               根分區

        check_command                   check_local_disk!20%!10%!/

define 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{          //定義監控系統負荷

        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使用率

        service_description             交換空間使用率

        check_command                   check_local_swap!20!10

define service{          //定義監控SSH服務

        use                             local-service       

        service_description             SSH

        check_command                   check_tcp!22!1.0!10.0

        notifications_enabled           1

define service{          //定義監控HTTP服務

        service_description                HTTP

        check_command                   check_http

        notifications_enabled           1

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++

nagios詳細配置

  安裝到這一步時,文檔不用安裝,安了也看不懂都是鳥語,下面plguins選項中,nsca選擇"用時再安裝",這個在分步式監控時才用到,nrpe支援就是windows版本的nrpe監控代理,你可以選擇用它代理監控windows機,也可以用nsclient,兩個都安裝吧,到時兩個都能用,如果用nrpe的話同監控linux機一樣設定,這裡我們用nsclient監控windows機。

nagios詳細配置

在這裡要填寫監控機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  定義主機及監控内容

 use  windows-server 

 host_name  winserver

 alias  My Windows Server

 address  192.168.1.2

 }

下面根據需要選擇性加服務定義以使Nagios監控Windows機器上的不同屬性内容。如果是第一台Windows機器,可以隻是修改windows.cfg裡的服務對象定義。

加入下面的服務定義以監控運作于Windows機器上的NSClient++外部構件的版本。當到時間要更新Windows機器上的外部構件時這資訊會很用有,因為它可以告知這台Windows機器上的NSClient++需要更新到最新版本。

define service{

 use          generic-service

 host_name   winserver

 service_description NSClient++ Version

 check_command  check_nt!CLIENTVERSION

加入下面的服務定義以監控Windows機器的啟動後運作時間。

 service_description Uptime

 check_command  check_nt!UPTIME

加入下面的服務定義可監控Windows機器的CPU使用率,并在5分鐘CPU負荷高于90%時給出一個緊急警報或是高于80%時給出一個告警警報。

 use   generic-service

 service_description CPU Load

 check_command  check_nt!CPULOAD!-l 5,80,90

加入下面的服務定義可監控Windows機器的記憶體占用率,并在5分鐘記憶體占用率高于90%時給出一個緊急警報或是高于80%時給出一個告警警報。

 service_description Memory Usage

 check_command  check_nt!MEMUSE!-w 80 -c 90

加入下面的服務定義可監控Windows機器的C:盤的磁盤使用率,并在磁盤使用率高于90%時給出一個緊急警報或是高于80%時給出一個告警警報。

 service_description C:\ Drive Space

 check_command  check_nt!USEDDISKSPACE!-l c -w 80 -c 90

 }   //把紅色c換成d就是監控d盤

加入下面的服務定義可監控Windows機器上的W3SVC服務(IIS的3w網站服務)狀态,并在W3SVC服務停止時給出一個緊急警報。

 service_description W3SVC

 check_command  check_nt!SERVICESTATE!-d SHOWALL -l W3SVC

 }  // W3SVC替換成别的服務名就是監控那個服務

加入下面的服務定義可監控Windows機器上的Explorer.exe程序,并在程序沒有運作時給出一個緊急警報。

 service_description Explorer

 check_command  check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe

 }  // Explorer.exe換成那個程序就是監控那個程序

如果配置好了但監控機取不到值,可以用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 -l d -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  定義網絡裝置

       use         generic-switch           

       host_name   linksys-srw224p        

       alias            Linksys SRW224P Switch      

       address         192.168.1.253           

       hostgroups    allhosts,switches

//監控丢包率和RTA

增加如下的服務定義以監控自Nagios監控主機到交換機的丢包率和平均回包周期RTA,在一般情況下每5分鐘檢測一次。

       use                 generic-service   

       host_name           linksys-srw224p 

       service_description    PING          

       check_command        check_ping!200.0,20%!600.0,60%

       normal_check_interval      5    

       retry_check_interval 1    

解釋:這個服務的狀态将會處于:

緊急(CRITICAL)-條件是RTA大于600ms或丢包率大于等于60%;

告警(WARNING)-條件是RTA大于200ms或是丢包率大于等于20%;

正常(OK)-條件是RTA小于200ms或丢包率小于20%

//監控SNMP狀态資訊

如果交換機與路由器支援SNMP接口,可以用

check_snmp

插件來監控更豐富的資訊。

       host_name           linksys-srw224p

       service_description    Uptime 

       check_command        check_snmp!-C public -o sysUpTime.0

在上述服務定義中的

check_command

域裡,用"-C public"來指定SNMP共同體名稱為"public",用"-o sysUpTime.0"指明要檢測的OID(譯者注-MIB節點值)。

如果要確定交換機上某個指定端口或接口的狀态處于運作狀态,可以在對象定義裡加入一段定義:

       use                generic-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"選項是讓

插件檢查傳回一個正常(OK)狀态,如果是在SNMP查詢結果中存在"1"(1說明交換機端口處于運作狀态)如果沒找到1就是緊急(CRITICAL)狀态。"-m RFC1213-MIB"是可選的,它告訴

插件隻加載"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

插件可以實作。需要讓

插件知道如何來儲存MRTG資料并存入檔案,以及門限等。在例子中,監控了一個Linksys交換機。MRTG日志儲存于

/var/lib/mrtg/192.168.1.253_1.log

檔案中。這就是我用于監控的服務定義,它可以用于監控帶寬資料到日志檔案之中...

       use                      generic-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分鐘更新一次)。

6.報警設定

nagios 常見的報警方式有郵件報警、短信報警、飛信報警、QQ 報警、MSN 報警等。

1) 郵件報警

郵件報警是一種廣為使用的報警方式,具有成本低廉,性能穩定等優勢,預設采用系統自帶的mail程式來發送郵件。

# echo test |mail –s "nagios報警"  [email protected]  //發送測試郵件

如果能正常收到測試郵件,就進行下一步郵件報警配置

需要修改兩個地方,一個是contacts.cfg檔案,一個是主機定義中的contacts選項

在contacts.cfg添加聯系人對象,例如:

define contact{

        contact_name            nagiosadmin            

        use                             generic-contact         

        alias                           Nagios Admin                    

        email                           [email protected]    ;     [email protected]    }  //多個聯系人用分号隔開

最後在需要郵件報警的主機定義檔案中加上contacets nagiosadmin

配置檔案修改完成後重新開機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/lib,cp 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 增加兩個報警指令

[root@nagios objects]# vi commands.cfg   //增加以下内容

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$"    //飛信内容可自行定義,但一些變量必不可少

command_name notify-host-by-fetion

--msg-utf8="$NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ "

建議:指令定義請盡量言簡意赅,盡量縮短報警内容字元,内容太多發送時可能會被移動截斷成2條進行發送,影響收看效果

指令定義設定需要了解nagios一些宏的使用,這個請自行查手冊,其實參照郵件報警指令修改就行了

然後修改contacts.cfg,增加飛信報警方式

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$對應

最後在需要飛信報警的服務或主機定義檔案中加上contacets sa

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

繼續閱讀