Nagios:一款開源的電腦系統(tǒng)和網絡監(jiān)控工具(上)
一、Nagios簡介
Nagios是一款開源的電腦系統(tǒng)和網絡監(jiān)視工具,能有效監(jiān)控Windows、Linux和Unix的主機狀態(tài),交換機路由器等網絡設置,打印機等。在系統(tǒng)或服務狀態(tài)異常時發(fā)出郵件或短信報警第一時間通知網站運維人員,在狀態(tài)恢復后發(fā)出正常的郵件或短信通知。
Nagios原名為NetSaint,由Ethan Galstad開發(fā)并維護至今。NAGIOS是一個縮寫形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻譯為圣徒,而"Agios"是"saint"的希臘表示方法。Nagios被開發(fā)在Linux下使用,但在Unix下也工作得非常好。
主要功能
- 網絡服務監(jiān)控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
- 主機資源監(jiān)控(CPU load、disk usage、system logs),也包括Windows主機(使用NSClient++ plugin)
- 可以指定自己編寫的Plugin通過網絡收集數據來監(jiān)控任何情況(溫度、警告……)
- 可以通過配置Nagios遠程執(zhí)行插件遠程執(zhí)行腳本
- 遠程監(jiān)控支持SSH或SSL加通道方式進行監(jiān)控
- 簡單的plugin設計允許用戶很容易的開發(fā)自己需要的檢查服務,支持很多開發(fā)語言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
- 包含很多圖形化數據Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
- 可并行服務檢查
- 能夠定義網絡主機的層次,允許逐級檢查,就是從父主機開始向下檢查
- 當服務或主機出現問題時發(fā)出通告,可通過email, pager, sms 或任意用戶自定義的plugin進行通知
- 能夠自定義事件處理機制重新激活出問題的服務或主機
- 自動日志循環(huán)
- 支持冗余監(jiān)控
- 包括Web界面可以查看當前網絡狀態(tài),通知,問題歷史,日志文件等
#p#
二、Nagios工作原理
Nagios的功能是監(jiān)控服務和主機,但是他自身并不包括這部分功能,所有的監(jiān)控、檢測功能都是通過各種插件來完成的。
啟動Nagios后,它會周期性的自動調用插件去檢測服務器狀態(tài),同時Nagios會維持一個隊列,所有插件返回來的狀態(tài)信息都進入隊列,Nagios每次都從隊首開始讀取信息,并進行處理后,把狀態(tài)結果通過web顯示出來。
Nagios提供了許多插件,利用這些插件可以方便的監(jiān)控很多服務狀態(tài)。安裝完成后,在nagios主目錄下的/libexec里放有nagios自帶的可以使用的所有插件,如,check_disk是檢查磁盤空間的插件,check_load是檢查CPU負載的,等等。每一個插件可以通過運行./check_xxx –h 來查看其使用方法和功能。
Nagios可以識別4種狀態(tài)返回信息,即 0(OK)表示狀態(tài)正常/綠色、1(WARNING)表示出現警告/黃色、2(CRITICAL)表示出現非常嚴重的錯誤/紅色、3(UNKNOWN)表示未知錯誤/深黃色。Nagios根據插件返回來的值,來判斷監(jiān)控對象的狀態(tài),并通過web顯示出來,以供管理員及時發(fā)現故障。
四種監(jiān)控狀態(tài)
再說報警功能,如果監(jiān)控系統(tǒng)發(fā)現問題不能報警那就沒有意義了,所以報警也是nagios很重要的功能之一。但是,同樣的,Nagios 自身也沒有報警部分的代碼,甚至沒有插件,而是交給用戶或者其他相關開源項目組去完成的。
Nagios 安裝,是指基本平臺,也就是Nagios軟件包的安裝。它是監(jiān)控體系的框架,也是所有監(jiān)控的基礎。
打開Nagios官方的文檔,會發(fā)現Nagios基本上沒有什么依賴包,只要求系統(tǒng)是Linux或者其他Nagios支持的系統(tǒng)。不過如果你沒有安裝apache(http服務),那么你就沒有那么直觀的界面來查看監(jiān)控信息了,所以apache姑且算是一個前提條件。關于apache的安裝,網上有很多,照著安裝就是了。安裝之后要檢查一下是否可以正常工作。
知道Nagios 是如何通過插件來管理服務器對象后,現在開始研究它是如何管理遠端服務器對象的。Nagios 系統(tǒng)提供了一個插件NRPE。Nagios 通過周期性的運行它來獲得遠端服務器的各種狀態(tài)信息。它們之間的關系如下圖所示:
Nagios 通過NRPE 來遠端管理服務
- Nagios 執(zhí)行安裝在它里面的check_nrpe 插件,并告訴check_nrpe 去檢測哪些服務。
- 通過SSL,check_nrpe 連接遠端機子上的NRPE daemon
- NRPE 運行本地的各種插件去檢測本地的服務和狀態(tài)(check_disk,..etc)
- 最后,NRPE 把檢測的結果傳給主機端的check_nrpe,check_nrpe 再把結果送到Nagios狀態(tài)隊列中。
- Nagios 依次讀取隊列中的信息,再把結果顯示出來。
#p#
三、實驗環(huán)境
Host Name | OS | IP | Software |
Nagios-Server | CentOS release 6.3 (Final) | 192.168.1.108 |
Apache、Php、Nagios、nagios-plugins |
Nagios-Linux | CentOS release 5.8 (Final) | 192.168.1.111 | nagios-plugins、nrpe |
Nagios-Windows | Windows XP | 192.168.1.113 | NSClient++ |
Server 安裝了nagios軟件,對監(jiān)控的數據做處理,并且提供web界面查看和管理。當然也可以對本機自身的信息進行監(jiān)控。
Client 安裝了NRPE等客戶端,根據監(jiān)控機的請求執(zhí)行監(jiān)控,然后將結果回傳給監(jiān)控機。
防火墻已關閉/iptables: Firewall is not running.
SELINUX=disabled
四、實驗目標
#p#
五、Nagios服務端安裝
5.1 基礎支持套件:gcc glibc glibc-common gd gd-devel xinetd openssl-devel
- # rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel
如果系統(tǒng)中沒有這些套件,使用yum 安裝
- # yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
5.2 創(chuàng)建nagios用戶和用戶組
- # useradd -s /sbin/nologin nagios
- # mkdir /usr/local/nagios
- # chown -R nagios.nagios /usr/local/nagios
查看nagios 目錄的權限
- # ll -d /usr/local/nagios/
5.3 編譯安裝Nagios
- # wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz
- # tar zxvf nagios-3.4.3.tar.gz
- # cd nagios
- # ./configure --prefix=/usr/local/nagios
# make all
# make install
# make install-init
# make install-commandmode
# make install-config
# chkconfig --add nagios
# chkconfig --level 35 nagios on
# chkconfig --list nagios
5.4 驗證程序是否被正確安裝
切換目錄到安裝路徑(這里是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 這五個目錄,如果存在則可以表明程序被正確的安裝到系統(tǒng)了。Nagios 各個目錄用途說明如下:
bin | Nagios 可執(zhí)行程序所在目錄 |
etc | Nagios 配置文件所在目錄 |
sbin | Nagios CGI 文件所在目錄,也就是執(zhí)行外部命令所需文件所在的目錄 |
share | Nagios網頁文件所在的目錄 |
libexec | Nagios 外部插件所在目錄 |
var | Nagios 日志文件、lock 等文件所在的目錄 |
var/archives | Nagios 日志自動歸檔目錄 |
var/rw | 用來存放外部命令文件的目錄 |
5.5 安裝Nagios 插件
- # wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz
- # tar zxvf nagios-plugins-1.4.16.tar.gz
- # cd nagios-plugins-1.4.16
- # ./configure --prefix=/usr/local/nagios
- # make && make install
5.6 安裝與配置Apache和Php
Apache 和Php 不是安裝nagios 所必須的,但是nagios提供了web監(jiān)控界面,通過web監(jiān)控界面可以清晰的看到被監(jiān)控主機、資源的運行狀態(tài),因此,安裝一個web服務是很必要的。
需要注意的是,nagios在nagios3.1.x版本以后,配置web監(jiān)控界面時需要php的支持。這里我們下載的nagios版本為nagios-3.4.3,因此在編譯安裝完成apache后,還需要編譯php模塊,這里選取的php版本為php5.4.10。
a. 安裝Apache
- # wget http://archive.apache.org/dist/httpd/httpd-2.2.23.tar.gz
- # tar zxvf httpd-2.2.23.tar.gz
- # cd httpd-2.2.23
- # ./configure --prefix=/usr/local/apache2
- # make && make install
若出現錯誤:
則在編譯時入加 --with-included-apr 即可解決。
b. 安裝Php
- # wget http://cn2.php.net/distributions/php-5.4.10.tar.gz
- # tar zxvf php-5.4.10.tar.gz
- # cd php-5.4.10
- # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
# make && make install
c. 配置apache
找到apache 的配置文件/usr/local/apache2/conf/httpd.conf
找到:
User daemon
Group daemon
修改為
User nagios
Group nagios
然后找到
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
修改為
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
接著增加如下內容:
AddType application/x-httpd-php .php
為了安全起見,一般情況下要讓nagios 的web 監(jiān)控頁面必須經過授權才能訪問,這需要增加驗證配置,即在httpd.conf 文件最后添加如下信息:
- #setting for nagios
- 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>
d. 創(chuàng)建apache目錄驗證文件
在上面的配置中,指定了目錄驗證文件htpasswd,下面要創(chuàng)建這個文件:
- # /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd david
這樣就在/usr/local/nagios/etc 目錄下創(chuàng)建了一個htpasswd 驗證文件,當通過http://192.168.1.108/nagios/ 訪問時就需要輸入用戶名和密碼了。
e. 查看認證文件的內容
- # cat /usr/local/nagios/etc/htpasswd
f. 啟動apache 服務
- # /usr/local/apache2/bin/apachectl start
到這里 nagios 的安裝也就基本完成了,你可以通過web來訪問了。