一步步構(gòu)建Nagios監(jiān)控報警系統(tǒng)
Nagios的功能及特性:
1)監(jiān)控網(wǎng)絡(luò)服務(wù)(HTTP、POP3、SMTP、PING、MySQL等)
2)監(jiān)控主機資源(磁盤空間利用率、內(nèi)存利用率、CPU負載等)
3)簡潔的插件設(shè)計接口,使得用戶可以輕松開發(fā)所需的檢測腳本
4)并行服務(wù)模式
5)輕松描述網(wǎng)絡(luò)結(jié)構(gòu),并且能夠區(qū)辨“宕機”和“主機不可達”
6)通過郵件或用戶自定義的方式將主機或服務(wù)的工作狀態(tài)變化情況通知給管理員6)當(dāng)服務(wù)或主機問題產(chǎn)生與解決時將告警發(fā)送給聯(lián)系人(通過EMail、短信、用戶定義方式) 可以通過飛信,等方式實現(xiàn)時,既可傳遞給管理員,可高效的保證服務(wù)器的維護。
7)自動日志滾動
8)支持以冗余方式進行主機監(jiān)控
9)可以通過web方式直觀的查看當(dāng)前網(wǎng)絡(luò)狀態(tài)、通知和問題歷史、日志文件等等,此組件為可選
Nagios通常由一個主程序(Nagios)、一個插件程序(Nagios-plugins)和四個可選的ADDON(NRPE、NSCA、NSClient++和NDOUtils)組成
Nagios的監(jiān)控工作都是通過插件實現(xiàn)的,因此,Nagios和Nagios-plugins是服務(wù)器端工作所必須的組件。而四個ADDON
(1)NRPE:用來在監(jiān)控的遠程Linux/Unix主機上執(zhí)行腳本插件以實現(xiàn)對這些主機資源的監(jiān)控
(2)NSCA:用來讓 被監(jiān)控的遠程Linux/Unix主機主動將監(jiān)控信息發(fā)送給Nagios服務(wù)器(這在冗余監(jiān)控模式中特別要用到)
(3)NSClient++:用來監(jiān)控 Windows主機時安裝在Windows主機上的組件
(4)NDOUtils:則用來將Nagios的配置信息和各event產(chǎn)生的數(shù)據(jù)存入數(shù)據(jù)庫,以實現(xiàn) 這些數(shù)據(jù)的快速檢索和處理
這四個ADDON(附件)中,NRPE和NSClient++工作于客戶端,NDOUtils工作于服務(wù)器端,而NSCA則需要同時安裝在服務(wù)器端和客戶端
Nagios各組件之間的調(diào)用關(guān)系:
Nagios的安裝:
Nagios基本組件的運行依賴于httpd、gcc和gd。可以通過以下命令來檢查nagios所依賴的rpm包是否已經(jīng)完全安裝:
yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server
如果您的系統(tǒng)開啟了selinux服務(wù),則默認系統(tǒng)將拒絕nagios web cgi程序的運行,所以我們應(yīng)檢查系統(tǒng)是否開啟了selinux
getenforce
如果上面命令的結(jié)果顯示開啟了selinux服務(wù),通過下面的命令暫時性的將其關(guān)閉:
setenforce 0
如果想在以后完全關(guān)閉selinux,可以通過編輯/etc/sysconfig/selinux文件,將其中的selinux后面的值“force”修改為“disable”即可。
當(dāng)然,我們可以通過以下方式將nagios的CGI程序運行于SELinux/targeted模式而不用關(guān)閉selinux:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
chcon -R -t httpd_sys_content_t /usr/local/nagios/share
但是為了實驗?zāi)軜?gòu)成功我們還是關(guān)閉selinux
在當(dāng)前主機上架設(shè)nagios的過程:
groupadd nagcmd
useradd -m nagios
usermod -a -G nagcmd nagios
把apache加入到nagcmd組,以便于在通過web Interface操作nagios時能夠具有足夠的權(quán)限:
usermod -a -G nagcmd apache
2、編譯安裝nagios:
tar zxf nagios-3.2.3tar.gz
cd nagios
./configure --with-command-group=nagcmd --enable-event-broker --prefix=/var/www/nagios
make all 將所有的編譯環(huán)境都進行編譯
make install
make install-init 編譯安裝開機啟動程序
make install-config 編譯安裝配置文件
make install-commandmode 編譯安裝其命令
make install-webconf 編譯安裝web的配置文件,在httpd的配置文件目錄(conf.d)中創(chuàng)建Nagios的Web程序配置文件,能夠讓我們使用web對其進行管理
由此我們可以看出nagios的安裝非常靈活,當(dāng)我們需要哪個程序的時候可以有針對性的安裝。
htpasswd -c /var/www/nagios/etc/htpasswd.users nagiosadmin
/var/www
以上過程配置結(jié)束以后需要重新啟動httpd:
service httpd restart
3、編譯、安裝nagios-plugins
nagios的所有監(jiān)控工作都是通過插件完成的,因此,在啟動nagios之前還需要為其安裝官方提供的插件。
tar zxf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql
在編譯完成之后我們要仔細查看編譯的過程,看是否有跳過mysql的警告語句,具體顯示內(nèi)容如下:
如果有,應(yīng)首先確定mysql的庫文件位置沒有錯,然后給編譯的過程指定mysql庫文件的位置,方法如下:
cp /usr/lib/mysql到/usr/lib/pkgconfig
指定之后重新執(zhí)行 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql
yum install mysql-devel -y mysql的這個組件就是解決在編譯時無法找到mysql的一些組件或是其他在編譯中產(chǎn)生的怪異問題
這步正確完成之后,就進行如下的步驟:
make
4、配置并啟動Nagios
(1)把nagios添加為系統(tǒng)服務(wù)并將之加入到自動啟動服務(wù)隊列:
chkconfig --add nagios
chkconfig nagios on
(2)檢查其主配置文件的語法是否正確:
/var/www/nagios/bin/nagios -v /var/www/nagios/etc/nagios.cfg
如果顯示如下,則表示語法正確
(3)如果上面的語法檢查沒有問題,接下來就可以正式啟動nagios服務(wù)了:
service nagios start
http://192.168.0.82/nagios 這是主機的IP,根據(jù)自己主機的IP進行相應(yīng)的修改
如果成功的話將出現(xiàn)如下內(nèi)容,進行身份認證,輸入我們之前設(shè)定的web認證賬號和密碼:
如果一切順利,成功登錄后將顯示如下部分畫面
到此為止,nagios的監(jiān)控端已經(jīng)配置完成,現(xiàn)在我們只能進行當(dāng)前主機的狀態(tài)監(jiān)控,如圖
被監(jiān)控端的操作系統(tǒng)類型是很重要的,在開始的時候我們介紹了不同操作系統(tǒng)的被監(jiān)控端應(yīng)進行相應(yīng)不同的的配置:
如果被監(jiān)控端是windows操作系統(tǒng),我們采取如下配置:
首先關(guān)閉windows上的防火墻
1. 被監(jiān)控端安裝NSClient++-0.3.8-Win32.msi
在安裝過程中只需要填寫nagios服務(wù)的主機地址,并查看任務(wù)管理器中的進行是否已經(jīng)開啟:如圖
2. 安裝完成后修改配置文件NSC.ini把需要的庫都打開,
找到配置文件的方法:
這個程序的配置文件默認為C:\Program Files\NSClient++下的NSC.ini文件
打開這個文件進行如下修改:
(1)、打開需要的庫文件,將行的最前端帶有“;”的,將這個符號刪除即為打開。
具體修改結(jié)果如下:
[modules]
NRPEListener.dll
NSClientListener.dll
NSCAAgent.dll
CheckWMI.dll
FileLogger.dll
Checksystem.dll
CheckEventLog.dll
CheckHelpers.dll
;# NSCLIENT++ MODULES
;# A list with DLLs to load at startup.
; You will need to enable some of these for NSClient++ to work.
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
; * *
; * N O T I C E ! ! ! - Y O U H A V E T O E D I T T H I S *
; * *
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
FileLogger.dll
CheckSystem.dll
CheckDisk.dll
NSClientListener.dll
NRPEListener.dll
SysTray.dll
CheckEventLog.dll
CheckHelpers.dll
CheckWMI.dll
(2)、配置nagios服務(wù)器的IP地址:
修改結(jié)果如下:
;# ALLOWED HOST ADDRESSES
allowed_hosts=192.168.0.82
保存配置文件即可
3. 在監(jiān)控服務(wù)器上修改nagios配置文件nagios.cfg
為了配置的方便進行我們對nagios的主配置文件做一個連接
ln -vs /var/www/nagios/etc/nagios.cfg /etc/nagios.cfg
對配置文件/etc/nagios.cfg進行如下修改
去掉cfg_file=/var/www/nagios/etc/objects/windows.cfg 的注釋
修改/var/www/nagios/etc/objects/windows.cfg文件,修改結(jié)果如下
define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 192.168.0.254 ; windows主機的IP,我的為192.168.0.254
}
保存退出即可:
重新啟動nagios服務(wù)
service nagios restart
如圖顯示則表示監(jiān)控成功:
到此,nagios對windows監(jiān)控已經(jīng)成功,關(guān)于對linux的監(jiān)控以及被監(jiān)控的主機狀態(tài)發(fā)生改變nagios為我們進行報警的配置將在下篇文章中進行詳細的介紹。
聯(lián)系客服