Nagios的安裝
本論文以如下三臺主機爲例進行事例搭建監控,三臺主機詳細信息如下
表 5-1 三臺事例主機詳細信息
主機名 | 操作系統 | IP | 作用 |
nagios-server | redhat 9 | 192.168.77.128 | 監控機 |
linux-client | redhat 9 | 192.168.77.130 | 被監控機 |
window-client | xp | 192.168.77.1 | 被監控機 |
注:
監控機:安裝了nagios軟件的機器,對監控的數據做處理,並且提供web界面查看和管理.當然也可以對本機自身的信息進行監控.
被監控機:安裝了NRPE等客戶端,根據監控機的請求執行監控,然後將結果回傳給監控機.
準備工作
本監控平臺不需要特別的運行環境支持,只要求操作系統是主流Linux即可,本監控平臺能很好的支持各類Linux的分支系統如RedHat、Fedora、opeensuse、Ubuntu等。在監控環境下,由於主監控機承擔着揭示整個監控系統運行情況的工作,所以需要安裝有ApaChe(或者其他http服務,大多數發行版Linux都已自帶)用來提供一個直觀的界面來查看所有的彙總監控信息。
1.前提條件
基於nagios是在linux主機上的一種開源軟件,所以需要在linux系統的主機上才能搭建。
2.需要的軟件
nagios-2.9.tar.gz(nagios主程序)
nagios-plugins-1.4.9.tar.gz(監控linux主機需要)
nrpe-2.8.1.tar.gz(監控linux主機需要))
3.配置防火牆selinux
如果系統開啓了selinux服務,則默認爲拒絕nagios web cgi程序的運行。從而無法執行監控頁面,通過下面的命令來確認系統關閉了selinux:
#setenforce 0
想在以後完全關閉selinux,可以通過編輯/etc/sysconfig/selinux文件,將其中的selinux後面的值“force”修改爲“disable”即可。
5.1.2安裝依賴包,啓動相關服務
1、 解決安裝Nagios的依賴關係:
Nagios基本組件的運行依賴於httpd、gcc和gd。可以通過以下命令來檢查nagios所依賴的rpm包是否已經完全安裝:
# yum -y install httpd gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-server
此外,要想完整的安裝關運行本文中所描述的環境,您得準備一個功能完備的LAMP運行環境。(linux+apache+mysql+php)
2.啓動相關服務
因爲nagios監控系統是基於web頁面形式的,所以需要開始httpd服務,又因爲之後要用到郵件報警所以,也需要郵件服務sendmail開始
5.1.3 Nagios監控系統的編譯安裝
一、添加nagios運行所需要的用戶和組:
# groupadd nagcmd
# useradd -m nagios
# usermod -a -G nagcmd nagios
把apache加入到nagcmd組,以便於在通過web Interface操作nagios時能夠具有足夠的權限:
# usermod -a -G nagcmd apache
二、編譯安裝nagios:
# tar zxf nagios-3.1.2.tar.gz
# cd nagios-3.1.2
# ./configure --with-command-group=nagcmd --enable-event-broker
# make all&& make install&& make install-init&& make install-config&& make install-commandmode
說明:第一步執行make install安裝主要的程序、CGI及HTML文件,第二步執行make install-init的步驟,它的作用是把nagios做成一個運行腳本,使nagios隨系統開機啓動,這是一個很方便的措施。第三步執行 make install-config 把配置文件的例子複製到nagios的安裝目錄。執行 make install-commandmode 給外部命令訪問nagios配置文件的權限。
爲email指定您想用來接收nagios警告信息的郵件地址,默認是本機的nagios用戶:
# vi /usr/local/nagios/etc/objects/contacts.cfg
email nagios@localhost #這個是默認設置
在httpd的配置文件目錄(conf.d)中創建Nagios的Web程序配置文件:
# make install-webconf
創建一個登錄nagios web程序的用戶,這個用戶帳號在以後通過web登錄nagios認證時所用:
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
以上過程配置結束以後需要重新啓動httpd:
# service httpd restart
三、編譯、安裝nagios-plugins
nagios的所有監控工作都是通過插件完成的,因此,在啓動nagios之前還需要爲其安裝官方提供的插件。
# tar zxf nagios-plugins-1.4.13.tar.gz
# cd nagios-plugins-1.4.13
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make&& make install
四、配置並啓動Nagios
(1)把nagios添加爲系統服務並將之加入到自動啓動服務隊列:
# chkconfig --add nagios
# chkconfig nagios on
(2)檢查其主配置文件的語法是否正確:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
(3)如果上面的語法檢查沒有問題,接下來就可以正式啓動nagios服務了:
# service nagios start
(4)通過web界面查看nagios:
5.1.4 Nagios的初始化前配置
1)預備知識
Nagios自己定義了一套規則用於配置文件,其中最重要的概念就是”對象”----object.通俗的理解:假定我們首先定義了”性別”這個對象,它的值只可能是男,女 ,然後定義某人爲一個對象,例如張三,定義張三的時候有”性別”這個屬性,它的值就必須來源了之前定義的性別這個對象,要麼是男是女,在Nagios裏面定義了一些基本的對象,一般用到的有:
另外,多個被監控主機可以定義爲一個主機組,多個聯繫人可以被定義爲一個聯繫人組,多個服務還能定義成一個服務組呢.回到上面的例子,定義張三需要之前定義的性別,我們定義一個被監控的服務,當然就要指定被監控的主機,需要監控的時間段,要用哪個命令來完成這個監控操作,出了問題向哪個聯繫人報告.
2)修改配置文件-開啓相應的配置
vi /usr/local/nagios/etc/nagios.cfg
/usr/loca check_external_commands=1//允許在web界面下執行重啓nagios停止主機/服務檢查等操作
command_check_interval=10s(根據自己的情況定這個命令檢查時間間隔,不要太長也不要太短)。
3)修改CGI腳本控制文件cgi.cfg
(確保use_authentication=1//驗證)
//多個用戶之間用逗號隔開(用戶名來自htpasswd,不要添加過多)
authorized_for_system_information=nagiosadmin,用戶名
4)定義監控時間段,創建配置文件timeperiods.cfg
5)定義聯繫人,創建配置文件contacts.cfg
6)下面就可以將多個聯繫人組成一個聯繫人組contactgroups.cfg
7)定義被監控主機,創建文件hosts.cfg
注意:按照對應的方式簡單的複製修改主機名、IP和別名就可以創建多個被監控主機.
8)與聯繫人可以組成聯繫人組一樣,多個主機也可以組成主機組. hostgrops.cfg
注意:按照對應的方式簡單的複製修改主機名、IP和別名就可以創建多個被監控主機組。
9)定義監控的項目,也叫服務,services.cfg
注意:按照對應的方式簡單的複製修改主機名、命令和組名就可以創建多個服務。並且主機名要與hosts.cfg文件中定義的一致
10)在運行nagios之前首先做測試
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
看到下面這些信息就說明沒問題了
Total Warnings: 0 Total Errors:0 Things look okay - No serious problems were detected during the pre-flight check |
11)作爲守護進程後臺啓動nagios,並設置爲開機自動啓動
12)一切配置完成,即可登錄頁面查看監控信息
5.2使用Nrpe插件監控Linux主機上的本地信息
對於像磁盤容量,cpu負載這樣的”本地信息”,nagios只能監測自己所在的主機,而對其他的機器則顯得有點無能爲力.畢竟沒得到被控主機的適當權限是不可能得到這些信息的.爲了解決這個問題,nagios有這樣一個附加組件----NRPE.用它就可以完成對linux類型主機”本地信息”的監控.
其中的具體原理已經在2.5節詳細說明,此節重點說明具體的實現過程。
5.2.1被監控linux主機上的 配置
1)增加用戶並設置密碼
[root@dbpi root]# useradd nagios
[root@dbpi root]# passwd nagios
2)編譯安裝nagios插件nagios-plugins
3)編譯安裝監控插件nrpe
4)編輯這個nrpe腳本
vi /etc/xinetd.d/nrpe
only_from= 127.0.0.1 192.168.77.128(監控主機ip地址)//注意中間用空格而不是逗號間隔
5)編輯/etc/services文件,增加NRPE服務
Vi /etc/services
Nrpe 5666/tcp
6)重啓xinetd服務
[root@dbpi nrpe-2.8.1]# service xinetd restart
7)查看NRPE是否已經啓動
[root@dbpi nrpe-2.8.1]# netstat -at|grep nrpe
[root@dbpi nrpe-2.8.1]# netstat -an|grep 5666
8)測試NRPE是否則正常工作
/usr/local/nagios/libexec/check_nrpe -H localhost//正確結果會返回當前NRPE的版本
9)可查看或添加 NRPE的監控命令//在/usr/local/nagios/etc/目錄下
ps:我的linux服務器端的配置文件代碼如下
/usr/local/nagios/etc/nagios.cfg
/usr/local/nagios/etc/objects/localhost.cfg
# Define a host for the local machine define host{ use linux-server,hosts-pnp ; 給網絡設備用的 host_name HomeSwitch alias HomeSwitch address 192.168.77.128 icon_image switch.gif statusmap_image switch.gd2 2d_coords 100,200 3d_coords 100,200,100 } define host{ use linux-server,hosts-pnp host_name monitor alias 理工畢業設計 parents HomeSwitch address 192.168.77.128 icon_image web.gif statusmap_image web.gd2 2d_coords 100,300 3d_coords 100,300,100 } #define host{ # use linux-server # host_name MyGamePC # alias MyGamePC # parents HomeSwitch # address 127.0.0.1 # icon_image server.gif # statusmap_image server.gd2 # 2d_coords 200,300 # 3d_coords 200,300,100 # } #define host{ # use linux-server # host_name HomeRouter # alias HomeRouter # parents HomeSwitch # address 127.0.0.1 # icon_image router.gif # statusmap_image router.gd2 # 2d_coords 200,200 # 3d_coords 200,200,100 # } #define host{ # use linux-server # host_name xDSL # alias xDSL # parents HomeSwitch # address 127.0.0.1 # icon_image router.gif # statusmap_image router.gd2 # 2d_coords 200,100 # 3d_coords 200,100,100 # } #define host{ # use linux-server # host_name Firewall # alias Firewall # parents HomeRouter # address 127.0.0.1 # icon_image router.gif # statusmap_image router.gd2 # 2d_coords 300,200 # 3d_coords 300,200,100 # } #define host{ # use linux-server # host_name RADIUS # alias RADIUS # parents xDSL,MainSwitch # address 192.168.2.1 # icon_image router.gif # statusmap_image router.gd2 # 2d_coords 300,100 # 3d_coords 300,100,100 # } # #define host{ # use linux-server ; 給網絡設備用的 # host_name MainSwitch # alias MainSwitch # parents Firewall # address 127.0.0.1 # icon_image switch.gif # statusmap_image switch.gd2 # 2d_coords 400,200 # 3d_coords 400,200,100 # } #define host{ # use linux-server # host_name IBME450 # alias IBME450 # parents MainSwitch # address 127.0.0.1 # icon_image server.gif # statusmap_image server.gd2 # 2d_coords 300,300 # 3d_coords 300,300,100 # } #define host{ # use linux-server # host_name SunUltra10 # alias SunUltra10 # parents MainSwitch # address 127.0.0.1 # icon_image server.gif # statusmap_image server.gd2 # 2d_coords 400,300 # 3d_coords 400,300,100 # } #define host{ # use linux-server # host_name Manager # alias Manager # parents MainSwitch # address 127.0.0.1 # icon_image server.gif # statusmap_image server.gd2 # 2d_coords 500,200 # 3d_coords 500,200,100 # } ############################################################################### ############################################################################### # # HOST GROUP DEFINITION # ############################################################################### ############################################################################### # Define an optional hostgroup for Linux machines define hostgroup{ hostgroup_name linux-servers ; The name of the hostgroup alias Linux Servers ; Long name of the group members * ; Comma separated list of hosts that belong to this group } define hostgroup{ hostgroup_name 本地監控機器組 alias 畢業設計服務器 members monitor } define servicegroup{ servicegroup_name 系統負荷檢查 alias 負荷檢查 members monitor,進程總數,monitor,登錄用戶數,monitor,根分區,monitor,交換空間利用率 } define servicegroup{ servicegroup_name 全部聯通性檢查 alias 聯通性檢查 members HomeSwitch,PING,monitor,PING } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS # ############################################################################### ############################################################################### # Define a service to "ping" the local machine define service{ use local-service,services-pnp ; Name of service template to use host_name * service_description PING check_command check_ping!100.0,20%!500.0,60% } # Define a service to check the disk space of the root partition # on the local machine. Warning if < 20% free, critical if # < 10% free space on partition. define service{ use local-service ; Name of service template to use host_name monitor service_description 根分區 check_command check_local_disk!20%!10%!/ } # Define a esrvice to check the number of currently logged in # users on the local machine. Warning if > 20 users, critical # if > 50 users. define service{ use local-service ; Name of service template to use host_name monitor service_description 登錄用戶數 check_command check_local_users!20!50 } # Define a service to check the number of currently running procs # on the local machine. Warning if > 250 processes, critical if # > 400 users. define service{ use local-service,services-pnp ; Name of service template to use host_name monitor service_description 進程總數 check_command check_local_procs!250!400!RSZDT } # Define a service to check the load on the local machine. define service{ use local-service,services-pnp ; Name of service template to use host_name monitor service_description 系統負荷 check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 } # Define a service to check the swap usage the local machine. # Critical if less than 10% of swap is free, warning if less than 20% is free define service{ use local-service,services-pnp ; Name of service template to use host_name monitor service_description 交換空間利用率 check_command check_local_swap!20!10 } # Define a service to check SSH on the local machine. # Disable notifications for this service by default, as not all users may have SSH enabled. define service{ use local-service,services-pnp ; Name of service template to use host_name monitor service_description SSH check_command check_tcp!22!1.0!10.0 notifications_enabled 0 } # Define a service to check HTTP on the local machine. # Disable notifications for this service by default, as not all users may have HTTP enabled. define service{ use local-service,services-pnp ; Name of service template to use host_name monitor service_description HTTP check_command check_http notifications_enabled 0 } #網卡流量 define service{ use local-service,services-pnp host_name monitor service_description check_traffic check_command check_traffic max_check_attempts 5 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r }
/usr/local/nagios/etc/objects/mylinux-client.cfg
define host{ use linux-server host_name mylinux-client alias mylinux address 192.168.77.130 #小太陽圖標畫圖 process_perf_data 1 action_url /nagios/pnp/index.php?host=$HOSTNAME$ } define service{ use generic-service #使用的是/usr/local/nagios /etc/objects/templates.cfg中所定義的 host_name mylinux-client service_description Swap Usage check_command check_nrpe!check_swap } define service{ use generic-service host_name mylinux-client service_description Current Load check_command check_nrpe!check_load } define service{ use generic-service host_name mylinux-client service_description Partition Usage check_command check_nrpe!check_disk } define service{ use generic-service host_name mylinux-client service_description Current Users check_command check_nrpe!check_users } define service{ use generic-service host_name mylinux-client service_description Total Processes check_command check_nrpe!check_total_procs } define service{ use generic-service host_name mylinux-client service_description PING check_command check_nrpe!check_ping } define service{ use generic-service host_name mylinux-client service_description httpd check_command check_http! -H 192.168.77.130 #此時ip爲監控對方客戶端ip! }
5.2.2 Nagios的監控主機上的配置
因爲之前監控主機上,已經將nagios運行起來了,現在要做的事情是:
1) 安裝check_nrpe插件並測試與被監控linux主機的聯通性
監控機使用check_nrpe與被監控機(192.168.77.130)運行的nrpedaemon之間的通信.
/usr/local/nagios/libexec/check_nrpe -H 192.168.77.130
注意:監控主機與被監控主機使用的nrpe版本要一致!
2) 在commands.cfg中創建check_nrpe的命令定義
因爲只有在commands.cfg中定義過的命令才能在services.cfg中使用
vi /usr/local/nagios/etc/commands.cfg(確定是在nagios.cfg定義的)
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
3)在services.cfg文件中創建對被監控主機的監控項目
4)在被監控機上增加check_swap命令的定義
vi /usr/local/nagios/etc/nrpe.cfg
增加下面這一行
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
注意:如果你是以獨立的daemon運行的nrpe,那麼需要手動重啓.如果你是在xinetd或者inetd下面運行的,則不需要.由於我們是xinetd下運行的,所以不需要重啓服務
5.3使用NSClient插件監控windows主機系統
NSClient的原理如下圖
根據前幾個章節的具體描述可以看到,NSClient與nrpe最大的區別就是:
被監控機上安裝有nrpe,並且還有插件,最終的監控是由這些插件來進行的.當監控主機將監控請求發給nrpe後,nrpe調用插件來完成監控.NSClient則不同,被監控機上只安裝NSClient,沒有任何的插件.當監控主機將監控請求發給NSClient後,NSClient直接完成監控,所有的監控是由NSClient完成的.這也說明了NSClient的一個很大的問題,不靈活,沒有可擴展性.它只能完成自己本身包含的監控操作,不能由一些插件來擴展.好在NSClient已經做的不錯了,基本上可以完全滿足我們的監控需要.
監控 Windows 服務必須在被監控端裝有插件程序,基於我校監控系統對所有 windows 服務器安全保護措施,在實現過程中僅以個人主機爲被監控的windows客戶端。:
5.3.1 Windows 服務器被監控主機的配置
1.下載安裝NSClient
從http://sourceforge.net/projects/nscplus下載並解壓安裝,按一般windows軟件進行安裝即可。
2.在運行裏面輸入services.msc打開”服務” 看到下圖就說明NSClient服務已經安裝上了
3. 修改NSCliet++ 的配置文件NES.ini,默認安裝在C盤下
在[modules]選項裏,啓用所有註釋的配置命令,但保留 CheckWMI.dll 和 RemoteConfiguration.dll 的註釋。
4.更改[Settings]選項
修改 allowd_host=192.168.77.128 //nagios 服務器的 ip 地址
5.修改[NSClient]選項
啓用 port=12489 的配置,系統通過端口 12489 偵聽,系統中取消對該端口的限制後再執行 nsclient 命令。
6.重啓服務,確認服務開啓,並處於監聽狀態
我的電腦—右鍵管理—服務和應用程序—啓動NSClient++服務,打開cmd執行netstat –an查看監聽狀態
5.3.2 Nagios 服務器監控主機端的配置
對監控主機的配置
與之前的nrpe的過程類似,在監控主機上做的就3件事情
1.安裝監控windows的插件(已經默認安裝了,check_nt)
2.定義命令
3.定義要監控的項目
第一種方法:如果只是定義一臺windows主機,那麼可以使用templates.cfg裏面的windows配置板,此處我只定義一臺windows主機,所以我使用模板
1.首先更改nagios.cfg配置文件,讓其支持windows.cfg定義對象,找到41行,去掉前面#
2.查看nagios的命令配置定義對象,看是否有check_nt的定義,如果沒有,自行加入(此處commands.cfg文件中已有定義,不用自己編寫)
3.定義主機,編輯objects/windows.cfg文件,此文件中,只需更改29行的ip地址即可,改成被監控端windows的(由於此文件中已經寫好要監控的東西,所以不用再另行編寫,如果想定義此文件中沒有的內容,可自動編寫)
Vim /usr/local/nagios/etc/objects/windows.cfg
define host{ use windows-server,hosts-pnp ; Inherit default values from a template host_name zangwinserver ; The name we're giving to this host alias My Windows Server ; A longer name associated with the host address 192.168.77.1; IP address of the host process_perf_data 1 action_url /nagios/pnp/index.php?host=$HOSTNAME$ } define hostgroup{ hostgroup_name windows-servers ; The name of the hostgroup alias Windows Servers ; Long name of the group } define service{ use generic-service host_name zangwinserver service_description NSClient++ Version check_command check_nt!CLIENTVERSION } define service{ use generic-service,services-pnp host_name zangwinserver service_description Uptime check_command check_nt!UPTIME } define service{ use generic-service,services-pnp host_name zangwinserver service_description CPU Load check_command check_nt!CPULOAD!-l 5,80,90 } define service{ use generic-service,services-pnp host_name zangwinserver service_description Memory Usage check_command check_nt!MEMUSE!-w 80 -c 90 } define service{ use generic-service,services-pnp host_name zangwinserver service_description C:\ Drive Space check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90 } define service{ use generic-service,services-pnp host_name zangwinserver service_description W3SVC check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC } define service{ use generic-service,services-pnp host_name zangwinserver service_description Explorer check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe }
4.最後檢查配置是否正確,並重啓nagios服務。
5.4 監控網絡核心交換機配置
1)編輯 Nagios 的主配置文件:
root@sz-yunfan:~# vi /usr/local/nagios/etc/nagios.cfg
啓用下面這行配置
cfg_file=/usr/local/nagios/etc/objects/switch.cfg
2)配置 Nagios
需要做些對象定義用於監控新的交換機與路由器等網絡設備。
打開 switch.cfg 配置文件進行配置
# vi /usr/local/nagios/etc/objects/switch.cfg
對被監控的交換機加一個新的主機對象定義。 編輯主機對象中的 host_name、alias 和 address 值。
define host{
use generic-switch
host_name 交換機名稱
alias 交換機別名
address 核心交換機ip地址
hostgroups 主機組成員
}
3)監控丟包率和 RTA
增加服務定義配置,用於監控被 Nagios 監控主機到交換機的丟包率和平均回包週期 RTA,檢測週期一般是每 5 分鐘。
define service{
use generic-service
host_name RG6806E
service_description PING
check_command check_ping! 200.0,20%! 600.0,60%
normal_check_interval 5
retry_check_interval 1
}
Nagios 監控系統實現了網絡服務系統重要信息的監控,提供了可靠的、穩定的應用服務,保證了網絡服務的正常運行。解決了日常網絡服務器管理的繁雜工作,釋放了大量的人工管理工作時間。 Nagios 監控系統能準確記錄、定位並及時報警,爲解決網絡操作系統故障提供了寶貴的時間,同時也將故障導致服務中斷的時間降低至最低。有效、可靠的報警爲網絡服務的正常運行提供了良好的保障。
/usr/local/nagios/etc/nagios.cfg
define host{ use generic-switch,hosts-pnp ; Inherit default values from a template host_name switch ; The name we're giving to this switch alias Linksys SRW224P Switch ; A longer name associated with the switch address 192.168.32.25 ; IP address of the switch hostgroups switches ; Host groups this switch is associated with } define hostgroup{ hostgroup_name switches ; The name of the hostgroup alias Network Switches ; Long name of the group } define service{ use generic-service,services-pnp ; Inherit values from a template host_name switch ; The name of the host the service is associated with service_description PING ; The service description check_command check_ping!200.0,20%!600.0,60% ; The command used to monitor the service normal_check_interval 5 ; Check the service every 5 minutes under normal conditions retry_check_interval 1 ; Re-check the service every minute until its final/hard state is determined } #監控SNMP狀態信息 # Monitor uptime via SNMP define service{ use generic-service ; Inherit values from a template host_name switch service_description Uptime check_command check_snmp! -C public -o sysUpTime.0 } 監控端口帶寬和流量 define service{ use generic-service ; Inherit values from a template host_name linksys-srw224p service_description Port 1 Link Status check_command check_snmp!-C public -o ifOperStatus.1 -r 1 -m RFC1213-MIB } # Monitor bandwidth via MRTG logs define service{ use generic-service ; Inherit values from a template host_name linksys-srw224p service_description Port 1 Bandwidth Usage #check_command check_local_mrtgtraf!/var/lib/mrtg/192.168.20.25_1.log!AVG!1000000,1000000!5000000,5000000!10 }
5.5 監控網絡核心路由器配置
5.5 nagios報警功能
5.5.1郵箱報警方式
Nagios 的報警功能一直是它最強大的地方,Nagios 默認使用mail 命令發送報警郵件,RedHat默認安裝並啓動了sendmail,使用郵件報警,可以使用139 郵箱的短信通知功能,如此可以省得很大一部分資金的開銷,測試你的Nagios 是否可以正常發送郵件:
[root@Nagios-Server ~]# echo "hehe" | mail -s "test" [email protected]
如果測試沒問題,你的Nagios 配置也沒有問題,就可以正常使用了。
注意:發送的郵件一般會被當做垃圾郵件,存放在垃圾郵件箱。
5.5.2飛信報警方式
1.安裝飛信機器人程序。
# tar -zxvf fetion_linux_2010...tar.gz(現在飛信用的是新版本)
# cp sms /usr/local/nagios/libexec
然後拷貝Library32下的所有庫文件到 /lib 以及/usr/lib。 現在可以測試飛信是否能發信息。
# /usr/local/nagios/libexec/sms -f 號碼 -p 飛信的密碼 -t 接受信息的手機號碼 -m ″信息內容″
注意:只能給好友發信息,發送成功後系統會有相應的提示。 可以使用 /usr/local/nagios/libexec/sms --help 獲得飛信的使用幫助。
2.增加Nagios監控服務器的飛信報警命令。
(1)修 改/usr/local/nagios/etc/objects/command.cfg 文件在郵件報警相關定義 “# ′notify-service-by-email′”後,加入飛信報警的定義。
#notify-host-by-sms
define command{
command_name notify-host-by-sms
command_line /usr/local/nagios/libexec/sms -f號碼 -p 飛信密碼 -t $CONTACTPAGER$ -m ″$HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$ on $TIME$ result is $SERVICEOUTPUT$″ $CONTACTPAGER$
}
#notify-service-by-sms
define command{
command_name notify-service-by-sms
command_line /usr/local/nagios/libexec/sms -f號碼 -p 飛信密碼 -t $CONTACTPAGER$ -m ″$HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$ on $TIME$ result is $SERVICEOUTPUT$″ $CONTACTPAGER$
}
(2) 修 改/usr/local/nagios/etc/objects/contacts.cfg 文 件 , 定義報警短信的接受人。@163.com,報警短信接收手機號爲18238811
define contact{
contact_name zang
use generic-contact
alias System-Admin
email [email protected]
pager
}
然後把zang添加到組中。
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members zang
}
(3)修 改/usr/local/nagios/etc/objects/templates.cfg模 版 文 件 。
增加飛信報警。
service_notification_commands notify-service-by-sms, noti-fy-service-by-email
host_notification_commands notify-host-by-sms, notify-service-by-email
保存以上修改後,重啓Nagios服務。 至此基於飛信報警的Nagios服務器配置成功。 現在可以把Nagios監控的一個服務關閉,測試飛信報警。
在複雜的大型網絡的管理中,利用飛信和Nagios網絡監控系統進行管理,網絡管理人員可大大減輕工作量,提高工作效率,最重要的是能夠及時發現網絡的異常,快速處理故障,保證正常教學工作的有效進行。
5.5.3關閉報警
報警是使用率最高的功能了,如果某些服務器需要送修,如果預期進行某些主機和服務的維護工作,我們可以提前關閉該主機或者服務的報警功能,不然你的郵箱會不停的接受報警郵件,默認5 分鐘發送一封報警郵件,直到恢復爲止(Nagios 誓不罷休的精神值得我們應用到學習中)。在Services 標籤下,點擊相應的服務名稱,在右側點擊Disable notifications for this service,直接提交即可關閉,完成後,返回Services 標籤,你會發現,在該服務前面有個小喇叭的符號,上面有個紅色的X。
四、Nagios性能分析圖表的實現
1)安裝PNP支持包rrdtool工具
[root@localhost aaa]# tar zxf rrdtool-1.4.5.tar.gz
[root@localhost aaa]# cd rrdtool-1.4.5
[root@localhost rrdtool-1.4.5]# ./configure --prefix=/usr/local/rrdtool ; make ; make install
2)安裝PNP
[root@localhost rrdtool-1.4.5]# cd /aaa/
[root@localhost aaa]# tar zxf pnp-0.4.13.tar.gz
[root@localhost aaa]# cd pnp-0.4.13
[root@localhost pnp-0.4.13]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata ; make all ; make install ; make install-config ; make install-init
3)配置PNP
A,創建默認配置文件
[root@localhost pnp-0.4.13]# cd /usr/local/nagios/etc/pnp/
[root@localhost pnp]# cp process_perfdata.cfg-sample process_perfdata.cfg
[root@localhost pnp]# cp npcd.cfg-sample npcd.cfg
[root@localhost pnp]# cp rra.cfg-sample rra.cfg
[root@localhost pnp]# chown -R nagios:nagios /usr/local/nagios/etc/pnp/
B,修改process_perfdata.cfg
[root@localhost pnp]# vi /usr/local/nagios/etc/pnp/process_perfdata.cfg
44 LOG_LEVEL = 2
4)修改Nagios主配置文件
A,增加小太陽圖標
[root@localhost pnp]# cd /usr/local/nagios/etc/
[root@localhost etc]# vi templates.cfg
define host{
name hosts-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$
process_perf_data 1
}
define service{
name services-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data 1
}
B、修改nagios.cfg
找到如下幾行去掉註釋
[root@localhost etc]# vi nagios.cfg
833 process_performance_data=1
845 host_perfdata_command=process-host-perfdata
846 service_perfdata_command=process-service-perfdata
C、修改commands.cfg
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
}
D、修改hosts.cfg文件和services.cfg文件
[root@localhost ~]# vi /usr/local/nagios/etc/objects/hosts.cfg
define host{
use linux-server,hosts-pnp
host_name web
alias benet-web
address 192.168.1.1
}
define host{
use linux-server,hosts-pnp
host_name mysql
alias benet-mysql
address 192.168.1.2
}
define hostgroup{
hostgroup_name sa-servers
alias sa servers
members web,mysql
}
[root@localhost ~]# vi /usr/local/nagios/etc/objects/services.cfg
################- benet web -##########################
define service{
use local-service,services-pnp
host_name web
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use local-service,services-pnp
host_name web
service_description SSH
check_command check_ssh
}
點擊小太陽,出現對主機或服務的監控頁面