前言:Nagios是一款開源的免費網絡監視工具,可以監控Windows、Linux和Unix的主機狀态,交換機路由器等網絡裝置,在系統或服務狀态異常時發出郵件或短信報警,第一時間通知網站運維人員。流量監控不是他的強項,流量監控建議使用cacti(可以繪制非常直覺的圖形。
總結一下nagios主要可以監控以下方面:
l 主機是否當機(通過ping指令,如果ping不通會認為主機屬于當機狀态,但不影響所監控的其他服務)
l 伺服器資源(cpu使用率、硬碟剩餘空間等)
l 網絡服務(smtp\pop3\http\)
l 監控網絡裝置(路由器、交換機等)
需要了解的知識點
nagios工作原理
Nagios本身不包括監控主機和服務的功能。所有的監控、監測功能都是通過各種插件來完成的。安裝完nagios之後,在nagios主目錄下的/libexex裡面放有nagios自帶的插件,如:check_disk是檢查磁盤空間的插件,check_load是檢查cpu負載的插件,每一個插件可以通過運作./check_xxx -h指令來檢查其使用方法和功能。
nagios的四種監控狀态
Nagios可以識别四種狀态傳回資訊。0(OK)表示狀态正常(綠色顯示),1(WARNING)表示出現警告(×××),2(CRITICAL)表示出現非常嚴重錯誤(紅色),3(UNKNOWN)表示未知錯誤(深×××),nagios根據插件傳回來的值來判斷監控對象的狀态,并通過web顯示出來,以供管理者即時發現故障。
nagios通過nrpe插件來遠端管理服務的工作過程
Nagios執行安裝在它裡面的check_nrpe插件,并告訴check_nrpe去檢測哪些服務。
通過ssl,check_nrpe連接配接遠端機器上的NRPE daemon。
NRPE運作本地的各種插件去檢測本地伺服器和狀态(check_disk,...etc)。
NRPE把檢測的結果傳給主機端的check_nrpe,check_nrpe再把結果送到nagios狀态隊列中。
Nagios依次讀取隊列中的資訊,再把結果顯示出來。
實驗環境
實驗拓撲

虛拟機上的實驗環境
實驗步驟
搭建nagios監控系統
關閉防火牆
建立nagios使用者和使用者組
編譯安裝nagios(需要提前配置yum)
安裝支援包:
配置:
編譯和安裝:
注意:安裝install-webconf是為了生成配置檔案,後面在/etc/httpd/conf/httpd.conf最後添加的資訊就不用手工打了,可以到/etc/httpd/conf.d/nagios.conf檔案中複制。
以上指令的解釋:
make install //安裝主程式,CGI和HTML檔案
make install-init //在/etc/rc.d/init.d安裝啟動腳本
make install-commandmode //配置目錄權限
make install-config //安裝示例配置檔案
make install-webconf //安裝nagios的web接口,會在/etc/httpd/conf.d目錄中建立nagios.conf檔案。
安裝完成之後會在/usr/local/nagios目錄下産生6個目錄,下面分别解釋一下。
bin:nagios執行程式所在的目錄,nagios檔案即為主程式。
etc:nagios配置檔案目錄,當make install-config完以後etc下面就會出現預設的配置檔案。
sbin:nagios CGI檔案所在目錄,這裡存放的是一些外部指令執行程式。
share:nagios網頁檔案目錄,存放一些html檔案。
var:nagios日志檔案、pid等檔案目錄。
Libexec:系統預設插件的存儲位置
添加為系統伺服器
chkconfig --add nagios
chkconfig --level 35 nagios on
安裝nagios插件(監控功能通過插件完成)
編譯并安裝:
6)安裝nrpe(為了監控遠端伺服器)
7)在/etc/httpd/conf/httpd.conf檔案最後添加授權,我們可以到/etc/httpd/conf.d/nagios.conf檔案中複制,不用手打。
使用:r導入即可
導入即可,不用修改,儲存退出。
8)執行htpasswd指令添加一個通路nagios頁面的授權使用者
使用者名和密碼都是nagiosadmin
9)啟動nagios和httpd
10)在浏覽器上通路nagios頁面
目前隻能是打開網頁,很多的監控選項不能看到,如果需要監控遠端的伺服器,還需要做很多配置,下面開始配置。
配置nagios監控系統涉及知識點
1)nagios的配置檔案:
Nagios.cfg:主配置檔案,定義各種配置檔案的名稱和位置
Cgi.cfg:控制CGI的配置檔案
Resource.cfg:資源檔案,定義各種變量,以便于其他檔案調用
Objects:其他配置檔案存放目錄,此目錄下主要有:
Command.cfg:指令配置檔案,定義各種指令格式,以備其他檔案調用
contacts.cfg:聯系人群組,發郵件等告警資訊時可以調用
localhost.cfg:監控本機的配置檔案
timeperiods.cfg:定義監控時間的配置檔案,便于其他檔案調用
Hostgroups.cfg:定義監控的主機(組),需手動建立。
配置檔案之間的關系
在nagios的配置過程中涉及的幾個定義有主機、主機組、服務、服務組、聯系人、聯系人組、監控時間和監控指令等。從這些定義可以看出,nagios各個配置檔案之間互為關聯、彼此引用的。成功配置出一台nagios監控系統,必須要弄清楚每個配置檔案之間依賴與被依賴的關系,最重要的有四點
定義監控那些主機,主機組,服務和服務組
定義這個監控要用什麼指令實作
定義監控的時間段
定義主機或伺服器出現問題時要通知的聯系人和聯系人祖
配置nagios
為了能更清楚的說明問題,同時也為了維護友善,建議将nagios各個定義的對象建立獨立的配置檔案。
建立conf目錄來定義host主機
建立hostgroups.cfg檔案來定義主機組
用預設的contacts.cfg檔案來定義聯系人和聯系人組
用預設的commands.cfg檔案來定義指令
用預設的timeperiods.cfg來定義監控時間段
用預設的templetes.cfg檔案作為資源引用檔案
修改/usr/local/nagios/etc/nagios.cgf主配置檔案
2)修改/usr/local/nagios/etc/objects/commands.cfg
添加如下内容(定義check_nrpe監控指令)
修改/usr/local/nagios/etc/objects/contacts.cfg(定義監控伺服器聯系人)
建立/usr/local/nagios/etc/objects/hostgroups.cfg(定義主機組)
在/usr/local/nagios/etc/conf下面建立192.168.1.20.cfg檔案(用于監控192.168.1.20的主機存活,負載,程序)(所有内容需要手工輸入)
未完接下圖:
指令解釋:
define host{
use linux-server //定義使用的模闆
host_name nagios //被監控主機的名稱,最好别帶空格
alias nagios //别名
address 127.0.0.1 //被監控主機的IP位址
check_command check-host-alive
normal_check_interval 3 //正常檢測間隔時間
retry_check_interval 2 //重試檢測間隔時間
//監控的指令check-host-alive,這個指令來自commands.cfg,用來監控主機是否存活
max_check_attempts 5 //檢查失敗後重試的次數
check_period 24x7 //檢查的時間段24x7,同樣來自timeperiods.cfg中定義
notification_interval 10 //提醒的間隔,每隔10秒提醒一次
notification_period 24x7 //提醒的周期, 24x7,同樣來自timeperiods.cfg中定義
contact_groups admins //聯系人組,上面在contactgroups.cfg中定義的admins
notification_options d,u,r //指定什麼情況下提醒
}
重新開機nagios服務
7)發現錯誤,提示沒有添加聯系人組,解決方法:在
/usr/local/nagios/etc/objects/contacts.cfg檔案的最後添加代碼,如下圖:
重新開機nagios伺服器成功
通路網頁檢視狀态
(注意:關閉selinux或者開例外)
或者:
如果你開啟了selinux 需要配置如下二步:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
點選上圖中的localhost,可以檢視本機的狀态
配置被控端192.168.1.20(mysql和web)
安裝nagios插件
本章的實驗步驟比較多,安裝軟體太麻煩了,接下來我就使用腳本直接安裝了,腳本内容如下:
執行腳本:
2)安裝完成之後,需要打開vim /usr/local/nagios/etc/nrpe.cfg
添加nagios伺服器的位址
3)啟動nrpe
在nagios伺服器上測試nrpe運作是否正常,出現下面的資訊說明正确。
在浏覽器上通路
補充
也可在services.cfg檔案中添加192.168.1.20.cgf檔案中的參數
#vi /usr/local/nagios/etc/objects/services.cfg
内容如下:
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的監控頁面的顯示
總結!勤動腦多喝六個核桃