1. 程式人生 > >部署Nagios監控系統

部署Nagios監控系統

Nagios nrpe 監控系統 報警 楊書凡

Nagios是一款開源的計算機系統和網絡監視工具,可以監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設備,在系統或服務狀態異常時發出郵件或短信報警,第一時間通知網站運維人員,在狀態恢復後發出正常的電子郵件或短信通知。


1. Nagios工作原理

Nagios的功能是監控服務和主機,但其自身並不包括這些功能,所有的監控、檢測功能都是通過各種插件來完成的。安裝完Nagios之後,在Nagios主目錄下的/libexex裏面放有Nagios自帶的插件,如:check_disk是檢查磁盤空間的插件,check_load是檢查cpu負載的插件,每一個插件可以通過運行./check_xxx -h命令來檢查其使用方法和功能。

2. Nagios的四種監控狀態

Nagios可以識別四種狀態返回信息。0(OK)表示狀態正常(綠色顯示),1(WARNING)表示出現警告(×××),2(CRITICAL)表示出現非常嚴重錯誤(紅色),3(UNKNOWN)表示未知錯誤(深×××),nagios根據插件返回來的值來判斷監控對象的狀態,並通過web顯示出來,以供管理員即時發現故障。

3. Nagios通過nrpe插件來遠程管理服務的工作過程

(1) Nagios執行安裝在它裏面的check_nrpe插件,並告訴check_nrpe去檢測哪些服務。

(2)通過ssl,check_nrpe連接遠端機器上的NRPE daemon。

(3)NRPE運行本地的各種插件去檢測本地服務器和狀態(check_disk,...etc)。

(4)NRPE把檢測的結果傳給主機端的check_nrpe,check_nrpe再把結果送到nagios狀態隊列中。

(5)Nagios依次讀取隊列中的信息,再把結果顯示出來。

案例:部署Nagios監控系統

在目前而言,有服務器的地方就少不了監控系統,可以實時了解服務器的運行狀況並能在出現問題時發出警告,使管理員及時解決問題。本案例使用三臺服務器來配置Nagios監控系統,具體拓撲圖如下:

技術分享圖片


實驗步驟如下:

1. 安裝Nagios

[root@localhost ~]# service iptables stop 
[root@localhost ~]# useradd -s /sbin/nologin nagios
[root@localhost ~]# mkdir /usr/local/nagios
[root@localhost ~]# chown –R  nagios:nagios /usr/local/nagios
[root@localhost ~]# tar zxf nagios-4.0.1.tar.gz
[root@localhost ~]# cd nagios-4.0.1
[root@localhost nagios-4.0.1]# ./configure --prefix=/usr/local/nagios 
[root@localhost nagios-4.0.1]# make all  
[root@localhost nagios-4.0.1]# make install   //安裝nagios的主程序,CGI和HTML文件    
[root@localhost nagios-4.0.1]# make install-init //在/etc/rc.d/init.d下創建啟動腳本
[root@localhost nagios-4.0.1]# make install-commandmode  //配置目錄權限
[root@localhost nagios-4.0.1]# make install-config     //安裝nagios示例配置文件
[root@localhost nagios-4.0.1]# ls /usr/local/nagios/    
bin  etc  libexec  sbin  share  var       //各個目錄結構以及功能如下圖所示

技術分享圖片



2. 安裝nagios插件

Nagios提供的各種監控功能基本上是通過插件完成的

[root@localhost ~]# yum -y install openssl-devel  //監控端可被監控端需要SSL通道
[root@localhost ~]# yum -y install httpd          //可通過Web監控界面查看
[root@localhost ~]# yum -y install php            //配置Web監控界面需要PHP支持
[root@localhost ~]# tar zxf nagios-plugins-1.5.tar.gz
[root@localhost ~]# cd  nagios-plugins-1.5
[root@localhost nagios-plugins-1.5]#./configure --prefix=/usr/local/nagios
[root@localhost nagios-plugins-1.5]# make 
[root@localhost nagios-plugins-1.5]# make install

