接近兩個星期的奮戰,nagios的安裝搭建以及監控服務自動報警功能終於基本得以實現,如今本身整理一份安裝技術手冊,方便本身之後查閱和回顧。php
接近兩個星期的奮戰,nagios的安裝搭建以及監控服務自動報警功能終於基本得以實現,如今本身整理一份安裝技術手冊,方便本身之後查閱和回顧。linux
主機名ios |
操做系統web |
IPapache |
做用vim |
Nagios-Serverwindows |
Centos5.4瀏覽器 |
211.162.127.51安全 |
監控機服務器 |
211.162.127.43 |
Centos5.4 |
211.162.127.43 |
被監控機 |
nagios的功能是監控服務和主機,可是他自身並不包括這部分功能的代碼,全部的監控、檢測功能都是有插件來完成的。
再說報警功能,若是監控系統發現問題不能報警那就沒有意義了,因此報警也是nagios很重要的功能之一。可是,一樣的,nagios自身也沒有報警部分的代碼,甚至沒有插件,而是交給用戶或者其餘相關開源項目組去完成。
nagios安裝,是指基本平臺,也就是nagios軟件包的安裝。它是監控體系的框架,也是全部監控的基礎。
打開nagios官方的文檔,會發現nagios基本上沒有什麼依賴包,只要求系統是linux或者其餘nagios支持的系統。不過若是你沒有安裝apache(httpd服務),那麼你就沒有那麼直觀的界面來查看監控信息了,因此apache姑且算是一個前提條件。關於apache的安裝,網上有不少,照着安裝就是了。安裝以後要檢查一下是否能夠正常工做。
nagios定義了4中監控狀態,表明不一樣的嚴重級別,除了OK表明正常不用關心外,其他3種都要引發重視.以下表:
狀態 |
代碼 |
顏色 |
正常 |
OK |
綠色, |
警告 |
WARNING |
黃色, |
嚴重 |
CRITICAL |
紅色, |
未知錯誤 |
UNKOWN |
深黃色 |
1.Nagios-4.1.1.tar.gz (Nagios主程序軟件包)
[root@nagios~]#wget http://jaist.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.1.1/nagios-4.1.1.tar.gz
2.Nagios-plugins-2.1.1.tar.gz (Nagios 插件)
[root@nagios~]#wget http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz
3.nrpe-2.12.tar.gz (Nagios 代理檢測程序)
[root@nagios~]#wget http://jaist.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
4.NSClient++-0.2.7.zip(用於監控windows系統所需的軟件)
http://sourceforge.net/projects/nscplus/
[root@nagios~] # ls
nagios-4.1.1.tar.gz nagios-plugins-2.1.1.tar.gz nrpe-2.15.tar.gz
1.安裝前所依賴性包的安裝
[root@nagios~]# yum -y install httpd php gcc glibc glibc-common gd gd-devel
2.建立nagios用戶和組
[root@nagios~]# useradd -m nagios
[root@nagios~]# groupadd nagcmd
[root@nagios~]# usermod -a -G nagcmd nagios
[root@nagios~]# usermod -a -G nagcmd apache
3.編譯安裝nagios
[root@nagios~]# tar -zxvf nagios-4.1.1.tar.gz
[root@nagios~]# cd nagios-4.1.1
[root@nagios-4.1.1]#./configure--with-command-group=nagcmd\ --with-nagios-user=nagios \ --with-nagios-group=nagios --prefix=/usr/local/nagios
(紅色部分命令可敲可不敲,指定nagios安裝目錄)
[root@ nagios-4.1.1]# make all
[root@ nagios-4.1.1]# make install
[root@nagios-4.1.1]# make install-init
[root@nagios-4.1.1]# make install-config
[root@nagios-4.1.1]# make install-commandmode
[root@nagios-4.1.1]# make install-webconf (生成apache配置文件nagios.conf)
4.爲nagios生成web驗證密碼
[root@nagios-4.1.1]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
5.設置nagios開機啓動
chkconfig --add nagios
chkconfig nagios on
chkconfig --add httpd
chkconfig httpd on
6.修改selinux
兩種方法:
第一種就是直接關閉selinux, 把selinux設置成disabled狀態,使用getenforce能查看到當前selinux的狀態,0爲關閉,1爲打開。
[root@nagios-4.1.1]# vim /etc/sysconfig/selinux
SELINUX=disabled
插件是nagios擴展功能的強大武器,通常好的軟件,都支持插件的擴展,你能夠根據實際需求,本身開發插件。
[root@nagios~]# tar -zxvf nagios-plugins-2.1.1.tar.gz
[root@nagios~]#cd nagios-plugins-2.1.1
[root@nagios-plugins-2.1.1]#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
[root@nagios-plugins-2.1.1]# make&&make install
[root@nagios~]# cd /usr/local/nagios
[root@nagios nagios]# ls -l
成功安裝後在/usr/local/nagios目錄下可見這幾個文件夾,其中etc爲配置文件目錄,插件都安裝在libexec目錄下,var爲存放nagios服務日誌目錄。下面咱們進入etc目錄來配置檢測主機是否存活
[root@nagios nagios]# cd etc/
[root@nagios etc]# ls -l
Etc目錄下可見cgi.cfg、htpasswd.users、nagios.cfg、objects、resource.cfg這五個文件與目錄.
Cgi.cfg (CGI配置文件)
htpasswd.users (Apache的用戶驗證密碼文件)
Nagios.cfg (主配置文件)
objects (對象定義文件目錄)
Resource.cfg(資源配置文件)
Nagios本身定義了一套規則用於配置文件,其中最重要的概念就是」對象」----object.通俗的理解:假定咱們首先定義了」性別」這個對象,它的值只多是男,女,人妖等等,而後定義某人爲一個對象,例如張三,定義張三的時候有」性別」這個屬性,它的值就必須來源了以前定義的性別這個對象,要麼是男是女,或者是人妖.
在Nagios裏面定義了一些基本的對象,通常用到的有:
聯繫人 |
contact |
出了問題像誰報告?通常固然是系統管理員了 |
監控時間段 |
timeperiod |
7X24小時不間斷仍是週一至週五,或是自定義的其餘時間段 |
被監控主機 |
host |
所須要監控的服務器,固然能夠是監控機本身 |
監控命令 |
command |
nagios發出的哪一個指令來執行某個監控,這也是本身定義的 |
被監控的服務 |
service |
例如主機是否存活,80端口是否開,磁盤使用狀況或者自定義的服務等 |
另外,多個被監控主機能夠定義爲一個主機組,多個聯繫人能夠被定義爲一個聯繫人組,多個服務還能定義成一個服務組呢.
回到上面的例子,定義張三須要以前定義的性別,咱們定義一個被監控的服務,固然就要指定被監控的主機,須要監控的時間段,要用哪一個命令來完成這個監控操做,出了問題向哪一個聯繫人報告.
全部這些對象絕對多數都是須要咱們手動定義的,這就是nagios的安裝顯得複雜的地方.下面咱們來配置nagios主配置文件。
[root@nagios etc]#vim nagios.cfg
此處是定義了nagios日誌存放的位置,默認爲這個位置能夠不用改它。
cfg_file=/usr/local/nagios/etc/objects/commands.cfg (命令定義文件) cfg_file=/usr/local/nagios/etc/objects/contacts.cfg (聯繫人信息定義文件) cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg (添加此行聯繫人組定義文件) cfg_file=/usr/local/nagios/etc/objects/hosts.cfg (添加此行主機定義文件) cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg (添加此行主機組定義文件) cfg_file=/usr/local/nagios/etc/objects/services.cfg (添加此行服務定義文件) cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg (時間週期定義文件) cfg_file=/usr/local/nagios/etc/objects/templates.cfg
#difinations for monitoring the local (linux)host
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg (註釋掉此行)
註釋掉了就說明不讀取這個文件裏的配置,取消註釋就說明nagios將讀取這個文件裏的配置。此處將localhost.cfg文件註釋,說明全部主機配置都將讀取objects目錄中hosts.cfg當中定義的主機。
改check_external_commands=0爲check_external_commands=1 .這行的做用是容許在web界面下執行重啓nagios、中止主機/服務檢查等操做。
把command_check_interval的值從默認的1改爲command_check_interval=10s(根據本身的狀況定這個命令檢查時間間隔,不要太長也不要過短)。
主配置文件要改的基本上就是這些,可是/usr/local/nagios/etc/objects中並無文件hosts.cfg等一些文件,稍後手動建立它們。(在nagios.cfg中配置的參數其實還有不少,像service_check_timeout,enable_notifications=1 開啓報警通知,確保nagios_user=nagios,nagios_group=nagios等,這些之後再說)
(二)腳本控制文件cgi.cfg的配置
[root@nagios etc]# vim cgi.cfg
![]() |
Cgi.cfg的做用是控制相關cgi腳本,先確保use_authentication=1,default_user_name=***這句能夠不用定義,默認是註釋掉的,看命令解釋說地定義有風險。
![]() |
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=nagiosadmin,test //多個用戶之間用逗號隔開
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
上述的用戶名就是以前使用htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin生成的nagiosadmin用戶,由此操做可一樣建立出上述test用戶。在此就不作過多說明了。不過這個要注意,請不要隨便添加不存在的驗證用戶,而且爲了安全起見,不要添加過多的驗證用戶。
(三)主機定義文件hosts.cfg的配置
[root@nagios etc]# cd objects/
[root@nagios objects]# vim hosts.cfg 此處沒有hosts.cfg文件,直接vim編輯建立便可
define host{
host_name Nagios-Server
//被監控主機的名稱,最好別帶空格用tab鍵來分隔
alias Nagios Server
//別名
address 211.162.127.51
//被監控主機的IP地址,我如今暫時先填本機的IP
check_command check-host-alive
//監控的命令check-host-alive,這個命令來自commands.cfg,用來監控主機是否存活
max_check_attempts 5
//檢查失敗後重試的次數
check_period 24x7
//檢查的時間段24x7,來自於在timeperiods.cfg中定義的
contact_groups sagroup
//聯繫人組,上面在contactgroup.cfg中定義的sagroup
notification_interval 10
//提醒的間隔,每隔10秒提醒一次
notification_period 24x7
//提醒的週期, 24x7,一樣來自於咱們以前在timeperiods.cfg中定義的
notification_options d,u,r
//指定什麼狀況下提醒,具體含義見以前contacts.cfg部分的介紹
}
211.162.127.43主機定義同上,就不一一詳細說明了。
(四)主機組定義文件hostgroups.cfg的配置
[root@nagios objects]#vim hostgroups.cfg
此處添加以前已定義好的主機名就好了,不一樣主機名之間用逗號隔開。
(五)監控時間段文件timeperiods.cfg的配置
[root@nagios objects]#vim timeperiods.cfg
關於其餘時間段的定義我是所有註釋掉了的,只留了24x7這個時間段的定義,按理來講這個應該是不須要的,假如使用命令檢測配置文件出現報錯狀況的話就把其餘時間命令定義都註釋掉。
(六)聯繫人文件contacts.cfg的配置
[root@nagios objects]#vim contacts.cfg
此處定義的就是出了問題應該通知誰,一般就是系統管理員,上圖定義的就是當監控服務出現u(unknow)、c(critical)、r(從異常狀態下恢復)或者主機出現d(down機)、u(unreachable)、r(從異常狀態下恢復)的時候就會以notify-service和notify-host-by-sms命令定義的方式(此命令是在commands.cfg中定義的)向系統管理員發送報警通知,此處沒有定義W警告級別。注意,contacts.cfg最下面也有關於contactgroup的模版,這裏咱們另外建立一個contactgroup.cfg聯繫組的文件,就不在聯繫人文件中定義聯繫組了,能夠註釋掉。
[root@nagios objects]#vim contactgroup.cfg
定義聯繫組的組名爲sagroup,組的成員來自於上面定義的contacts.cfg,若是有多個聯繫人則以逗號相隔。下面是最關鍵的了,用nagios主要是監控一臺主機的各類信息,包括本機資源,對外的服務等等.這些在nagios裏面都是被定義爲一個個的項目(nagios稱之爲服務,爲了與主機提供的服務相區別,我這裏用項目這個詞),而實現每一個監控項目,則須要經過commands.cfg文件中定義的命令.
例如咱們如今有一個監控項目是監控一臺機器的web服務是否正常, 咱們須要哪些元素呢?最重要的有下面三點:首先是監控哪臺機,而後是這個監控要用什麼命令實現,最後就是出了問題的時候要通知哪一個聯繫人?
(八)服務定義文件services.cfg的配置
[root@nagios objects]#vim services.cfg
以監控http服務爲例,監控的主機爲Nagios-Server這臺主機,監控的時間段爲24
x7這個時間段名命定的定義,引用的檢查服務命令是commands.cfg裏定義的check_tcp!80這個命令,就是去ping主機的80端口來檢查http是否正常,發現ping不通後最大嘗試次數爲4次,包括從新檢查間隔這些參數都是在timeperiods.cfg裏定義的,本身能夠修改。還有就是報警參數的設置也是本身按需求定義。(注意,這裏最下面加了一句notifications_enabled 1是爲了實現短信貓報警排錯時加進去的,正常來講這句不須要加,由於nagios.cfg主配置文件裏定義這句報警通知開關打開爲1了)
監控多個主機服務複製粘貼就行,只要把hostname改一下便可。上圖只展現了監控host存活的配置,經常使用監控服務的配置在介紹監控插件安裝配置的時候再貼出。
(九)修改目錄的全部者測試web監控界面
[root@nagios~]# chown –R nagios:nagcmd /usr/local/nagios/etc/objects/
[root@nagios~]#/usr/local/nagios/bin/nagios–v/usr/local/nagios/etc/nagios.cfg 檢測配置文件是否正確
若是都是0說明配置沒有問題,若是有錯誤的話會有提示哪裏出錯,檢查出錯的配置文件。
[root@nagios~]#/etc/init.d/httpd restart
[root@nagios~]#/etc/init.d/nagios restart
在瀏覽器輸入主監控機IP地址測試:http://211.162.127.51/nagios/
要求用戶名驗證,就是以前htpasswd建立的web驗證用戶nagiosadmin,第一部分的功能已經實現了,就是簡單的監控主機是否存活(上圖那些check_disk、check_http這些服務是用安裝插件之後監控起來的服務,到上述步驟完成時不會出現,只監控主機存活的話服務只有check-host-alive),固然,對於系統監控來講,這是遠遠不夠的,對於來講,他的真正功能功能尚未發揮出來,在下面部分會詳細的敘述。
nagios自己並無監控的功能,全部的監控是由插件完成的,插件將監控的結果返回給nagios,nagios分析這些結果,以web的方式展示給咱們,同時提供相應的報警功能(這個報警的功能也是由插件完成的)
全部的這些插件是一些實現特定功能的可執行程序,默認安裝的路徑是/usr/local/nagios/libexec
或許在這裏又迷糊了,咱們在定義某個監控項目時,所用的監控命令都是來自commands.cfg的,這和這些插件有什麼關係???想到了吧,commands.cfg中定義的監控命令就是使用的這些插件.舉個例子,以前咱們已經不止一次用到了check-host-alive這個命令,打開commands.cfg就能夠看到這個命令的定義,以下:
################################################################################ # # SAMPLE HOST CHECK COMMANDS # ################################################################################ # This command checks to see if a host is "alive" by pinging it # The check must result in a 100% packet loss or 5 second (5000ms) round trip # average time to produce a critical error. # Note: Only one ICMP echo packet is sent (determined by the '-p 1' argument) # 'check-host-alive' command definition define command{ command_name check-host-alive command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1 } |
command_name check-host-alive
這句話的意思是定義的命令名是check-host-alive,也就是咱們在services.cfg中使用的名稱
執行的操做是
$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
其中$USER1$是在resource.cfg文件中定義的,表明插件的安裝路徑.就如咱們上面看到的那樣$USER1$=/usr/local/nagios/libexec,至於$HOSTADDRESS$,則默認被定義爲監控主機的地址.
簡單的說,咱們在services.cfg中定義了對Nagios-Server執行check-host-alive命令,實際上就是執行了
/usr/local/nagios/libexec/ check_ping -H Nagios-Server的ip地址 -w 3000.0,80% -c 5000.0,100% -p 1
實際上check-host-alive只是這一長串命令的簡稱而已,而在services.cfg中都是使用簡稱的.
在commands.cfg中定義了不少這樣的命令簡稱.基本上咱們經常使用的監控項目都包含了,例如ftp,http,本地的磁盤,負載等等.
咱們再看一個命令,check_local_disk定義以下
# 'check_local_disk' command definition define command{ command_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ } |
check_local_disk其實是執行的check_disk插件.這裏的$ARG1$, $ARG2$, $ARG3$是什麼意思呢?在以前咱們已經提到了這個check_disk這個插件的用法,-w的參數指定磁盤剩了多少是警告狀態,-c的參數指定剩多少是嚴重狀態,-p用來指定路徑.
在使用check-host-alive的時候,只須要在services.cfg中直接寫上這個命令名check-host-alive.後面沒任何的參數.而使用check_local_disk則不一樣,在services.cfg中這要這麼寫
check_local_disk!10%!5%!/
在命令名後面用!分隔出了3個參數,10%是$ARG1$的值,5%是$ARG2$的值,/ 是$ARG3$的值
簡單的一句話就是
services.cfg定義監控項目用某個命令 ↓ 這個命令必須在commands.cfg中定義 ↓ 定義這個命令時使用了libexec下的插件 |
若是命令不帶$ARG1$就能夠在services.cfg中直接使用,若是帶了使用時就帶上參數,以!相隔
繼續編輯services.cfg服務配置文件,添加須要監控的服務,基本上就是copy上節咱們定義監控主機存活的配置,略做修改就行:
監控Nagios-Server的FTP服務
define service{ host_name Nagios-Server 要監控的機器,給出機器名,注意必須是hosts.cfg中定義的 service_description check ftp 給這個監控項目起個名字吧,任意起,你本身懂就行 check_command check_ftp 所用的命令,固然必須是commands.cfg中定義了的 max_check_attempts 5 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options u,c,r contact_groups sagroup } |
監控Nagios-Server的根分區使用狀況
define service{ host_name Nagios-Server service_description check disk check_command check_local_disk!10%!5%!/ 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 contact_groups sagroup } |
其餘的監控服務相似於這樣,須要監控的服務在commands.cfg裏均可以一一找到模版,須要監控不一樣主機只要修改hostname這一欄就好了。
對於像磁盤容量,cpu負載這樣的」本地信息」,nagios只能監測本身所在的主機,而對其餘的機器則顯得有點無能爲力.畢竟沒獲得被控主機的適當權限是不可能獲得這些信息的.爲了解決這個問題,nagios有這樣一個附加組件----NRPE.用它就能夠完成對linux類型主機」本地信息」的監控.
NRPE原理圖以下:
NRPE總共由兩部分組成:
– check_nrpe 插件,位於在監控主機上
– NRPE daemon,運行在遠程的linux主機上(一般就是被監控機)
按照上圖,整個的監控過程以下:
當nagios須要監控某個遠程linux主機的服務或者資源狀況時
1.nagios會運行check_nrpe這個插件,告訴它要檢查什麼.
2.check_nrpe插件會鏈接到遠程的NRPE daemon,所用的方式是SSL
3.NRPE daemon會運行相應的nagios插件來執行檢查
4.NRPE daemon將檢查的結果返回給check_nrpe插件,插件將其遞交給nagios作處理.
注意:NRPE daemon須要nagios插件安裝在遠程的linux主機上,不然,daemon不能作任何的監控.
1.首先須要添加nagios用戶
[root@127.43~]#useradd –s /sbin/nologin nagios
[root@127.43~]#passwd nagios
2.安裝nagios插件
[root@127.43~]# tar –zxvf nagios-plugins-2.1.1.tar.gz
[root@127.43~]#cd nagios-plugins-2.1.1/
[root@127.43 nagios-plugins-2.1.1]#./configure
[root@127.43 nagios-plugins-2.1.1]# make&&make install
這一步完成後會在/usr/local/nagios/下生成兩個目錄libexec和share
3.修改目錄權限
[root@127.43 nagios-plugins-2.1.1]#chown nagios:nagios /usr/local/nagios
[root@127.43 nagios-plugins-2.1.1]#chown –R nagios:nagios /usr/local/nagios/libexec
或者能夠直接一條命令完成:
[root@127.43 nagios-plugins-2.1.1]#chown –R nagios:nagios /usr/local/nagios
4.安裝nrpe
[root@127.43~]# tar –zxvf nrpe-2.1.12.tar.gz
[root@127.43~]#cd nrpe-2.12/
[root@127.43 nrpe-2.12]#./configure
[root@127.43 nrpe-2.12]#make all
[root@127.43 nrpe-2.12]#make install-plugin
主監控機須要安裝check_nrpe這個插件,被監控機則不須要,這裏就都安裝上以備萬一
[root@127.43 nrpe-2.12]#make install-daemon
安裝daemon
[root@127.43 nrpe-2.12]#make install-daemon-config
安裝配置文件
查看nagios目錄會發現已經生成一下幾個目錄
另一點是nrpe daemon是做爲xinetd下的一個服務運行的,因此首先要安裝好xinetd,不過通常系統默認是已經安裝上的。
[root@127.43 nrpe-2.12]#make install-xinetd
安裝xinetd腳本文件,就建立了/etc/xinetd.d/nrpe這個文件,下面來編輯這個文件
[root@127.43 nrpe-2.12]#vim /etc/xinetd.d/nrpe
只須要在only_from後面加上監控主機的地址就行,以空格相隔。
5.編輯/etc/services文件,增長nrpe服務
[root@127.43 nrpe-2.12]#vim /etc/services
在最後一行添加上 nrpe 5666/tcp #nrpe
最後重啓xinetd服務
[root@127.43 nrpe-2.12]#service xinetd restart
能夠查看到5666端口已經在監聽了,而後使用check_nrpe這個插件功能測試nrpe時候正常工做
能夠看到返回當前NRPE的版本,說明本地用check_nrpe鏈接nrpe daemon是正常的。要注意的是爲了讓主監控機能監控到被監控機信息,被監控機也要保證防火牆打開5666端口。
6.查看nrpe的監控命令
進入到/usr/local/nagios/etc目錄,能夠看到目錄下有一個nrpe.cfg文件,這就是nrpe的主配置文件,編輯他,找到下面這段話:
# The following examples use hardcoded command arguments... 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_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1 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 |
紅色部分是命令名,也就是check_nrpe 的-c參數能夠接的內容,等號=後面是實際執行的插件程序(這與commands.cfg中定義命令的形式十分類似,只不過是寫在了一行).也就是說check_users就是等號後面/usr/local/nagios/libexec/check_users -w 5 -c 10的簡稱.
咱們能夠很容易知道上面這5行定義的命令分別是檢測登錄用戶數,cpu負載,hda1的容量,殭屍進程,總進程數.各條命令具體的含義見插件用法(執行」插件程序名 –h」)
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users |
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load |
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_hda1 |
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_zombie_procs |
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_total_procs |
到此被監控機上的配置就完成了,下面配置主監控機。
在主監控機上其實要作的就是安裝check_nrpe插件,而後在commands.cfg裏建立check_nrpe的命令定義,daemon不須要安裝上去,可是爲了保險起見仍是同客戶端上同樣都安裝上去。
1.安裝插件和nrpe
[root@nagios~]# tar –zxvf nrpe-2.1.12.tar.gz
[root@nagios~]# cd nrpe-2.12/
[root@nagios nrpe-2.12]#./configure&&make all
[root@nagios nrpe-2.12]#make install-plugin
[root@nagios nrpe-2.12]#make install-daemon
[root@nagios nrpe-2.12]#make install-daemon-config
[root@nagios nrpe-2.12]#make install-xinetd
執行這句命令測試監控機使用check_nrpe與被監控機運行的nrpe-daemon之間的通訊是否成功,若是返回正確版本信息說明正常。
2.修改目錄權限
[root@nagios nagios-plugins-2.1.1]#chown nagios:nagios /usr/local/nagios
[root@nagios nagios-plugins-2.1.1]#chown –R nagios:nagios /usr/local/nagios/libexec
或者能夠直接一條命令完成:
[root@nagios nagios-plugins-2.1.1]#chown –R nagios:nagios /usr/local/nagios
編輯nrpe
[root@127.43 nrpe-2.12]#vim /etc/xinetd.d/nrpe
3.添加nrpe服務端口
[root@nagios nrpe-2.12]# vim /etc/services 在最後添加nrpe 5666/tcp #nrpe
最後重啓xinetd服務 /etc/init.d/xinetd restart
以上幾步和客戶端上的配置相同
4.在commands.cfg裏增長對check_nrpe的定義
只須要在最後增長下面內容:
# 'check_nrpe ' command definition
define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec(或者直接寫$USER1$)/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
-c後面帶的$ARG1$參數是傳給nrpe daemon執行的檢測命令,以前說過了它必須是nrpe.cfg中所定義的那5條命令中的其中一條.在services.cfg中使用check_nrpe的時候要用!帶上這個參數
下面就能夠在services.cfg中定義對211.162.127.43主機cpu負載等等的監控
define service {
host_name 211.162.127.43
被監控的主機名,這裏注意必須是linux且運行着nrpe,並且必須是hosts.cfg中定義的
service_description check-users
監控項目的名稱
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_users
監控命令check_nrpe,是在commands.cfg中定義的,帶的參數是check_load,是在nrpe.cfg中定義的
}
define service {
host_name 211.162.127.43
service_description check-load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
define service {
host_name 211.162.127.43
service_description check-total-procs
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_total_procs
}
加入監控swap使用狀況,很遺憾的是在nrpe.cfg中默認沒有定義這個監控功能的定義,那就手動在nrpe.cfg中添加,自定義對於監控swap的nrpe命令。
如今咱們要監控swap分區,若是空閒空間小於20%則爲警告狀態—warning;若是小於10%則爲嚴重狀態—critical.咱們能夠查得須要使用check_swap插件,完整的命令行應該是下面這樣.
/usr/local/nagios/libexec/check_swap -w 20% -c 10%
編輯/usr/local/nagios/etc/nrpe.cfg增長下面這行
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10% |
如今check_swap就能夠做爲check_nrpe的-c的參數使用了,在services.cfg裏增長這個監控項目
define service {
host_name 211.162.127.43
service_description check-swap
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_swap
}
接下來重啓nagios就好了,到此服務器端和客戶端的配置所有完成。
1.安裝硬件
把短信貓接上電源,把sim卡插入,把串口鏈接到服務器主機接口上。
2.安裝minicom
[root@nagios~]# yum -y install minicom gettext-devel gettext
3.設置超級終端參數
[root@nagios~]#minicom -s 將會出現如下界面
選中serial port setup,輸入a將/dev/modem改成對應串口(ttyS0是串口1,ttyS1是串口2),輸入e修改波特率,最後選擇save setup as dfl而後Exit from Minicom
4.下載安裝gnokii
wget
http://www.gnokii.org/download/gnokii/gnokii-0.6.30.tar.gz
wget http://ftp.gnome.org/pub/gnome/sources/intltool/0.40/intltool-0.40.6.tar.gz
首先要先安裝perl-XML-Parse
而後解壓安裝intltool
[root@nagios~]# tar -zxvf intltool-0.40.6.tar.gz
[root@nagios~]#cd intltool-0.40.6
[root@nagios intltool-0.40.6]#./configure
[root@nagios intltool-0.40.6]#make&&make install
最後再安裝gnokii
[root@nagios~]# tar -zxvf gnokii-0.6.30.tar.gz
[root@nagios~]# cd gnokii-0.6.30
[root@nagios gnokii-0.6.30]#./configure
[root@nagios gnokii-0.6.30]#gmake
[root@nagios gnokii-0.6.30]#gmake install
5.配置gnokii
[root@nagios~]#mkdir -p /root/.config/gnokii
[root@nagios~]#cp /usr/local/share/doc/gnokii/sample/gnokiirc /root/.config/gnokii/config
而後編輯這個文件
[global]
port = /dev/ttyS0
其餘的port均可以註釋掉
model = AT
一樣的把其餘model = 6510什麼的都註釋掉
Initlength = default
connection = serial
usr_locking=no
聽說這個爲yes時沒法同時給多人發送短信,沒試過
serial_baudrate = 9600
smsc_timeout = 10
[xgnokii]
allow_breakage = 0
[gnokiid]
bindir = /usr/local/sbin/ 測試機裏寫的是sbin,可是看技術文檔上又是寫的bin,仍是按照機器上的來作吧,不行就換bin
[connect_script]
TELEPHONE=12345678
[logging]
debug = on
rlpdebug = off
xdebug = off
6.測試gnokii
[root@nagios~]# gnokii --identify
看到無報錯的話如今就能夠發短信了,不過在使用以前可使用which gnokii來查看一下gnokii命令正確的絕對路徑,本測試機是在/usr/local/bin/gnokii
[root@nagios~]# echo -n "test message" | /usr/local/bin/gnokii --sendsms 1342893****
顯示OK應該很快就能收到短信了
[root@nagios~]# vim /usr/local/nagios/etc/objects/commands.cfg加入對短信自動報警命令的定義
最好是手動一個個的敲,不然很容易出錯,最後修改一下權限問題
[root@nagios~]# chown -R nagios:nagios /usr/local/bin/gnokii
[root@nagios~]# chown -R nagios:nagios /dev/ttyS0
而後切換到nagios用戶測試下發送短信
[nagios@nagios~]# echo -n "test message" | /usr/local/bin/gnokii --sendsms 1342893****
若是成功收到短信證實沒什麼問題了,(在此以前應該還要會cp下模版文件之類的,看具體報什麼錯,解決步驟跟root用戶操做同樣,cp模版文件到某個目錄下而後修改參數)nagios應該能實現自動發送短信功能,可是我遇到很奇怪的事情,就是手動測試能成功收到短信,可是down掉一個服務後nagios就是不能自動發送短信,後來在一個國外論壇上查到解決方案,實施後問題解決。
[root@nagios~]# cp .config/gnokii/config /etc/gnokiirc
[root@nagios~]# usermod -a -G uucp nagios
詳見網站
http://securfox.wordpress.com/2009/03/30/how-to-configure-nagios-to-send-sms-to-your-mobile/
NSClient的原理以下圖
能夠看到,NSClient與nrpe最大的區別就是:
--被監控機上安裝有nrpe,而且還有插件,最終的監控是由這些插件來進行的.當監控主機將監控請求發給nrpe後,nrpe調用插件來完成監控.
--NSClient則不一樣,被監控機上只安裝NSClient,沒有任何的插件.當監控主機將監控請求發給NSClient後,NSClient直接完成監控,全部的監控是由NSClient完成的.
下面就開始手動安裝
1.安裝NSClient
從http://nsclient.org/nscp/downloads上下載最新的軟件包,有64位,32位各類軟件包提供不一樣下載需求,這裏咱們選擇的就是windows32位包下載,選擇NSClient++-0.3.9-Win32.zip下載。
解壓到C盤名爲NSClient的文件夾中
2.安裝服務
打開cmd切換到C:\NSClient
執行nsclient++ /install
執行nsclient++ SysTray 注意大小寫,這一步是安裝系統托盤,時間稍微有點長
在運行裏面輸入services.msc打開」服務」
看到下圖就說明NSClient服務已經安裝上了
雙擊打開,點」登陸」標籤,在」容許服務與桌面交互」前打勾
3.修改配置文件
編輯C:\NSClient目錄下的NSC.ini文件
將 [modules]部分的全部模塊前面的註釋都去掉,除了CheckWMI.dll and RemoteConfiguration.dll這兩個 |
在[Settings]部分設置'password'選項來設置密碼,做用是在nagios鏈接過來時要求提供密碼.這一步是可選的,我這裏方便起見跳過它,不要密碼. |
將[Settings]部分'allowed_hosts'選項的註釋去掉,而且加上運行nagios的監控主機的IP.我改成以下這樣allowed_hosts=127.0.0.1/32,192.168.0.111 以逗號相隔.這個地方是支持子網的,若是寫成192.168.0.0/24則表示該子網內的全部機器均可以訪問.若是這個地方是空白則表示全部的主機均可以鏈接上來.注意是[Settings]部分的,由於[NSClient]部分也有這個選項. |
必須保證[NSClient]的'port'選項並無被註釋,而且它的值是'12489',這是NSClient的默認監聽端口 |
以下圖所示:
、
在CMD中執行nsclient++ /start啓動服務,注意所在目錄是C:\NSClient
已經正常啓動了.注意服務默認設的是」自動」,也就是說是開機自動啓動的.
在cmd裏面執行netstat –an能夠看到已經開始監聽tcp的12489端口了
這樣外部就能夠訪問了嗎?錯!防火牆也要打開tcp的12489端口,不然nagios檢查此服務的時候會報socket 超時錯誤.是critical哦!後果很十分嚴重啊.我就犯了這個錯誤,因此特別強調一下。在windows防火牆啓用的狀況下
選擇例外添加端口
添加NSClient++端口就OK了
這樣被監控機的配置就搞定了,它就等待nagios發出某個監控請求,而後它執行請求將監控的結果發回到nagios監控主機上。
4.對監控主機的配置
接下來就是要配置監控主機了.與以前的nrpe的過程相似,在監控主機上作的就3件事情
1.安裝監控windows的插件(已經默認安裝了,check_nt)
2.定義命令
3.定義要監控的項目
定義命令
在nagios的libexec下有check_nt這個插件,它就是用來檢查windows機器的服務的,其功能相似於上一章講的check_nrpe.
vim /usr/local/nagios/etc/objects/commands.cfg
模版中應該有這句命令的定義了,接下來直接引用就好了。
若是NSClient設置了鏈接須要密碼,則應寫成以下格式
$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
增長監控項目
vi /usr/local/nagios/etc/objects/services.cfg
固然windows-127.189這個hostsname還得去hosts.cfg主機配置文件當中定義好,要不得報錯。
一樣的能夠增長以下服務(爲了篇幅,我只給出最關鍵的check_command這一項)
1)監控windows服務器運行的時間
check_command check_nt!UPTIME
2)監控Windows服務器的CPU負載,若是5分鐘超過80%則是warning,若是5分鐘超過90%則是critical
check_command check_nt!CPULOAD!-l 5,80,90
3)監控Windows服務器的內存使用狀況,若是超過了80%則是warning,若是超過90%則是critical.
check_command check_nt!MEMUSE!-w 80 -c 90
4)監控Windows服務器C:\盤的使用狀況,若是超過80%已經使用則是warning,超過90%則是critical
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
注:-l後面接的參數用來指定盤符
5)監控Windows服務器D:\盤的使用狀況,若是超過80%已經使用則是warning,超過90%則是critical
check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
6)監控Windows服務器的W3SVC服務的狀態,若是服務中止了,則是critical
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
7)監控Windows服務器的Explorer.exe進程的狀態,若是進程中止了,則是critical
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
重啓nagios服務來生效,等一會就能夠查看頁面了。
Sendmail配置
解壓縮tar –zxvf sendEmail-v1.55.tar.gz
cd sendEmail-v1.55
將可執行程序複製cp sendEmail /usr/local/bin
而後給確認確實它具備執行權限
# 'notify-by-email' command definition
define command{
command_name notify-by-email
command_line /usr/bin/printf "%b" "***** Nagios 2.9 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f nagios@test.com -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagios -xp p#3isoda
}