本文是參考衆多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
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
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 //定義圖示在網頁中顯示的三維坐标
...
}
定義樣例:
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++
安裝到這一步時,文檔不用安裝,安了也看不懂都是鳥語,下面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 定義主機及監控内容
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 服務,使配置檔案生效就可以使用飛信報警了