[root@localhost ~]# tar zxf nrpe-2.15.tar.bz2
[root@localhost ~]# cd nrpe-2.15
[root@localhost nrpe-2.15]#./configure
[root@localhost nrpe-2.15]#make all
[root@localhost nrpe-2.15]#make install-plugin

為了安全,一般情況需要Nagios的Web監控界面經過授權才能訪問,需要到/etc/httpd/conf.d/nagios.conf配置文件加入一些信息

[root@localhost ~]# vim /etc/httpd/conf.d/nagios.conf
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" 
<Directory "/usr/local/nagios/sbin">     
  AuthType Basic     
  Options ExecCGI     
  AllowOverride None     
  Order allow,deny     
  Allow from all     
  AuthName "Nagios Access"
  AuthUserFile /usr/local/nagios/etc/htpasswd  //此目錄存放身份驗證文件
  Require valid-user 
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">     
  AuthType Basic     
  Options None     
  AllowOverride None     
  Order allow,deny     
  Allow from all     
  AuthName "nagios Access"
  AuthUserFile /usr/local/nagios/etc/htpasswd     
  Require valid-user 
</Directory>
[root@localhost ~]# /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nagiosadmin
 New password:  (輸入密碼)     
 Re-type new password: (再輸入一次密碼)     
 Adding password for user nagiosadmin
[root@localhost ~]# cat /usr/local/nagios/etc/htpasswd  //查看認證內容
nagiosadmin:dH4sf78y9dfP9
[root@localhost ~]# service httpd start


打開瀏覽器,輸入http://192.168.1.10/nagios,輸入用戶名、密碼即可


技術分享圖片



目前只能是打開網頁,很多的監控選項不能看到,如果需要監控遠程的服務器,還需要做很多配置,下面開始配置。

3. Nagios監控系統的配置文件介紹

(1)Nagios的配置文件默認在/usr/local/nagios/etc/目錄下

Nagios.cfg:主配置文件,定義各種配置文件的名稱和位置

Cgi.cfg:控制CGI的配置文件

Resource.cfg:資源文件,定義各種變量,以便於其他文件調用

Objects:其他配置文件存放目錄,此目錄下主要有:

Command.cfg:命令配置文件,定義各種命令格式,以備其他文件調用

contacts.cfg:聯系人和組,發郵件等告警信息時可以調用

localhost.cfg:監控本機的配置文件

timeperiods.cfg:定義監控時間的配置文件,便於其他文件調用

Hostgroups.cfg:定義監控的主機(組),需手動創建。


(2)配置文件之間的關系

在Nagios的配置過程中涉及的幾個定義有主機、主機組、服務、服務組、聯系人、聯系人組、監控時間和監控命令等。從這些定義可以看出,nagios各個配置文件之間互為關聯、彼此引用的。成功配置出一臺nagios監控系統,必須要弄清楚每個配置文件之間依賴與被依賴的關系,最重要的有四點

a.定義監控那些主機,主機組,服務和服務組

b.定義這個監控要用什麽命令實現

c.定義監控的時間段

d.定義主機或服務器出現問題時要通知的聯系人和聯系人祖

(3)配置nagios

為了能更清楚的說明問題,同時也為了維護方便,建議將nagios各個定義的對象創建獨立的配置文件。

a.創建conf目錄來定義host主機

b.創建hostgroups.cfg文件來定義主機組

c.用默認的contacts.cfg文件來定義聯系人和聯系人組

d.用默認的commands.cfg文件來定義命令

e.用默認的timeperiods.cfg來定義監控時間段

f.用默認的templetes.cfg文件作為資源引用文件

4. 配置Nagios監控系統

1)修改主配置文件

