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服務等
被動模式:客戶端主機的負載,硬盤空間,內存,用戶登錄數等