Nagios

Nagios是一款用來監視系統和網絡的開源應用軟件。

利用其衆多的插件實現對本機和遠端服務的監控,當被監控對象異常時,會及時向管理員報警,用戶可以直接調用插件,也可以自定義shell腳本來監控服務;可通過web頁面顯示對象狀態,日誌,報警信息。

1 搭建Nagios監控服務器

(1)部署Nagios服務運行環境

[root@ser56 ~]# yum -y install httpd php

[root@ser56 ~]# systemctl start httpd

[root@ser56 ~]#yum -y install gcc gcc-c++

[root@ser56 ~]# useradd nagios

[root@ser56 ~]# groupadd nagcmd

[root@ser56 ~]# usermod -G nagcmd nagios

(2)安裝Nagios軟件

[root@ser56 ~]#tar -xf nagios-4.2.4.tar.gz

./configure --help

[root@ser56 nagios-4.2.4]#./configure              

--with-nagios-user=nagios 

--with-nagios-group=nagcmd  

--with-command-user=nagios  

--with-command-group=nagcmd

[root@ser56 nagios-4.2.4]# make all             #編譯

[root@ser56 nagios-4.2.4]# make install        #安裝

[root@ser56 nagios-4.2.4]# make install-init  #安裝控制腳本

[root@ser56 nagios-4.2.4]# make install-commandmode  #調配置文件的訪問權限

[root@ser56 nagios-4.2.4]# make install-config        #安裝配置 

[root@ser56 nagios-4.2.4]# make install-webconf    #部署網站配置

[root@ser56 nagios-4.2.4]# make install-exfoliation  #web頁面格式

安裝默認位置:/usr/local/nagios

(3)安裝監控插件

[root@ser56 nagios]# tar -xf nagios-plugins-2.1.4.tar.gz

[root@ser56 nagios-plugins-2.1.4]# ./configure

[root@ser56 nagios-plugins-2.1.4]# make

[root@ser56 nagios-plugins-2.1.4]# make install

插件存放位置:/usr/local/nagios/libexec/

(4)啓動監控服務

[root@ser56 ~]# /etc/init.d/nagios start

[root@ser56 ~]# /etc/init.d/nagios status

[root@ser56 ~]# vim /etc/httpd/conf.d/nagios.conf

在該文件內定義了目錄別名以及用戶認證

39行:Alias /nagios "/usr/local/nagios/share"  #定義目錄別名位置

52行:AuthUserFile /usr/local/nagios/etc/htpasswd.users   #登錄的用戶名密碼存放位置

爲Nagios平臺添加Web管理用戶

[root@ser56 ~]# htpasswd -c  /usr/local/nagios/etc/htpasswd.users nagiosadmin  #該用戶必須是此名稱

[root@ser56 ~]# cat /usr/local/nagios/etc/htpasswd.users 

nagiosadmin:$apr1$QXl/iLJm$lFPRZ69PLrlvKmsFP6I6J1

此時重啓httpd服務,重新加載/etc/httpd/conf.d/nagios.conf配置文件

firefox http://192.168.4.56/nagios

輸入帳號和密碼進入nagios首頁

因爲在/etc/httpd/conf.d/nagios.conf配置文件中定義了別名,首頁的真正位置在/usr/local/nagios/share下

(5)查看監控信息

①默認監控服務:cpu, Current Users, HTTP, PING, 根, ssh, swap, 進程

CPU負載                 check_load

系統登錄用戶數量   check_users

網站服務運行狀態   check_http

PING                       check_ping

根分區空閒空間       check_disk

ssh服務                   check_ssh

交換分區使用量       check_swap

系統總進程數量       check_procs

②監控顯示狀態:

ok:正常, warning:警告, unknown:監控配置錯誤, critical:報錯, pending:監控中

nagios服務監控過程?

服務運行時,自動調用監控插件,將獲取到的數據和插件的閥值做比較並返回監控狀態信息。調用插件時,可以定義警告值和錯誤值。


2 配置Nagios監控服務

2.1 配置文件說明

(1)路徑:/usr/local/nagios/etc下

