nagios監控系統
1: ngios工作原理
1.Nagios的功能是監控服務和主機,但是他自身并不包括這部分功能,所有的監控、檢測功能都是通過各種插件來完成的。
啟動Nagios後,它會周期性的自動調用插件去檢測伺服器狀态,同時Nagios會維持一個隊列,所有插件傳回來的狀态資訊都進入隊列,Nagios每次都從隊首開始讀取資訊,并進行處理後,把狀态結果通過web顯示出來。
Nagios提供了許多插件,利用這些插件可以友善的監控很多服務狀态。安裝完成後,在nagios主目錄下的/libexec裡放有nagios自帶的可以使用的所有插件,如,check_disk是檢查磁盤空間的插件,check_load是檢查CPU負載的,等等。每一個插件可以通過運作./check_xxx –h 來檢視其使用方法和功能。
2.Nagios可以識别4種狀态傳回資訊,即 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 依次讀取隊列中的資訊,再把結果顯示出來。
4.nagios監控一個服務或主機的方式
1.【被動監控】nagios通過nsca進行被動監控。那麼什麼是被動監控呢?被動監測:就是指由被監測的伺服器主動上傳資料到nagios監控系統中。這種監測方式提高了實時性(出現問題的時候,被監測的伺服器可以及時上傳資料通知nagios,進而使管理者可以盡快作出處理,而不用像主動監測中一樣,非要等到下一個監測周期才能獲知被監測伺服器的狀态)。NSCA就是可以實作Nagios被動監測的一個程式。目前所知道的,隻能通過nsca插件對linux/unix伺服器進行被動監控。對于windows伺服器暫時沒發現可用的插件。
2.【主動監控】nagios通過nrpe插件和snmp協定進行主動監控。至于什麼是主動監控可以參考上面所述。簡單了解決就是nagios按照檢測周期主動的擷取遠端主機的資料。這樣一來實時性就要差一些了。nagios通過nrpe插件和snmp協定實作了對linux/unix伺服器進行監控,同時通過snmp協定實作了對windows伺服器、交換機、列印機等的監控。另外,nagios通過NSClient++用戶端也可以對windows進行監控
四、nagios監控一個服務或主機的途徑
nagios本身并沒有監控的功能,所有的監控是由插件完成的,插件将監控的結果傳回給nagios,nagios分析這些結果以web的方式展現給我們,同時提供相應的報警功能(這個報警的功能也是由相應的插件完成的)。
根據上圖可以看出有這麼幾大類,這些都是nagios所要調用的插件類型
1.snmp類
【可以監控本地/遠端linux/unix主機和遠端windows伺服器、交換機、列印機】
2.nrpe類
【主要監控本地主機和遠端主機的服務的狀态,切記是針對于服務】
3.nsca類
【nsca主要是實作被動監控的】
4.nagios-plugins類
【nagios-plugins是nagios官方提供的一套插件程式,nagios監控主機的功能其實都是通過執行插件程式來實作的。】
所有的這些插件是一些實作特定功能的可執行程式,預設安裝的路徑是/
實驗過程:
一、建構nagios監控系統
1.關閉防火牆
#service iptables stop
#chkconfig iptables off
2. 建立nagios使用者群組
[root@centos1 ~]# useradd -s /sbin/nologin nagios
[root@centos1 ~]# mkdir /usr/local/nagios
[root@centos1 ~]# chown -R nagios:nagios /usr/local/nagios
[root@centos1 ~]#
3.安裝依賴包
[root@centos1 ~]# yum -y install php httpd mysql-devel
4.編譯安裝nagios
[root@centos1 nagios-4.0.1]# tar zxf /mnt/nagios-4.0.1.tar.gz -C /usr/src
[root@centos1 nagios-4.0.1]# cd /usr/src/nagios-4.0.1/
[root@centos1 nagios-4.0.1]# ./configure --prefix=/usr/local/nagios
[root@centos1 nagios-4.0.1]# make all //編譯
[root@centos1 nagios-4.0.1]# make install //安裝nagios的主程式的cgi和html
[root@centos1 nagios-4.0.1]# make install-init //生成服務腳本/etc/rc.d/init.d下
[root@centos1 nagios-4.0.1]# make install-commandmode //給外部程式通路nagios配置設定權限
[root@centos1 nagios-4.0.1]# make install-config //生成nagios配置檔案的樣例,安裝路徑為/usr/local/nagios/etc目錄下
[root@centos1 nagios-4.0.1]# make install-webconf//生成通路web接口檔案,自動修改httpd.conf檔案,以讓nagios的web監控頁面必須經過授權才能通路
[root@centos1 nagios-4.0.1]# chkconfig --add nagios
[root@centos1 nagios-4.0.1]# chkconfig --level 35 nagios on
[root@centos1 nagios-4.0.1]#
5.驗證安裝是否成功要檢視/usr/local/nagiso目錄是否如下:
[root@centos1 nagios-4.0.1]# ls /usr/local/nagios
bin etc libexec sbin share var
6.安裝nagios插件
①安裝nagions插件
[root@centos1 nagios-plugins-1.5]# tar zxvf /mnt/nagios-plugins-1.5.tar.gz -C /usr/src
[root@centos1 nagios-plugins-1.5]# cd /usr/src/nagios-plugins-1.5/
make[1]: Leaving directory `/usr/src/nagios-plugins-1.5'
[root@centos1 nagios-plugins-1.5]# ./configure --prefix=/usr/local/ngios
[root@centos1 nagios-plugins-1.5]# make&&make install
如要擷取遠端主機的本地資源或屬性,如cpu使用率、磁盤資源等,需要借用外部建構NRPE來完成
②監控端和被監控端之間使用ssl安全同道。需要首先安裝openssl-devel
[root@centos1 nagios-plugins-1.5]# yum -y install openssl-devel
#tar zxvf /mnt/nrpe-2.15.tar.gz -C /usr/src
#cd /usr/src/nrpe-2.15
#./configure
#make all
#make install-plugin //将check_nrpe插件安裝到/usr/local/nagios/libexec目錄下
③為了安全起見,一般情況下要讓nagios的web監控頁面必須經過授權才能通路。這需要增加驗證配置,之前在安裝nagios時安裝了install-webconfig是以就不用手工修改httpd.conf檔案了,隻需要建立用于通路nagios的web頁面的驗證賬戶即可
[root@centos1 nrpe-2.15]# /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadm
④驗證,在客戶機上打開浏覽器
二、配置nagios監控系統
1.配置檔案介紹
[root@centos1 etc]# cd /usr/local/nagios/etc
cgi.cfg //控制cgi通路的配置檔案
nagios.cfg //nagios主配置檔案
resource.cfg //變量定義檔案,又稱為資源檔案,在這些檔案隻能給的定義的變量。在其他配置檔案中可以被使用,如$USER1$=/usr/local/nagios/libexec
objects //objects是一個目錄,在此目錄下又很多配置檔案模版,用于定義nagios對象
objects/commands.cfg //定義指令配置檔案,其中定義的指令可以被其它配置檔案引用
objects/contacts.cfg //定義聯系人和聯系人組的配置檔案
objects/localhost.cfg //定義監控問地主及的配置檔案
objects/printer.cfg //定義監控列印機的一個配置檔案模版。預設沒有啟用此檔案
objects/switch.cfg //定義監控路由器的一個配置檔案,預設沒有啟用
objects/templates.cfg //定義主機和服務的一個模版配置檔案,可以在其他配置檔案中引用
objects/timeperiods.cfg //定義nagios監控時間段的配置檔案
objects/windows.cfg //定義監控windows主機的一個配置檔案模版,預設沒有啟動此檔案
2.配置檔案之間的關聯
四點:
l 定義監控哪些主機、主機組、服務和服務組
l 定義這個監控要什麼指令實作
l 定義監控的時間段
l 定義主機或服務出現問題時要通知的聯系人和聯系人組
3修改配置檔案
①/usr/local/nagios/etc/nagios.cfg //主配置檔案
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/timeperiods.cfg //預設有
cfg_file=/usr/local/nagios/etc/objects/templates.cfg //預設有
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg //手工寫
cfg_dir=/usr/local/nagios/etc/conf //存放主機配置的目錄
需要手工添加:
[root@centos1 etc]# mkdir /usr/local/nagios/etc/conf
②/usr/local/nagios/etc/objects/commands.cfg //加上電子郵件、飛信和nrpe插件,本例主要添加一個nrpe插件,其他都不定義(飛信、郵件等)
③/usr/local/nagios/etc/objects/contacts.cfg //定義監控服務聯系人
define contactgroup{ //手工添加
contactgroup_name yumwei
alias yunwei
members ywgcsz
}
/usr/local/nagios/etc/objects/hostgroups.cfg //定義主機組 要手工建立
define hostgroup{
hostgroup_name mysqlserver
alias mysqlserver
members 192.168.1.2
4.下面開始具體監控mysql、http主機的存活、負載和程序
[root@centos1 conf]# vim 192.168.1.2.cfg
define host {
host_name 192.168.1.2
alias 192.168.1.2
address 192.168.1.2
check_command check-host-alive
max_check_attempts 5
check_period 24x7
contact_groups yunwei
notification_period 24x7
notification_options d,u,r
define service {
host_name 192.168.1.2
service_description check-host-alive
max_check_attempts 3
normal_check_interval 2
retry_check_interval 2
notification_interval 10
notification_options w,u,c,r
service_description check-procs
check_command check_nrpe!check_total_procs
max_chacek_attempts 3
}
service_description check-load
check_command check_nrpe!check_load
define service{
service_description check-space
check_command check_nrpe!check_disk_space_free
max_check_attempts 3
normal_check_interval 2
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
contact_groups yunwei
notification_options w,u,c,r
service_description check-http
check_command check_nrpe!check_http
service_description check-user
check_command check_nrpe!check_user
5.修改/usr/local/nagios/etc/cgi.cfg
use_authentication=0
三、被控端配置 (配置和管理伺服器基本一樣如以下指令)
[root@centos2 ~]# yum -y install openssl openssl-devel
[root@centos2 ~]# useradd nagios -s /sbin/nologin
[root@centos2 nagios-plugins-1.5]# tar zxvf /mnt/nagios-plugins-1.5.tar.gz -C /usr/src
[root@centos2 nagios-plugins-1.5]# cd /usr/src/nagios-plugins-1.5/
[root@centos2 nagios-plugins-1.5]# ./configure --prefix=/usr/local/nagios
[root@centos2 nagios-plugins-1.5]# make&&make install
[root@centos2 nagios-plugins-1.5]# chown -R nagios:nagios /usr/local/nagios
[root@centos2 nagios-plugins-1.5]# tar zxvf /mnt/nrpe-2.15.tar.gz -C /usr/src
#./configure --prefix=/usr/local/nagios
[root@centos2 nrpe-2.15]# make all &&make install-plugin && make install-daemon
[root@centos2 nrpe-2.15]# make install-daemon-config
[root@centos2 nrpe-2.15]# ps -ef |wc -l
[root@centos2 nrpe-2.15]# more /proc/cpuinfo |grep proc |wc -l
[root@centos2 nrpe-2.15]# vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1,192.168.1.1(主要端)
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 170
commad[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_disk_space_free]=/usr/local/nagios/libexec/check_disk -w 95% -c 98% -p /
command[check_http]=/usr/local/nagios/libexec/check_tcp -H 192.168.1.1-p 80
command[check_user]=/usr/local/nagios/libexec/check_users -w 2 -c 3
然後在伺服器端測試nrpe運作是否正常
connect to host 192.168.1.1 port 5666: Connection refused[root@centos1 conf]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.2(被控端)
四、啟動主要端ngios服務
#/etc/init.d/nagios restart