Nagios 監(jiān)控系統(tǒng)架設(shè)全攻略
Nagios 全名為(Nagios Ain’t Goona Insist on Saintood),最初項(xiàng)目名字是 NetSaint。它是一款免費(fèi)的開源 IT 基礎(chǔ)設(shè)施監(jiān)控系統(tǒng),其功能強(qiáng)大,靈活性強(qiáng),能有效監(jiān)控 Windows 、Linux、VMware 和 Unix 主機(jī)狀態(tài),交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)置等。一旦主機(jī)或服務(wù)狀態(tài)出現(xiàn)異常時(shí),會(huì)發(fā)出郵件或短信報(bào)警第一時(shí)間通知 IT 運(yùn)營人員,在狀態(tài)恢復(fù)后發(fā)出正常的郵件或短信通知。Nagios 結(jié)構(gòu)簡單,可維護(hù)性強(qiáng),越來越受中小企業(yè)青睞,以及運(yùn)維和管理人員的使用。同時(shí)提供一個(gè)可選的基于瀏覽器的 Web 界面,方便管理人員查看系統(tǒng)的運(yùn)行狀態(tài),網(wǎng)絡(luò)狀態(tài)、服務(wù)狀態(tài)、日志信息,以及其他異?,F(xiàn)象。
Nagios 結(jié)構(gòu)說明
Nagios 結(jié)構(gòu)上來說, 可分為核心和插件兩個(gè)部分。Nagios 的核心部分只提供了很少的監(jiān)控功能,因此要搭建一個(gè)完善的 IT 監(jiān)控管理系統(tǒng),用戶還需要在 Nagios 服務(wù)器安裝相應(yīng)的插件,插件可以從 Nagios 官方網(wǎng)站下載 http://www.nagios.org/,也可以根據(jù)實(shí)際要求自己編寫所需的插件。
Nagios 可實(shí)現(xiàn)的功能特性
- 監(jiān)控網(wǎng)絡(luò)服務(wù)(SMTP、POP3、HTTP、FTP、PING 等);
- 監(jiān)控本機(jī)及遠(yuǎn)程主機(jī)資源(CPU 負(fù)荷、磁盤利用率、進(jìn)程 等);
- 允許用戶編寫自己的插件來監(jiān)控特定的服務(wù),方便地?cái)U(kuò)展自己服務(wù)的檢測方法,支持多種開發(fā)語言(Shell、Perl、Python、PHP 等)
- 具備定義網(wǎng)絡(luò)分層結(jié)構(gòu)的能力,用"parent"主機(jī)定義來表達(dá)網(wǎng)絡(luò)主機(jī)間的關(guān)系,這種關(guān)系可被用來發(fā)現(xiàn)和明晰主機(jī)宕機(jī)或不可達(dá)狀態(tài);
- 當(dāng)服務(wù)或主機(jī)問題產(chǎn)生與解決時(shí)將告警發(fā)送給聯(lián)系人(通過 EMail、短信、用戶定義方式);
- 可以支持并實(shí)現(xiàn)對主機(jī)的冗余監(jiān)控;
- 可用 WEB 界面用于查看當(dāng)前的網(wǎng)絡(luò)狀態(tài)、通知和故障歷史、日志文件等;
Nagios 監(jiān)控實(shí)現(xiàn)原理
Nagios 軟件需安裝在一臺(tái)獨(dú)立的服務(wù)器上運(yùn)行,這臺(tái)服務(wù)器稱為監(jiān)控中心,監(jiān)控中心服務(wù)器可以采用 Linux 或 Unix 操作系統(tǒng);每一臺(tái)被監(jiān)視的硬件主機(jī)或服務(wù)都運(yùn)行一個(gè)與監(jiān)控中心服務(wù)器進(jìn)行通信的 Nagios 軟件后臺(tái)程序,也可以理解為 Agent 或插件均可。監(jiān)控中心服務(wù)器讀取配置文件中的指令與遠(yuǎn)程的守護(hù)程序進(jìn)行通信,并且指示遠(yuǎn)程的守護(hù)程序進(jìn)行必要的檢查。雖然 Nagios 軟件必須在 Linux 或 Unix 操作系統(tǒng)上運(yùn)行,但是遠(yuǎn)程被監(jiān)控的機(jī)器可以是任何能夠與其進(jìn)行通信的主機(jī),根據(jù)遠(yuǎn)程主機(jī)返回的應(yīng)答,Naigos 將依據(jù)配置進(jìn)行回應(yīng);接著 Nagios 將通過本地的機(jī)器進(jìn)行測試,如果檢測返回值不正確,Nagios 將通過一種或多種方式報(bào)警;具體原理如下圖所示:
圖 1. Nagios 監(jiān)控原理圖
Nagios 安裝與配置
- Nagios 安裝
安裝前的準(zhǔn)備工作
清單 1. Nagios 安裝前準(zhǔn)備操作
- # wget http://apt.sw.be/redhat/el6/en/x86_64/RPMS.dag/\
- rpmforge-release-0.3.6-1.el6.rf.x86_64.rpm
- # rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
- # rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86.rpm
安裝相關(guān)軟件包
清單 2. 安裝軟件包
- #yum install gd fontconfig-devel libjpeg-devel libpng-devel gd-devel perl-GD \
- openssl-devel php mailx postfix cpp gcc gcc-c++ libstdc++ glib2-devel
- libtoul-ltdl-devel
創(chuàng)建用戶和組
清單 3. 創(chuàng)建用戶和組
- #groupadd -g 6000 nagios
- #groupadd -g 6001 nagcmd
- #useradd -u 6000 -g nagios -G nagcmd -d /home/nagios -c "Nagios Admin" nagios
編譯安裝 Nagios
清單 4. 編譯安裝 Nagios
- # tar xzfv nagios-3.2.0.tar.gz
- # cd nagios-3.2.0
- # ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios \
- --with-nagios-group=nagios --with-command-user=nagios
- --with-command-group=nagcmd --enable-event-broker --enable-nanosleep
- --enable-embedded-perl --with-perlcache
- #make all
- #make install
- #make install-init
- #make install-commandmode
- #make install-webconf
- #make install-config
安裝與配置 Apache
由于 Nagios 提供了 Web 監(jiān)控界面,可通過 Web 界面的方式可以清晰地看到被監(jiān)控的主機(jī)和資源的運(yùn)行狀態(tài)等,因此安裝需要安裝 Apache 服務(wù)。 同時(shí)配置 Web 監(jiān)控界面是需要 PHP 模塊的支持,這里均選用當(dāng)前系統(tǒng)自帶軟件包即可,也可通過源碼包編譯安裝。
(1)安裝 Apache 和 php
- #yum install httpd php*
(2)配置 Apache
在 Apache 配置文件件/etc/httpd/conf/httpd.conf 中找到:
- DirectoryIndex index.html index.html.var
將其修改為:
- DirectoryIndex index.html index.php
再在 Apache 配置文件下增加如下內(nèi)容:
- AddType application/x-httpd-php .php
以上兩處主要用于增加 php 格式的支持。同時(shí)為了安全,需要經(jīng)過授權(quán)才能訪問 Nagios 的 Web 監(jiān)控界面,所以需要在配置文件/etc/httpd/conf/http.conf 或 /etc/httpd/conf.d/nagios.conf 增加訪問控制配置,若定義在 httpd.conf 文件中,將下圖的語句加入到 httpd.conf 文件最后面即可。
圖 2. Nagios 訪問控制設(shè)置
(3)設(shè)置用戶訪問控制
- # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
設(shè)置權(quán)限且重啟 Apache
清單 5. 權(quán)限設(shè)定與啟動(dòng)服務(wù)
- #chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users
- # usermod -a -G nagios,nagcmd apache
- # /etc/init.d/httpd restart
安裝 Postfix 郵件服務(wù)
Nagios 監(jiān)控平臺(tái)支持郵件報(bào)警功能,所以需要安裝郵件服務(wù)。這里采用互聯(lián)網(wǎng)比較主流的 MTA —Postfix. 也可根據(jù)自己的生產(chǎn)環(huán)境去定義, 如: Sendmail、Qmail 等。由于 Nagios 只用到了 Postfix 的郵件發(fā)送功能,所以這里不需要對 Postfix 郵件服務(wù)作過多配置,安裝 Postfix 套件,啟動(dòng)服務(wù)并在下次服務(wù)器重啟自動(dòng)加載即可。具體如下命令:
清單 6. Postifx 安裝與配置
- #yum install postifx
- #chkconfig postfix on; /etc/init.d/postfix restart
安裝 Nagios 插件
Naigos 提供的各種監(jiān)控功能基本上是通過插件來完成的,而 Nagios 的核心指提供了很少的功能,因此安裝插件是非常有必要的。Nagios 官網(wǎng)提供了很多不同版塊的插件應(yīng)用,同時(shí)插件版本與 Nagios 版本也沒有什么關(guān)聯(lián),如果支持漢化功能,則需要找到與之匹配的漢化軟件包,否則會(huì)導(dǎo)致部分功能不能完成運(yùn)行,這里保持默認(rèn)英文,如下面的安裝細(xì)節(jié):
清單 7. Nagios 插件安裝
- # wget http://ovh.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
- # tar xzf nagios-plugins-1.4.14.tar.gz
- # cd nagios-plugins-1.4.14
- # ./configure --with-nagios-user=nagios --with-nagios-group=nagios \
- --with-command-user=nagios --with-command-group=nagcmd \
- --prefix=/usr/local/nagios
- # make all
- # make install
- # chmod 755 /usr/local/nagios
這樣 Nagios 的插件就安裝完成了,通過查看 Nagios 主程序目錄,/usr/local/nagios/linexec 目錄下可以看到很多的外部插件執(zhí)行文件,如下圖:
圖 3. Nagios 插件腳本示例
- 重啟 Nagios 服務(wù)
清單 8. Nagios 與 Apache 服務(wù)啟動(dòng)與設(shè)定
- #/etc/init.d/nagios restart
- #/etc/init.d/httpd restart
- #chkconfig httpd on; chkconfig naigos on
- 禁用 Selinux 和 iptables
Selinux 和 Iptables 是 Linux 系統(tǒng)提供的安全防護(hù)機(jī)制,主要用來防護(hù) Linux 系統(tǒng)下的服務(wù)或應(yīng)用程序不受外界安全攻擊等。一般企業(yè)考慮到 Nagios 監(jiān)控平臺(tái)的安全可靠性,都會(huì)采用硬件的防火墻或其他安全設(shè)備來對服務(wù)器進(jìn)行防護(hù)。同時(shí)此部分不是此平臺(tái)描述的重點(diǎn), 這里就不作過多的闡述。#p#
Nagios 監(jiān)控平臺(tái)訪問
到目前為之 Nagios 基本安裝成功,若要投入生產(chǎn)環(huán)境,還需要安裝其他相應(yīng)的插件及配置,否則是無法提供相應(yīng)的監(jiān)控等功能。 通過瀏覽器,在地址欄輸入: http://IPAddress/nagios, 輸入用戶名及密碼即可訪問 Naigos 登錄界面。
圖 4. Nagios 登錄界面
- Nagios 配置
Nagios 目錄與相關(guān)配置文件說明
Nagios 安裝完成后,/usr/local/nagios/目錄下會(huì)生成 nagios 相關(guān)目錄及配置文件,默認(rèn)的的配置文件在/usr/local/nagios/etc 目錄下。關(guān)于詳細(xì)的描述,見下表:
表 1. Nagios 相關(guān)目錄的名稱及用途
表 2. 配置文件的作用概述
Nagios 配置文件間的關(guān)聯(lián)
Nagios 的配置過程涉及幾個(gè)定義有:主機(jī)、主機(jī)組、服務(wù)、服務(wù)組、聯(lián)系人、聯(lián)系人組、監(jiān)控時(shí)間和監(jiān)控命令等,從這些定義可以看出,Nagios 的各個(gè)配置文件之間是互為關(guān)聯(lián)、彼此引用的。成功配置一臺(tái) Nagios 監(jiān)控系統(tǒng),需要掌握每個(gè)配置文件之間依賴與被依賴的關(guān)系,可從下面四個(gè)步驟來入手,第一步:定義哪些主機(jī)、主機(jī)組、服務(wù)和服務(wù)組,第二步:要定義這個(gè)監(jiān)控要通過什么命令實(shí)現(xiàn),第三步:要定義監(jiān)控的時(shí)間段,第四步:要定義主機(jī)或服務(wù)出現(xiàn)問題時(shí)要通知的聯(lián)系人和 聯(lián)系人組;強(qiáng)烈建議依據(jù)以上順序?qū)?Nagios 系統(tǒng)進(jìn)行相關(guān)配置。
- Nagios 配置設(shè)定
Nagios 安裝成功后,會(huì)在/usr/loca/nagios 目下生成相應(yīng)的主機(jī),服務(wù)、命令、模板等配置文件,同時(shí)也可看到之前設(shè)置的 Nagios 授權(quán)目錄認(rèn)證文件 htpasswed.users,而 Object 目錄是存放一些配置文件模板,主要用于定義 Nagios 對象,具體如下圖:
圖 5. Nagios 配置目錄與文件
圖 6. Nagios 對象模板文件
- 自定義監(jiān)控目錄
默認(rèn)情況下 nagios.cfg 會(huì)啟用一些對象配置文件如:comands.cfg、 contacts.cfg localhost.cfg 、contacts.cfg 、windows.cfg 等,為了更好的對 Nagios 平臺(tái)的管理與日后的維護(hù),這里采用了自定義目錄在/usr/local/nagios/etc/目錄下創(chuàng)建一個(gè) monitor 文件夾,用來保存所管理被監(jiān)控的對象。同時(shí)注釋 nagios.cfg 配置文件默認(rèn)定義的對象配置文件,并在 nagios.cfg 文件增加一行:cfg_dir=/usr/local/nagios/etc/monitor 即可, 如下圖:
圖 7. Nagios 啟用自定義目錄
Nagios 的配置大多是對監(jiān)控對象配置文件進(jìn)行修改配置,這里需復(fù)制了 objects 目錄下的所有對象配置文件模板,同時(shí)在 monitor 文件下創(chuàng)建了獨(dú)立的配置文件 hosts.cfg 和 service.cfg 來定義主機(jī)和服務(wù),至于聯(lián)系人和監(jiān)控的時(shí)間段這里保持默認(rèn)配置。 如下圖:
圖 8. 自定義目錄下對象配置文件
下面主要描述下此平臺(tái)架設(shè)相關(guān)的幾個(gè)主要配置文件具體含義,分別為:templates.cfg、hosts.cf、services.cfg.
templates.cfg 文件
表 3. 默認(rèn)模板配置文件
- define contact{
- name generic-contact #聯(lián)系人名稱
- service_notification_period 24x7 #當(dāng)服務(wù)出現(xiàn)異常時(shí),發(fā)送通知的時(shí)間段,時(shí)間段是 7x24 小時(shí)
- host_notification_period 24x7 #當(dāng)主機(jī)出現(xiàn)異常時(shí),發(fā)送通知的時(shí)間段,時(shí)間段是 7x24 小時(shí)
- service_notification_options w,u,c,r #這個(gè)定義的是“通知可以被發(fā)出的情況”。w 即 warning,表示警告狀態(tài),u 即 unknown,表示不明狀態(tài),c 即 criticle,表示緊急狀態(tài),r 即 recover,表示恢復(fù)狀態(tài)
- host_notification_options d,u,r #定義主機(jī)在什么狀態(tài)下需要發(fā)送通知給使用者,d 即 down,表示宕機(jī)狀態(tài),u 即 unreachable,表示不可到達(dá)狀態(tài),r 即 recovery,表示重新恢復(fù)狀態(tài)。
- service_notification_commands notify-service-by-email #服務(wù)故障時(shí),發(fā)送通知的方式,可以是郵件和短信,這里發(fā)送的方式是郵件,其中“notify-service-by-email”在 commands.cfg 文件中定義。
- host_notification_commands notify-host-by-email #主機(jī)故障時(shí),發(fā)送通知的方式,可以是郵件和短信,這里發(fā)送的方式是郵件,其中“notify-host-by-email”在 commands.cfg 文件中定義。
- }
- define host{
- name linux-server #主機(jī)名稱
- use generic-host #use 表示引用,也就是將主機(jī) generic-host 的所有屬性引用到 linux-server 中來,在 nagios 配置中,很多情況下會(huì)用到引用。
- check_period 24x7 #這里的 check_period 告訴 nagios 檢查主機(jī)的時(shí)間段
- check_interval 5 #nagios 對主機(jī)的檢查時(shí)間間隔,這里是 5 分鐘。
- retry_interval 1 #重試檢查時(shí)間間隔,單位是分鐘。
- max_check_attempts 10 #nagios 對主機(jī)的最大檢查次數(shù), check_command check-host-alive #指定檢查主機(jī)狀態(tài)的命令,其中“check-host-alive”在 commands.cfg 文件中定義。
- notification_period workhours #主機(jī)故障時(shí),發(fā)送通知的時(shí)間范圍,其中“workhours”在 timeperiods.cfg 中進(jìn)行了定義,下面會(huì)陸續(xù)講到。
- notification_interval 30 #在主機(jī)出現(xiàn)異常后,故障一直沒有解決,nagios 再次對使用者發(fā)出通知的時(shí)間。單位是分鐘
- notification_options d,u,r #定義主機(jī)在什么狀態(tài)下可以發(fā)送通知給使用者,d 即 down,表示宕機(jī)狀態(tài),u 即 unreachable,表示不可到達(dá)狀態(tài),r 即 recovery,表示重新恢復(fù)狀態(tài)。
- contact_groups admins #指定聯(lián)系人組,這個(gè)“admins”在 contacts.cfg 文件中定義。
- define service{
- name local-service #定義一個(gè)服務(wù)名稱
- use generic-service #引用服務(wù) local-service 的屬性信息,local-service 主機(jī)在 templates.cfg 文件中進(jìn)行了定義
- max_check_attempts 4 #最大檢測 4 次,為了確定服務(wù)最終狀態(tài)
- normal_check_interval 5 #每 5 分鐘檢測一次
- retry_check_interval 1 #每 1 分鐘重新檢測服務(wù),最終的狀態(tài)能被確定
- }
host.cfg 文件
此文件默認(rèn)情況下不存在,需要手動(dòng)創(chuàng)建。hosts.cfg 主要用來指定被監(jiān)控的主機(jī)地址及相關(guān)屬性信息。配置如下表:
表 4. 定義主機(jī)配置實(shí)例
- define host {
- use linux-server #引用主機(jī) linux-server 的屬性信息,linux-server 主機(jī)在 templates.cfg 文件中進(jìn)行了定義。
- host_name DirHost162 #被監(jiān)控主機(jī)名
- alias RHEL6.3_CSDA-FVT-Server #被監(jiān)控主機(jī)別名
- address 192.168.1.162 ##被監(jiān)控主機(jī) IP 地址
- }
- ........
services.cfg 文件
此文件在默認(rèn)情況下也不存在,需要手動(dòng)創(chuàng)建。services.cfg 文件主要用于定義監(jiān)控的服務(wù)和主機(jī)資源,例如監(jiān)控 HTTP 服務(wù)、FTP 服務(wù)、主機(jī)磁盤空間、主機(jī)系統(tǒng)負(fù)載等。
表 5. 定義服務(wù)配置
- #Define DirHost162
- define service{
- use local-service #引用服務(wù) local-service 的屬性信息,local-service 主機(jī)在 templates.cfg 文件中進(jìn)行了定義。
- host_name DirHost162 #被監(jiān)控主機(jī)名
- service_description SSH #監(jiān)控的服務(wù)
- check_command check_ssh # nagios 插件監(jiān)控指令
- }
- define service{
- use local-service,services-pnp
- host_name DirHost162
- service_description SSHD
- check_command check_tcp!22 # 使用的檢測命令, 同時(shí)多個(gè)參數(shù)匹配用 “!” 分隔,如:check_ping!100.0,20%!500.0,60%
- }
- …….
#p#
Nagios 運(yùn)行與維護(hù)
1.驗(yàn)證 Nagios 配置文件的正確性
- #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios 提供的這個(gè)驗(yàn)證功能非常有用,如果你的配置文件有語法或配置錯(cuò)誤,它會(huì)顯示出錯(cuò)的配置文件及在文件中哪一行。檢測結(jié)果中的報(bào)警信息通常是可以忽略的,因?yàn)橐话阒皇墙ㄗh性的提示。
2.利用別名簡化 Nagios 配置檢測機(jī)制
在當(dāng)前用戶下的.bashrc 文件增加一行 alias nagioscheck 語句,如下表:
圖 9. 簡化 Nagios 配置檢測機(jī)制
- # source /root/.bashrc
3.啟動(dòng) Nagios 服務(wù)
清單 9. 通過初始化腳本啟動(dòng) Nagios
- #/etc/init.d/nagios start|restart|stop 或者 service nagios start
清單 10. 手工方式啟動(dòng) Nagios
通過 Nagios 命令的-d 參數(shù)來啟動(dòng) nagios 過護(hù)進(jìn)程。
- #/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
Nagios 性能分析圖標(biāo)的作用
Nagios 對服務(wù)或主機(jī)監(jiān)控的是一個(gè)瞬時(shí)狀態(tài),有時(shí)候系統(tǒng)管理員需要了解主機(jī)在一段時(shí)間內(nèi)的性能及服務(wù)的響應(yīng)狀態(tài),并且形成圖表,這就需要通過查看日志數(shù)據(jù)來分析。但是這種方式不僅煩瑣,而且抽象。為了能更直觀的查看主機(jī)運(yùn)行狀態(tài),這里采用 PNP 來實(shí)現(xiàn)此功能。PNP 是一個(gè)小巧的開源軟件包,它是基于 PHP 和 Perl 腳本編寫,PNP 可以利用 rrdtoul 工具將 Nagios 采集的數(shù)據(jù)繪制成圖表,然后顯示主機(jī)或者服務(wù)在一段時(shí)間內(nèi)運(yùn)行的狀況。以下詳細(xì)介紹 PNP 安裝配置流程:
- 安裝 RDDtoul 工具
清單 11. 編譯安裝 RDDtoul
- #tar zxvf rrdtoul-1.4.5.tar.gz
- #cd rrdtoul-1.4.5
- #./configure --prefix=/usr/local/rrdtoul
- #make
- #make install
- 安裝 PNP
清單 12. 編譯安裝 PNP
- #tar zxvf pnp-0.4.13.tar.gz
- #cd pnp-0.4.13
- #./configure\
- --with-nagios-user=nagios \
- --with-nagios-group=nagios \
- --with-rrdtoul=/usr/local/rrdtoul/bin/rrdtoul \
- --with-perfdata-dir=/usr/local/nagios/share/perfdata
- #make all
- #make install
- #make install-config
- #make install-init
1. PNP 配置文件定義
在 PNP 安裝完成后, 默認(rèn)安裝目錄下回自帶相應(yīng)的模板配置文件, 因此只需要參考相應(yīng)的模板文件進(jìn)行修改即可,
清單 13. PNP 配置文件定義
- # cd /usr/local/nagios/etc/pnp/
- # cp process_perfdata.cfg-sample process_perfdata.cfg
- # cp npcd.cfg-sample npcd.cfg
- # cp rra.cfg-sample rra.cfg
- # chown -R nagios:nagios /usr/local/nagios/etc/pnp
2.修改 process_perfdata.cfg 文件
打開 Nagios 下的 process_perfdata.cfg 文件,修改相關(guān)內(nèi)容。可從下圖的注釋信息了解到
將數(shù)字 0 變更為 2 是開啟了日志的調(diào)試功能,操作如下:
圖 10. 開啟日志調(diào)試功能
3.修改 Nagios 相關(guān)配置文件
- 增加小太陽圖標(biāo)
修改 templates.cfg,增加一個(gè)定義 PNP 的 host 和 service,詳細(xì)見下圖 :
圖 11. PNP 配置與設(shè)定
- 修改 nagios.cfg
如果想讓 nagios 將數(shù)據(jù)輸出,首先要修改 nagios 的主配置文件 nagios.cfg,找到如下幾項(xiàng),如有注釋的將其去掉。修改后的信息如下:
清單 14. 增加 nagios 數(shù)據(jù)輸出設(shè)置
- #vim /usr/local/nagios/etc/nagios.cfg
- process_performance_data=1
- host_perfdata_command=process-host-perfdata
- service_perfdata_command=process-service-perfdata
- 修改 commands.cfg
process-host-perfdata 和 process-service-perfdata 指令聲明了 nagios 輸出哪些值到輸出文件中。 不過這些定義相對簡單,而 PNP 提供了一個(gè) Perl 腳本,非常詳細(xì)地定義了一個(gè)輸出數(shù)據(jù)的方法,process_perfdata.pl 其實(shí)是 PNP 自帶的一個(gè)腳本,這個(gè)腳本在 PNP 安裝完成后會(huì)自動(dòng)生成。因此,可以將 process-host-perfdata 和 process-service-perfdata 指令中對應(yīng)的執(zhí)行命令的內(nèi)容替換成此腳本。增加下圖的內(nèi)容:
圖 12. 在 commands.cfg 文件中增加性能圖片配置
- 修改 hosts.cfg 與 services.cfg
將 hosts-pnp 和 services-pnp 引用到 hosts.cfg 和 services.cfg 中,修改后的 hosts.cfg 內(nèi)容如圖 13 和圖 14 所示:
圖 13. 在 hosts.cfg 文件中增加性能圖片配置
圖 14. 在 services.cfg 文件中增加性能圖片配置
驗(yàn)證性能分析圖標(biāo)功能
訪問 nagios 管理界面,點(diǎn)擊查看哪臺(tái)主機(jī)小太陽的圖標(biāo),即可看到此主機(jī)的狀態(tài)信息,這里點(diǎn)擊的是 DirHost162 主機(jī),詳細(xì)如圖 15 和圖 16 所示:
圖 15. 被監(jiān)控主機(jī)管理界面
圖 16. 性能圖標(biāo)分析示意圖
#p#
利用 NRPE 擴(kuò)展 Nagios 功能
NRPE 是 Nagios 的一個(gè)功能擴(kuò)展,它可在遠(yuǎn)程 Linux 和 UNIX 主機(jī)上執(zhí)行插件程序。通過在遠(yuǎn)程服務(wù)器上安裝 NRPE 構(gòu)件及 Nagios 插件程序來向 Nagios 監(jiān)控平臺(tái)提供該服務(wù)器的一些本地情況,如 CPU 負(fù)載、內(nèi)存使用、硬盤使用,服務(wù)等。這里將 Nagios 監(jiān)控平臺(tái)稱為 Nagios 服務(wù)器 端,而將遠(yuǎn)程被監(jiān)控的服務(wù)器稱為 Nagios 客戶端。
下圖為 NRPE 構(gòu)件監(jiān)控遠(yuǎn)程主機(jī)本地信息的運(yùn)行原理:
圖 17. 監(jiān)控遠(yuǎn)程主機(jī)原理圖
NRPE 組成部分與檢測類型
NRPE 總共由兩部分組成:
- check_nrpe 插件,位于監(jiān)控主機(jī)上
- NRPE daemon,運(yùn)行在遠(yuǎn)程被監(jiān)控的 Linux 主機(jī)上
當(dāng)監(jiān)控遠(yuǎn)程 Linux/UNIX 主機(jī)服務(wù)或資源時(shí),工作流程如下:
- nagios 會(huì)運(yùn)行 check_nrpe 這個(gè)插件,并且會(huì)告訴它需要檢查什么;
- check_nrpe 插件會(huì)連接到遠(yuǎn)程的 NRPE daemon,所用的方式是 SSL;
- NRPE daemon 會(huì)運(yùn)行相應(yīng)的 Nagios 插件來執(zhí)行檢查動(dòng)作;
- NPRE daemon 將檢查的結(jié)果返回給 check_nrpe 插件,插件將其遞交給 Nagios 做處理。
- NRPE daemon 需要 Nagios 插件安裝在遠(yuǎn)程的 Linux 主機(jī)上,否則 daemon 不能做任何的監(jiān)控。
NRPE 的檢測類型分為兩種:
直接檢測:檢測的對象是運(yùn)行 NRPE 的那臺(tái) Linux 主機(jī)的本地資源,原理如下:
圖 18. 直接檢測結(jié)構(gòu)圖
直接使用 NRPE 插件監(jiān)控遠(yuǎn)程 Linux/UNIX 主機(jī)的本地或者私有資源;如 CPU 負(fù)載、內(nèi)存使用、SWAP 空間使用、硬盤等運(yùn)行狀況。
間接檢測:當(dāng)運(yùn)行 Nagios 的監(jiān)控主機(jī)無法訪問到某臺(tái)被監(jiān)控主機(jī),但是運(yùn)行 NRPE 的機(jī)器可以訪問得到的時(shí)候,運(yùn)行 NRPE 的主機(jī)就充當(dāng)一個(gè)中間代理,將監(jiān)控請求發(fā)送到被監(jiān)控對象上。
圖 19. 間接檢測結(jié)構(gòu)圖
在服務(wù)器端安裝 NRPE 安裝
清單 15. 服務(wù)器安裝 NRPE
- # cd /usr/local/src/
- # tar zxvf nrpe-2.12.tar.gz
- # cd nrpe-2.12
- # ./configure && make all
- # make install-plugin
- # make install-daemon
- # make install-daemon-config
- 修改命令定義文件
由于在 Nagios 命令定義文件 commands.cfg 沒有 check_nrpe 命令, 因此需要對此文件進(jìn)行修改與定義,配置細(xì)節(jié)如下圖:
圖 20. 在 commands.cfg 文件中增加 NRPE 配置
- 定義被監(jiān)控主機(jī)
在被監(jiān)控或遠(yuǎn)程主機(jī)上增加 check_nrpe 的相關(guān)配置,由于 hosts.cfg 已定義了相應(yīng)的主機(jī),所以這里編輯文件 Nagios 服務(wù)器上的 services.cfg 文件即可:
- #vim /usr/local/nagios/etc/monitor/services.cfg
圖 21. 在被監(jiān)控主機(jī),增加 NRPE 指令
- 查看配置文件是否正確
清單 16. 服務(wù)器安裝 NRPE
- # nagioscheck
- 重新加載配置文件
清單 17. Ngaios 配置加載
- # /etc/init.d/nagios reload
在 Linux 客戶端安裝 NRPE 安裝
- 安裝 Nagios 插件 nagios-plugin
添加 nagios 用戶名,且不允許 nagios 用戶登錄, 此用戶用于與 Nagios 服務(wù)器通信所用。
清單 18. 客戶端安裝 nagios-plugin
- # useradd -s /sbin/nulgin nagios
- # tar -zxvf nagios-plugins-1.4.14.tar.gz
- # cd nagios-plugins-1.4.14
- #./configure
- # make && make install
- 安裝 NRPE
在 Linux 客戶端安裝 nrpe 程序包,根據(jù)編譯提示向?qū)瓿砂惭b操作。在安裝的過程中會(huì)看到 NRPE 的端口為 5666,且可通過 Xinetd 服務(wù)來控制 nrpe 進(jìn)程,具體實(shí)現(xiàn)步驟如下:
清單 19. 客戶端安裝 NRPE
- #tar zxvf tar zxvf nrpe-2.12.tar.gz
- # cd nrpe-2.12
- #./configure
- #make all
- #make install-plugin
- #make install-daemon
- #make install-daemon-config
- #make install-xinetd
- #chown -R nagios:nagios /usr/local/nagios/
- 配置 NRPE
定義被監(jiān)控的 Linux 主機(jī)的對象,監(jiān)控此主機(jī)的 CPU 負(fù)載、登錄用戶數(shù)、磁盤分區(qū)、進(jìn)程、swap 使用情況等,編輯/usr/local/nagios/etc/nrpe.cfg 文件, 內(nèi)容如下示例:
清單 20. NRPE 配置與設(shè)定
- command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
- command[check_load]=/usr/local/nagios/libexec/check_load -w 30,25,20 -c 60,55,40
- command[check_sda3]=/usr/local/nagios/libexec/check_disk -w 15% -c 8% -p /dev/sda3
- command[check_vg01]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vg01
- command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
- command[check_swap_1]=/usr/local/nagios/libexec/check_swap -w 20 -c 10
- 定義 Xinetd 服務(wù)支持 nrpe
這里只需要修改 only_from 項(xiàng),增加 Ngaios 服務(wù)的地址即可,這樣一來服務(wù)器與客戶端就可進(jìn)行 nrpe 會(huì)話,監(jiān)控到 Linux 客戶端相關(guān)信息,被監(jiān)控端也更加容易維護(hù)管理,見下圖:
- #vim /etc/xinetd.d/nrpe
圖 22. 定義 Xinetd 服務(wù)支持 nrpe
- 定義服務(wù)端口
在 Linux 客戶端"/etc/services" 文件增加一行:
- nrpe 5666/tcp #Naigos_Client
- 測試 NRPE
由于 NRPE 相應(yīng)的插件已經(jīng)安裝成功, 這里使用 check_nrpe 命令來驗(yàn)證是否 nrpe 是否正常運(yùn)行,如果執(zhí)行以下命令能夠顯示 NRPE 的具體版本信息,則表示 nrpe 運(yùn)行正常,加載重啟 xinetd 服務(wù)即可。
清單 21. NRPE 功能測試
- #/usr/local/nagios/libexec/check_nrpe -H localhost
- NRPE v2.12
- #/etc/init.d/xinetd restart
#p#
Nagios 管理平臺(tái)界面介紹
通過上面所有的軟件及插件的安裝與配置,Nagios 監(jiān)控系統(tǒng)架構(gòu)成功的完成了;若想進(jìn)一步擴(kuò)展,如監(jiān)控 Windows 平臺(tái),則需要在 Windowns 系統(tǒng)安裝 NSClient 軟件,并在 Nagios 服務(wù)器定義 windows.cfg 等文件,VMware 則需要 Nagios 官網(wǎng)下載相應(yīng)的插件及模塊文件,并在 Nagios 服務(wù)器編輯 command.cfg、hosts.cfg、services.cfg 文件,這里不過多的闡述,可分別參照以下表 6 和表 7 方法來進(jìn)行:
- Window 平臺(tái)
- #vim /usr/local/nagios/etc/monitor/windows.cfg
表 6. Windows 平臺(tái)配置
- define host{
- use windows-server,hosts-pnp
- host_name Windowns Server 2003_192
- alias Remote win2003 192
- address 192.168.1.192
- }
- define service{
- use generic-service,services-pnp
- host_name Windowns Server 2003_192
- service_description NSClient++ Version
- check_command check_nt!CLIENTVERSION
- } }
- ………
- VMware 平臺(tái)
- # vim/usr/local/nagios/etc/monitor/commands.cfg
表 7. VMware 平臺(tái)配置
- define command{
- command_name check_esx3_host_net_usage
- command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l net -s usage -w $ARG3$ -c $ARG4$
- }
- define command{
- command_name check_esx3_host_runtime_issues
- command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l runtime -s issues
- ……
- 當(dāng)前狀態(tài)界面介紹
通過瀏覽器訪問 Nagios 服務(wù)器,從當(dāng)前頁面可以看到當(dāng)前主機(jī)和服務(wù)的健康狀態(tài),網(wǎng)絡(luò)運(yùn)行情況,以及服務(wù)與主機(jī)的檢測時(shí)間等,如下圖 15,可以看到我的 Nagios 服務(wù)器有一臺(tái)服務(wù)器處于宕機(jī)狀態(tài)。
圖 23. Nagios 當(dāng)前狀態(tài)界面
系統(tǒng)主機(jī)界面介紹
點(diǎn)擊 Hosts 標(biāo)簽,可以看到 Nagios 服務(wù)器監(jiān)控多少臺(tái)主機(jī)狀態(tài)及當(dāng)前主機(jī)的活躍狀態(tài),從下面圖示可以看到監(jiān)控的主機(jī)類型有,Windwos,Linux,Switch,F(xiàn)C-Swith,Storage 等,若想進(jìn)一步了解每臺(tái)主機(jī)的服務(wù),系統(tǒng)負(fù)載等被監(jiān)控的對象,可以直接點(diǎn)擊某個(gè)主機(jī),也可點(diǎn)擊小太陽圖標(biāo)來查看當(dāng)前被監(jiān)控的主機(jī)的生成的圖表信息。
圖 24. 所有被監(jiān)控主機(jī)界面
下圖是主機(jī)組頁面,可看到 Nagios 服務(wù)器將相對應(yīng)的主機(jī)組或監(jiān)控的對象進(jìn)行了分組定義,同時(shí)可以具體看到當(dāng)前總共有多少臺(tái)主機(jī),活躍的主機(jī),服務(wù)的健康狀態(tài)等等。
圖 25. 主機(jī)組和服務(wù)組界面
- 報(bào)告界面介紹
圖 26. 事件報(bào)告管理界面
圖 26,主要是記錄一些事件信息,記錄某臺(tái)主機(jī)所監(jiān)控對象的狀態(tài),若超出自己定義的配置,則會(huì)提示一般警告或嚴(yán)重告警信息,一旦主機(jī)恢復(fù)則自動(dòng)告知用戶當(dāng)前主機(jī)的狀態(tài):
同時(shí)可以將事件信息以郵件的方式告知聯(lián)系人,讓其在第一時(shí)間了解到服務(wù)器的健康狀態(tài)等信息,及時(shí)作出處理,提供服務(wù)器的工作效率等,如下圖:
圖 27. 郵件通知界面
關(guān)于 Nagios 管理界面詳細(xì),可在左側(cè)的導(dǎo)航菜單去查閱相應(yīng)的具體功能,如:當(dāng)前狀態(tài)、拓補(bǔ)圖、總覽、問題故障、報(bào)告、配置等信息,均可根據(jù)自己的生產(chǎn)環(huán)境來制定。
結(jié)束語
通過此篇文章描述了 Nagios 監(jiān)控管理平臺(tái)的工作原理,以及如何在 Linux 平臺(tái)部署開源軟件的管理平臺(tái),掌握 Naigos 配置管理,通過外部插件的方式來對服務(wù)對象 Windows 、Linux、 Unix 、 VMware 等平臺(tái)進(jìn)行有效的管理與監(jiān)控,適合運(yùn)行部門及管理部門的 IT 人員使用