(2)主配置文件:nagios.cfg  #服務啓動加載文件

驗證配置是否有錯誤: 

[root@ser56 etc]# /usr/local/nagios/bin/nagios  -v  /usr/local/nagios/etc/nagios.cfg

(3)宏定義文件:resource.cfg (設置nagios服務使用的變量)

(4)cgi.cfg  #定義CGI文件訪問權限

什麼時cgi文件?ls /usr/local/nagios/sbin/路徑下有很多.cgi文件

開發者寫好的腳本,用來設置那些用戶有權限訪問文件,允許登錄的用戶名(nagiosadmin)在此文件中配置。

(5)objects目錄下:

localhost.cfg       #監控本機配置文件

vim /usr/local/nagios/etc/objects/localhost.cfg

define host{                      #定義監控主機

use  linux-server              #定義監控主機使用的模版

host_name  localhost      #定義主機名,網頁面可以看到

alias        localhost          #定義描述信息 可選項

address    127.0.0.1       #被監控主機的IP地址

}

define service{               #定義監控主機資源

use  local-sever             #監控資源使用的模板

host_name     localhost

service_description   Root Partition       #設置監控資源顯示名稱

check_command      check_local_disk!20%!10%!/      #調用的監控命令 和localhost.cfg文件中commands.cfg相對應

}

 

commands.cfg #定義監控命令

vim /usr/local/nagios/etc/objects/commands.cfg

define command{

        command_name    check_local_disk     #命令名稱,和check_command相對應

        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$   #調用監控插件 -w警告值,-c錯誤值 -s 狀態 -p 監控哪個分區

        }


-s 狀態:R(運行)  Z(殭屍進程)

templates.cfg     定義監控模版配置文件

timeperiods.cfg   定義監控時間模版配置文件

contacts.cfg       指定接收監控報警消息郵箱地址


案例:監控本機的根分區使用情況

vim /usr/local/nagios/etc/objects/localhost.cfg

define service{

        use                   local-service

        host_name            localhost

        service_description    boot

        check_command       check_disk

}

vim /usr/local/nagios/etc/objects/commands.cfg

define command{

        command_name    check_disk

        command_line       $USER1$/check_disk -w 50%  -c 25% -p /boot

        }

 

2.2 監控插件使用

(1)插件所在位置:

/usr/local/nagios/libexec

(2)插件幫助信息查看:

[root@ser56 libexec]#./check_users --help

[root@ser56 libexec]# dd if=/dev/zero of=/boot/a.txt  bs=1M  count=250   #模擬佔用/boot分區的大小

[root@ser56 libexec]# ./check_procs -w 10 -c 12            #查看所有的進程

[root@ser56 libexec]# ./check_procs -w 20 -c 22  -s Z    #殭屍進程的狀態  -s R 運行的中的進程

 

2.3監控遠端主機

(1)監控主機的配置步驟:

①定義監控命令 

[root@ser56 ~]# vim /usr/local/nagios/etc/objects/commands.cfg 

②創建監控主機的配置文件

[root@ser56 ~]# grep -v '^#' /usr/local/nagios/etc/objects/localhost.cfg  > /usr/local/nagios/etc/objects/ser51.cfg

③在主配置文件加載監控主機的配置文件

[root@ser56 ~]# vim /usr/local/nagios/etc/nagios.cfg

cfg_file=/usr/local/nagios/etc/objects/ser51.cfg

④檢查配置是否有錯

⑤重啓監控服務

⑥訪問web頁面查看監控信息的狀態

⑦若監控項有警告狀態或嚴重錯誤狀態的,查看是否收到報警

 

2.4 監控遠端主機的公有資源

/usr/local/nagios/libexec/check_http -H 192.168.4.51 -p 80

vim /usr/local/nagios/etc/objects/commands.cfg

define command{

        command_name    check_51_http

        command_line    $USER1$/check_http -H 192.168.4.51 -p 80

        }

vim /usr/local/nagios/etc/objects/ser51.cfg

define host{

        use                    linux-server      #監控時使用的模版 

        host_name        server51          #監控頁面顯示的名稱

        alias                   localhost         #描述信息,可以不寫

        address             192.168.4.51   #監控遠端的主機

        }

 