[root@localhost ~]# mkdir /usr/local/nagios/etc/conf
[root@localhost ~]# vim /usr/local/nagios/etc/nagios.cgf  //添加兩行
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg
cfg_dir=/usr/local/nagios/etc/conf


2)添加/usr/local/nagios/etc/objects/commands.cfg(定義check_nrpe監控命令)

[root@localhost ~]# vim /usr/local/nagios/etc/objects/commands.cfg
define command{   
    command_name  check_nrpe
    command_line  $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}


3)修改/usr/local/nagios/etc/objects/localhost.cfg(定義本機監控文件)

[root@localhost ~]# vim /usr/local/nagios/etc/objects/localhost.cfg       
define service{          
  use                      local-service       
  host_name                localhost     //主機名,在host段定義    
  service_description      Total Processes   //監控服務名稱,在 Web頁面顯示     
  check_command            check_local_procs!250!400!RSZDT   //監控界值        
}


4)修改/usr/local/nagios/etc/objects/contacts.cfg(定義監控服務器聯系人)

[root@localhost ~]# vim /usr/local/nagios/etc/objects/contacts.cfg
  define contact{    
  contact_name      ysf     //定義聯系人名稱
  alias             ysf     //別名
  service_notification_period    24x7  //監控主機服務24x7小時
  host_notification_period      24x7   //監控主機對角應用服務24x7小時
  service_notification_options    w,u,c,r    //告警級別參數
  host_notification_options       d,u,r    //定義在什麽狀態下發通知,分別表示宕機、不可到達、重新恢復
  service_notification_commands notify-service-by-email     //調用郵件名稱
  host_notification_commands notify-host-by-email           //調用飛信名稱
  email root                    //定義發送到哪個郵箱
}
define contacatgroup{
    contactgroup_name     ysf    
    alias                 ysf
    members               ysf
}


5)新建/usr/local/nagios/etc/objects/hostgroups.cfg(定義主機組)

[root@localhost ~]# vim /usr/local/nagios/etc/objects/hostgroups.cfg
define hosrgroup{
    hostgroup_name web    
    alias          web
    members        192.168.1.20
}
define hosrgroup{
    hostgroup_name mysql    
    alias          mysql
    members        192.168.1.30
}


6)具體監控MySQL、HTTP主機的存活、負載、進程

在/usr/local/nagios/etc/conf下面新建192.168.1.20.cfg文件和192.168.1.30.cfg

[root@localhost ~]# cd /usr/local/nagios/etc/conf/
[root@localhost ~]# vim 192.168.1.20.cfgdefine 
host{            //定義監控哪臺主機
host_name 192.168.1.20
alias 192.168.1.20
address 192.168.1.20
check_command check-host-alive
max_check_attempts 5
check_period 24x7
contact_groups ysf
notification_period 24x7
notification_options d,u,r
}
define service{      //定義監控這臺主機的存活
host_name 192.168.1.20
service_description check-host-alive
check_command check-host-alive
max_check_attempts 3
normal_check_interval 2
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups ysf
}
define service{      //定義這臺主機進程數
host_name 192.168.1.20
service_description check-proce
check_command check_nrpe!check_total_procs
max_check_attempts 3
normal_check_interval 2
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups ysf
}
define service{       //定義這臺主機進程數
host_name 192.168.1.20
service_description check-load
check_command check_nrpe!check_load
max_check_attempts 3
normal_check_interval 2
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7    
contact_groups ysf
}

同理,在192.168.1.3.cfg的配置一樣,改下IP即可


7)修改/usr/local/nagios/etc/cgi.cfg

將use-authentication=1修改為0


8)重啟Nagios服務


[root@localhost ~]# service nagios restart
[root@localhost ~]# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ 
[root@localhost ~]# chcon -R -t httpd_sys_content_t /usr/local/nagios/share/  //如開啟了selinux,需要配置以上命令


9)訪問網頁查看狀態

技術分享圖片





5. 配置被控端192.168.1.20、192.168.1.30(MySQL和Web)

