一、Nagios簡介
Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。
Nagios原名爲NetSaint,由Ethan Galstad開發並維護至今。NAGIOS是一個縮寫形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻譯爲聖徒,而"Agios"是"saint"的希臘表示方法。Nagios被開發在Linux下使用,但在Unix下也工作得非常好。
主要功能
- 網絡服務監控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
- 主機資源監控(CPU load、disk usage、system logs),也包括Windows主機(使用NSClient++ plugin)
- 可以指定自己編寫的Plugin通過網絡收集數據來監控任何情況(溫度、警告……)
- 可以通過配置Nagios遠程執行插件遠程執行腳本
- 遠程監控支持SSH或SSL加通道方式進行監控
- 簡單的plugin設計允許用戶很容易的開發自己需要的檢查服務,支持很多開發語言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
- 包含很多圖形化數據Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
- 可並行服務檢查
- 能夠定義網絡主機的層次,允許逐級檢查,就是從父主機開始向下檢查
- 當服務或主機出現問題時發出通告,可通過email, pager, sms 或任意用戶自定義的plugin進行通知
- 能夠自定義事件處理機制重新激活出問題的服務或主機
- 自動日誌循環
- 支持冗餘監控
- 包括Web界面可以查看當前網絡狀態,通知,問題歷史,日誌文件等。
- 監視網絡服務 (SMTP, POP3, HTTP, NNTP, PING等)
- 監視主機資源 (進程, 磁盤等)
- 簡單的插件設計可以輕鬆擴展Nagios的監視功能
- 服務等監視的併發處理
二、Nagios工作原理
Nagios的功能是監控服務和主機,但是他自身並不包括這部分功能,所有的監控、檢測功能都是通過各種插件來完成的。
啓動Nagios後,它會週期性的自動調用插件去檢測服務器狀態,同時Nagios會維持一個隊列,所有插件返回來的狀態信息都進入隊列,Nagios每次都從隊首開始讀取信息,並進行處理後,把狀態結果通過web顯示出來。
Nagios提供了許多插件,利用這些插件可以方便的監控很多服務狀態。安裝完成後,在nagios主目錄下的/libexec裏放有nagios自帶的可以使用的所有插件,如,check_disk是檢查磁盤空間的插件,check_load是檢查CPU負載的,等等。每一個插件可以通過運行./check_xxx –h 來查看其使用方法和功能。
Nagios可以識別4種狀態返回信息,即 0(OK)表示狀態正常/綠色、1(WARNING)表示出現警告/黃色、2(CRITICAL)表示出現非常嚴重的錯誤/紅色、3(UNKNOWN)表示未知錯誤/深黃色。Nagios根據插件返回來的值,來判斷監控對象的狀態,並通過web顯示出來,以供管理員及時發現故障。
四種監控狀態
再說報警功能,如果監控系統發現問題不能報警那就沒有意義了,所以報警也是nagios很重要的功能之一。但是,同樣的,Nagios 自身也沒有報警部分的代碼,甚至沒有插件,而是交給用戶或者其他相關開源項目組去完成的。
Nagios 安裝,是指基本平臺,也就是Nagios軟件包的安裝。它是監控體系的框架,也是所有監控的基礎。
打開Nagios官方的文檔,會發現Nagios基本上沒有什麼依賴包,只要求系統是Linux或者其他Nagios支持的系統。不過如果你沒有安裝apache(http服務),那麼你就沒有那麼直觀的界面來查看監控信息了,所以apache姑且算是一個前提條件。關於apache的安裝,網上有很多,照着安裝就是了。安裝之後要檢查一下是否可以正常工作。
知道Nagios 是如何通過插件來管理服務器對象後,現在開始研究它是如何管理遠端服務器對象的。Nagios 系統提供了一個插件NRPE。Nagios 通過週期性的運行它來獲得遠端服務器的各種狀態信息。它們之間的關係如下圖所示:
Nagios 通過NRPE 來遠端管理服務
1. Nagios 執行安裝在它裏面的check_nrpe 插件,並告訴check_nrpe 去檢測哪些服務。
2. 通過SSL,check_nrpe 連接遠端機子上的NRPE daemon
3. NRPE 運行本地的各種插件去檢測本地的服務和狀態(check_disk,..etc)
4. 最後,NRPE 把檢測的結果傳給主機端的check_nrpe,check_nrpe 再把結果送到Nagios狀態隊列中。
5. Nagios 依次讀取隊列中的信息,再把結果顯示出來。
三、Nagios服務端安裝
1、 基礎支持套件:gcc glibc glibc-common gd gd-devel xinetd openssl-devel
# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel
如果系統中沒有這些套件,使用yum 安裝
# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl openssl-devel
2、查看安裝服務器環境(LAMP)
#rpm -qa | grep httpd
#rpm -qa | grep php
如果系統中沒有安裝,使用yum 安裝
3、創建nagios用戶和用戶組
# useradd -m -s /bin/bash nagios
# groupadd nagios
# usermod -G nagios nagios
創建一個用戶組名爲nagcmd 用於從Web接口執行外部命令。將nagios用戶和apache用戶都加到這個組中。因爲要用到 CGI 的 Web 監控面板,所以這裏我們還要添加一個 nagcmd 組,用於 CGI 執行相關指令。
# groupadd nagcmd
# usermod -G nagcmd nagios
# usermod -a -G nagcmd daemon (因爲是yum安裝的apache,默認是以daemon用戶運行)
4、安裝目錄
# cd /usr/local
# mkdir nagios
chown -R nagios:nagios nagios
5、編譯安裝nagios
# cd /home/lost+found
# tar -zxvf nagios-4.0.2.tar.gz
# cd nagios-4.0.2
# ./configure --prefix=/usr/local/nagios --with-command-group=nagcmd
編譯Nagios程序包源碼
# make all
安裝二進制運行程序、初始化腳本、配置文件樣本並設置運行目錄權限
# make install
# make install-init //在/etc/rc.d/init.d安裝啓動腳本
# make install-commandmode //配置目錄權限
# make install-config //安裝示例配置文件,安裝的路徑是/usr/local/nagios/etc
對nagios進行配置
樣例配置文件默認安裝在這個目錄下/usr/local/nagios/etc,這些樣例文件可以配置Nagios使之正常運行,只需要做一個簡單的修改。
編輯/usr/local/nagios/etc/objects/contacts.cfg配置文件,更改email地址nagiosadmin的聯繫人定義信息中的EMail信息爲你的EMail信息以接收報警內容。
# nano /usr/local/nagios/etc/objects/contacts.cfg
# cd /home/lost+found
# tar -zxvf nagios-plugins-1.5.tar.gz
# cd nagios-plugins-1.5
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios/ //指定安裝目錄及用戶和組
# make && make install
7、配置httpd
生成Nagios的Apache配置文件 # cd nagios-4.0.2 # make install-webconf /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf 參考/etc/httpd/conf.d/nagios.conf配置內容添加到Apache的httpd.conf配置文件中(/etc/httpd/conf/httpd.conf)。
cat /etc/httpd/conf.d/nagios.conf >> /etc/httpd/conf/httpd.conf
# nano /etc/httpd/conf/httpd.conf
創建一個nagiosadmin的用戶用於Nagios的Apache接口登錄。記下你所設置的登錄口令,一會兒你會用到它。
# /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
密碼:nagiosadmin
重啓Apache服務以使設置生效。
8、安裝NRPE插件
想獲取客戶機上更爲詳細的信息,還必須在服務器及客戶端上安裝NRPE插件。
# cd /home/lost+found/
# tar -zxvf nrpe-2.15.tar.gz
# cd nrpe-2.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios/
# make all
# make install-plugin
# make install-daemon-config
# make install-daemon
# ls /usr/local/nagios/libexec/
check_apt check_ftp check_mailq check_overcr check_tcp .......
驗證Nagios的樣例配置文件
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果沒有報錯,可以啓動Nagios服務。
9、啓動httpd及nagios服務並驗證
#chkconfig --add nagios //設置nagios及http開機自啓動
#chkconfig --level 35 nagios on
#chkconfig --list
#chkconfig httpd on#service nagios start#service httpd start
四、Nagios客戶端安裝
rpm -q gcc openssl openssl-devel
yum -y install gcc openssl openssl-devel
在客戶端就是要安裝nagios 插件 和 nrpe插件
# cd /usr/local/
# mkdir nagios
# useradd -s /sbin/nologin nagios
1、安裝 nagios-plugins-1.5
# cd nagios-plugins-1.5
# ./configure --prefix=/usr/local/nagios
# make
# make install
# cd /usr/local
# chown -R nagios.nagios nagios
2、安裝nrpe插件
# cd nrpe-2.15
# ./configure --prefix=/usr/local/nagios/
# make all
# make install-plugin 安裝check_nrpe這個插件
# make install-daemon-config 安裝配置文件
# make install-daemon 安裝daemon
3、修改客戶端配置文件
# nano /usr/local/nagios/etc/nrpe.cfg
server_port:5666
allowed_hosts=127.0.0.1,192.168.0.36
//添加服務器端的IP地址
指定nagios監控主機ip,多個ip用逗號分隔,後面的IP地址,是nagios服務端的ip地址,也就是說只允許指定的ip通過nrpe開的端口5666取得本機的信息。
然後修改nrpe.cfg中的command部分。
啓動NRPE守護進程:(可以將此命令加入/etc/rc.local,以便開機自動啓動)
#/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
可以將此命令加入/etc/rc.local,以便開機自動啓動
echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.local
#netstat -utpln |grep nrpe //查看nrpe進程是否已正常啓動
#/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.15 //nrpe測試結果,此結果爲nrpe已經正常工作了
然後在nagios監控服務器上測試
#/usr/local/nagios/libexec/check_nrpe -H 192.168.0.31 //被監控主機ip
返回信息被監控服務器上安裝的NRPE版本:NRPE v2.15
五、定義監控內容
# nano /usr/local/nagios/etc/nrpe.cfg //定義監控服務器內容
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 #監控登陸的用戶數量
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 #監控CPU的負載
command[check_sda2]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda2 #監控磁盤利用率,這裏的sda2必須是實際的硬盤分區,可使用fdisk –l查
command[check_swap]=/usr/local/nagios//libexec/check_swap -w 20 -c 10 #監控交換空間
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z #監控進程中的殭屍進程
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 #監控所有進程
注意:command後面括號中的內容就是定義的變量,變量名可以任意指定,只需和服務器配置文件中的一致即可
參考自:
http://windows9834.blog.163.com/blog/static/2734500420140163496392/
http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html
http://os.51cto.com/art/201103/250152.htm