define service{

        use                                local-service

        host_name                   server51

        service_description      HTTP     #監控頁面顯示的監控項描述

        check_command          check_51_http

        notifications_enabled    0

        }

 

2.5 監控遠端主機的私有資源

(1)配置被監控端

①安裝獲取私有資源的插件

[root@ser51 nagios]# tar -xf nagios-plugins-2.1.4.tar.gz 

[root@ser51 nagios]# ./configure && make && make install

[root@ser51 ~]#ls /usr/local/nagios/

②運行nrpe

nrpe調用本地的插件收集私有資源狀態,通過5666端口發送給監控服務器。監控服務器安裝連接nrpe的插件。

[root@ser51 ~]#yum -y install openssl-devel  openssl

[root@ser51 ~]#useradd nagios

[root@ser51 ~]#tar -xf nrpe-3.0.1.tar.gz

[root@ser51 ~]#./configure && make all

 

[root@ser51 ~]#make install-daemon        #守護進程

[root@ser51 ~]# ls /usr/local/nagios/bin/    #安裝上一步多出的

[root@ser51 ~]#make install-config           #配置文件

[root@ser51 ~]#make install-init                #啓動服務

[root@ser51 ~]#make install-plugin           #連接工具(測試)

主配置文件:

[root@ser51 ~]# vim /usr/local/nagios/etc/nrpe.cfg

command[nrpe_51_users]=/usr/local/nagios/libexec/check_users -w 1 -c 2

command[nrpe_51_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200   #自定義監控本機

allowed_hosts=127.0.0.1, 192.168.4.56  #除了本機也允許其它連接nrpe

[root@ser51 ~]# systemctl start nrpe

[root@ser51 ~]# systemctl enable nrpe

[root@ser51 ~]# netstat -anptu | grep :5666

③測試nrpe服務配置

[root@ser51 ~]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_51_users    #要和自定義的名稱保持一致

(2)配置監控服務器

①安裝連接nrpe服務的插件

yum -y install openssl openssl-devel

tar -xf nrpe-3.0.1

./configure && make all && make install-plugin

安裝之後在該路徑有:/usr/local/nagios/libexec/check_nrpe

測試:

[root@ser56 nrpe-3.0.1]# /usr/local/nagios/libexec/check_nrpe -H 192.168.4.51 -p 5666 -c nrpe_51_users

②定義監控遠端主機私有資源的監控命令

[root@ser56 objects]# vim commands.cfg

define command{

        command_name    check_51_procs

        command_line       $USER1$/check_nrpe -H 192.168.4.51 -p 5666 -c nrpe_51_procs

        } #此命令調用的定義和被監控端的/usr/local/nagios/etc/nrpe.cfg中保持一致

③監控遠端主機時調用定義的監控命令

vim ser51.cfg

define service{

        use                             local-service

        host_name                 ser51

        service_description    proces

        check_command       check_51_procs

       }#此定義的check_command和監控命令中的command_name 保持一致

④配置nagios服務運行時,加載監控遠端主機的配置文件

2.6 監控報警

發生問題將信息以郵件的形式發送到郵箱:

grep email /usr/local/nagios/etc/object/contacts.cfg  

mail -s “test” nagios < /etc/hosts

su - nagios

mail  #查看是否收到郵件


3 Nagios工作原理

Nagios的主動模式和被動模式

被動模式:客戶端起nrpe進程,服務端通過check_nrpe插件向客戶端發送命令,客戶端根據服務端的指示來調用相應的插件,插件可以獲取到本機的相關信息,並把獲取到的結果發送給服務端。因爲需要調用客戶端的插件去等待客戶端返回的信息,所以叫做被動模式

主動模式:主動模式不需要調用客戶端的插件,而是通過自己的插件主動去探測客戶端的相關信息。

那麼,因爲主動模式和被動模式的區別這兩種模式所擅長監控的服務也是不同的。

主動模式:主機死活,端口,http服務,MySQL服務等

被動模式:客戶端主機的負載,硬盤空間,內存,用戶登錄數等


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章