Nagios是一款開源的計算機系統和網絡監視工具,能夠監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設備,在系統或服務狀態異常時發出郵件或短信報警,第一時間通知網站運維人員,在狀態恢復後發出正常的電子郵件或短信通知。
php
1. Nagios工做原理mysql
Nagios的功能是監控服務和主機,但其自身並不包括這些功能,全部的監控、檢測功能都是經過各類插件來完成的。安裝完Nagios以後,在Nagios主目錄下的/libexex裏面放有Nagios自帶的插件,如:check_disk是檢查磁盤空間的插件,check_load是檢查cpu負載的插件,每個插件能夠經過運行./check_xxx -h命令來檢查其使用方法和功能。linux
2. Nagios的四種監控狀態ios
Nagios能夠識別四種狀態返回信息。0(OK)表示狀態正常(綠色顯示),1(WARNING)表示出現警告(×××),2(CRITICAL)表示出現很是嚴重錯誤(紅色),3(UNKNOWN)表示未知錯誤(深×××),nagios根據插件返回來的值來判斷監控對象的狀態,並經過web顯示出來,以供管理員即時發現故障。web
3. Nagios經過nrpe插件來遠程管理服務的工做過程sql
(1) Nagios執行安裝在它裏面的check_nrpe插件,並告訴check_nrpe去檢測哪些服務。vim
(2)經過ssl,check_nrpe鏈接遠端機器上的NRPE daemon。瀏覽器
(3)NRPE運行本地的各類插件去檢測本地服務器和狀態(check_disk,...etc)。安全
(4)NRPE把檢測的結果傳給主機端的check_nrpe,check_nrpe再把結果送到nagios狀態隊列中。bash
(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 }
在/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,須要配置以上命令
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的監控頁面的顯示