nagios配置

接近兩個星期的奮戰,nagios的安裝搭建以及監控服務自動報警功能終於基本得以實現,如今本身整理一份安裝技術手冊,方便本身之後查閱和回顧。php

接近兩個星期的奮戰,nagios的安裝搭建以及監控服務自動報警功能終於基本得以實現,如今本身整理一份安裝技術手冊,方便本身之後查閱和回顧。linux

1、Nagios試驗環境以基本安裝

主機名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支持的系統。不過若是你沒有安裝apachehttpd服務),那麼你就沒有那麼直觀的界面來查看監控信息了,因此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

 

(二)安裝nagios

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的插件nagios-plugins

插件是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.cfghtpasswd.usersnagios.cfgobjectsresource.cfg這五個文件與目錄.

Cgi.cfg (CGI配置文件)           

htpasswd.users (Apache的用戶驗證密碼文件)

Nagios.cfg (主配置文件)         

objects (對象定義文件目錄)

Resource.cfg(資源配置文件)

2、Nagios監控簡單服務的配置

檢測主機是否存活,須要修改nagios.cfgobjects目錄下的文件。

(一)主配置文件nagios.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=0check_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=nagiosnagios_group=nagios等,這些之後再說)

(二)腳本控制文件cgi.cfg的配置

[root@nagios etc]# vim cgi.cfg

 
 


Cgi.cfg的做用是控制相關cgi腳本,先確保use_authentication=1default_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

此處定義的就是出了問題應該通知誰,一般就是系統管理員,上圖定義的就是當監控服務出現uunknow)、ccritical)、r(從異常狀態下恢復)或者主機出現ddown機)、uunreachable)、r(從異常狀態下恢復)的時候就會以notify-servicenotify-host-by-sms命令定義的方式(此命令是在commands.cfg中定義的)向系統管理員發送報警通知,此處沒有定義W警告級別。注意,contacts.cfg最下面也有關於contactgroup的模版,這裏咱們另外建立一個contactgroup.cfg聯繫組的文件,就不在聯繫人文件中定義聯繫組了,能夠註釋掉。

(七)聯繫組文件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_diskcheck_http這些服務是用安裝插件之後監控起來的服務,到上述步驟完成時不會出現,只監控主機存活的話服務只有check-host-alive),固然,對於系統監控來講,這是遠遠不夠的,對於來講,他的真正功能功能尚未發揮出來,在下面部分會詳細的敘述。

3、使用Nagios插件監控更多信息

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-Serverip地址 -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-ServerFTP服務

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這一欄就好了。

 

4、使用Nagios-nrpe監控其餘客戶端主機

對於像磁盤容量,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/下生成兩個目錄libexecshare

 

3.修改目錄權限

[root@127.43  nagios-plugins-2.1.1]#chown nagiosnagios /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

到此被監控機上的配置就完成了,下面配置主監控機。

(二)運行Nagios的主監控機服務端的配置

在主監控機上其實要作的就是安裝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 nagiosnagios /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中添加,自定義對於監控swapnrpe命令。

 

如今咱們要監控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就好了,到此服務器端和客戶端的配置所有完成。

 

5、使用gnokii實現短信貓報警功能

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是串口1ttyS1是串口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應該很快就能收到短信了

6、gnokii整合到nagios監控系統中

[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/

 

7、加入對windows服務器的監控

 

NSClient的原理以下圖

 

118947757818

 

能夠看到,NSClientnrpe最大的區別就是:

--被監控機上安裝有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打開服務

118947764196

看到下圖就說明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能夠看到已經開始監聽tcp12489端口了

這樣外部就能夠訪問了嗎?!防火牆也要打開tcp12489端口,不然nagios檢查此服務的時候會報socket 超時錯誤.critical!後果很十分嚴重啊.我就犯了這個錯誤,因此特別強調一下。在windows防火牆啓用的狀況下

選擇例外添加端口

添加NSClient++端口就OK

 

這樣被監控機的配置就搞定了,它就等待nagios發出某個監控請求,而後它執行請求將監控的結果發回到nagios監控主機上。

 

4.對監控主機的配置

接下來就是要配置監控主機了.與以前的nrpe的過程相似,在監控主機上作的就3件事情

1.安裝監控windows的插件(已經默認安裝了,check_nt)

2.定義命令

3.定義要監控的項目

 

定義命令

nagioslibexec下有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

       }

相關文章
相關標籤/搜索