[root@localhost ~]# yum -y install openssl openssl-devel
[root@localhost ~]# useradd -s /sbin/nologin nagios
[root@localhost ~]# tar zxf nagios-plugins-1.5.tar.gz
[root@localhost ~]# cd  nagios-plugins-1.5
[root@localhost nagios-plugins-1.5]# ./configure --prefix=/usr/local/nagios
[root@localhost nagios-plugins-1.5]# make 
[root@localhost nagios-plugins-1.5]# make install
[root@localhost nagios-plugins-1.5]# chown -R nagios:nagios /usr/local/nagios

[root@localhost ~]# tar zxf nrpe-2.15.tar.bz2
[root@localhost ~]# cd nrpe-2.15
[root@localhost nrpe-2.15]# ./configure
[root@localhost nrpe-2.15]# make all
[root@localhost nrpe-2.15]# make install-plugin
[root@localhost nrpe-2.15]# make install-daemon
[root@localhost nrpe-2.15]# make install-daemon-config

[root@localhost ~]# ps -ef | wc -l      //查看進程數,進程界值根據總進程數來進行調整
[root@localhost ~]# more /proc/cpuinfo | grep proc | wc -l  //負載是根據服務有幾個CPU來調整界值的
[root@localhost ~]# vim /usr/local/nagios/etc/nrpe.cfg 
allowed_hosts=127.0.0.1,192.168.1.10     //添加監控服務器的IP地址
.
[root@localhost ~]#  /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d   //啟動nrpe


在Nagios服務器上測試nrpe運行是否正常,出現下面的信息說明正確。

[root@localhost ~]#  /usr/local/nagios/libexec/check_nrpe -H 192.168.1.20
NRPE v2.15

在瀏覽器上訪問

技術分享圖片



也可在services.cfg文件中添加192.168.1.20.cgf文件中的參數

[root@localhost ~]# vi  /usr/local/nagios/etc/objects/services.cfg
1define service{    use         local-service
    host_name       nagios
    service_description ping
    check_command       check-host-alive
    }2define service{    use         local-service
    host_name       nagios
    service_groups      系統狀況檢查
    service_description 登陸用戶數
    check_command       check-host-users!20!50
    }3define service{    use         local-service
    host_name       nagios
    service_groups      系統狀況檢查
    service_description 根分區
    check_command       check-local_disk!20%!10%!/
    }4define service{    use         local-service
    host_name       nagios
    service_groups      系統狀況檢查
    service_description 進程總數
    check_command       check-local_procs!250!400!RSZDT
    }5define service{    use         local-service
    host_name       nagios
    service_groups      系統狀況檢查
    service_description 系統負載
    check_command       check-host-load!5.0,4.0,3.0!10.0,6.0,4.0
    }6define service{    use         local-service
    host_name       nagios
    service_groups      系統狀況檢查
    service_description 交換空間利用率
    check_command       check-local_swap!20!10
    }7define service{
    servicegroup_name   系統狀況檢查
    alias           系統概況
    }





check_local_users!20!50 //監測遠程主機當前的登錄用戶數量,如果大於20用戶則報warning,如果大於50則報critical

check_local_disk!20%!10%!/ //如果可用空間低於20%會報Warning,如果可用空間低於10%則報Critical:

check_local_procs!250!400!RSZDT //監測遠程主機當前的進程總數,如果大於250進程則報warning,如果大於400進程則報critical,S(休眠)、R(運行)、Z(僵死)、D (不可中斷)、T (停止)

check_load -w 5,4,3 -c 10,6,4這個命令的意義如下

當1分鐘多於5個進程等待,5分鐘多於4個,15分鐘多於3個則為warning狀態

當1分鐘多於10個進程等待,5分鐘多於6個,15分鐘多於4個則為critical狀態

服務組並不是必須的,這是配合nagios的監控頁面的顯示


部署Nagios監控系統