Nagios+cacti的安裝
一、Nagios簡介
Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。
Nagios是一個監視系統運行狀態和網絡信息的監視系統。Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。
Nagios可運行在Linux/Unix平臺之上,同時提供一個可選的基於瀏覽器的WEB界面以方便系統管理人員查看網絡狀態,各種系統問題,以及日誌等等。
Nagios可以識別4種狀態返回信息,即 0(OK)表示狀態正常/綠色、1(WARNING)表示出現警告/黃色、2(CRITICAL)表示出現非常嚴重的錯誤/紅色、3(UNKNOWN)表示未知錯誤/深黃色。Nagios根據插件返回來的值,來判斷監控對象的狀態,並通過web顯示出來,以供管理員及時發現故障。
四種監控狀態
知道Nagios 是如何通過插件來管理服務器對象後,現在開始研究它是如何管理遠端服務器對象的。Nagios 系統提供了一個插件NRPE。Nagios 通過週期性的運行它來獲得遠端服務器的各種狀態信息。它們之間的關係如下圖所示:
系統環境:RHEL6.5 x86_64 selinux and iptables disabled
nagios 主機:222.24.24.148
二、安裝之前的準備工作
[root@nagios~server ~]# scp 222.24.24.10:/kiosk/Dsktop/nagiosnew/* /usr/local/src/cacti/
-bash: scp: command not found
[root@nagios~server ~]# yum install openssh_clients -y
[root@nagios~server ~]# chkconfig iptables off
[root@nagios~server ~]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@nagios~server ~]# getenforce
Enforcing
[root@nagios~server ~]# setenforce 0
[root@nagios~server ~]# vim /etc/sysconfig/selinux
三、rpm包方式安裝lamp
[root@nagios~server ~]# yum install httpd mysql mysql-server php php-server -y
[root@nagios~server ~]# yum install -y rrdtool
[root@nagios~server ~]# yum install -y php-xml net-snmp net-snmp-utils -y
[root@nagios~server cacti]# pwd
/usr/local/src/cacti
[root@nagios~server cacti]# ls
cacti-0.8.8c.tar.gz cacti-spine-0.8.8c.tar.gz php-snmp-5.3.3-26.el6.x86_64.rpm
[root@nagios~server cacti]# yum localinstall -y php-snmp-5.3.3-26.el6.x86_64.rpm -y
[root@nagios~server cacti]# vim /etc/php.ini 【修改時區】
在我的真機上先進行查詢,然後修改
[root@nagios~server cacti]# vim /etc/php.ini
/etc/init.d/httpd start
/etc/init.d/mysqld star
[root@nagios~server cacti]# yum install -y php-gd
[root@nagios~server cacti]# /etc/init.d/httpd restart
[root@nagios~server ~]# cd
[root@nagios~server ~]# yum install php-* -y
【切記一定要先cd到家目錄下,之前我犯了一個錯誤就是在cacti的目錄下面,怎麼也裝不上php-*】
四、配置snmp
[root@nagios~server ~]# vim /etc/snmp/snmpd.conf
【在snmp的配置文件中修改四處】
【此處是將view開頭的第一行的末尾的“.1”去掉,此圖已經去掉了,本來是兩個1,然後再添加兩行】
【添加上面三項即可】
【如上面所示即爲成功】
五、配置cacti
cacti的結構
在廣義上來說cacti是一套網絡流量監測圖形分析工具,但從狹義來說cacti只是由php語言實現的一個軟件
它需要PHP,apache,Mysql,SNMP,RRDTool等工具的支持
從上圖可以很明確看出cacti的三層架構之間的關係
第一層是數據採集,通過snmp簡單網絡協議,和一批自定義的腳本進行採集
第二層是數據存儲,分別通過mysql存儲cacti的模板和一些一定的信息,RRDTool用來存儲所監控到的性能文件,後綴爲.rrd
第三層是數據展現,cacti的web方式展現
cacti主要功能是用snmp服務獲取數據,然後用rrdtool儲存和更新數據,當用戶需要查看數據的時候,rrdtool生成圖表呈現給用戶。因此, snmp和rrdtool是cacti的關鍵,snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成.
Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具,原理如下圖所示:
snmp抓到數據不是存儲在mysql中而是存在rrdtool生成的rrd文件中,rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd 文件是大小固定的檔案文件,它能夠存儲的數據筆數在創建時已經定義.
Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機 ip,snmp 團體名、端口號、模板信息等變量。
*.net-snmp
NET-SNMP是一個代理SNMP協議的軟件,並提供管理端的查詢工具,支持多種擴展方式
在被監測和監測機器進行安裝
配置
/etc/snmp/snmpd.conf
*.RRDTool
RRDTool使用RRD(Round Robin Database)作爲存儲格式,Round robin是一種處理定量數據、以及當前元素指針的技術。RRDTool主要用來跟蹤對象的變化情況,生成這些變化的走勢圖
RRDTool的存儲特點
存儲數據的數據庫空間看成一個圓
指針會隨着數據的讀寫操作在圓的刻度上自動移動
圓沒有起點和終點
當所有的空間都存滿了數據,就又從頭開始存放
RRDtool 所使用的數據庫文件的後綴名是'.rrd'
5.1下載軟件包
[root@nagios~server cacti]# ls
cacti-0.8.8c.tar.gz
5.2解壓到http的發佈目錄:
[root@nagios~server cacti]# tar -zxvf cacti-0.8.8c.tar.gz -C /var/www/html/
5.3設置mysql的安全向導
[root@nagios~server include]# mysql_secure_installation
因爲config.php要用到mysql,所以先來配置mysql.
設置root密碼爲mysql
5.4創建cacti的數據庫,並對cacti的用戶進行授權
[root@nagios~server include]# cd /var/www/html/cacti/
【cacti的數據庫,並進行查看】
也可以不用登錄mysql,直接在命令行上敲擊如下命令:
mysqladmin -pmysql create cacti
[root@nagios~server cacti]# mysql -uroot -pmysql cacti < cacti.sql
[root@nagios~server cacti]# mysql -uroot -pmysql
【對本機的cacti用戶進行授權,並且給與登錄密碼爲cacti】
授權的原因是:將來mysql數據庫所在的主機和cacti服務所在的主機可能不在同一臺主機上,那麼就需要cacti服務從mysql上提取數據,就需要權限,屆時將@localhost改爲cacti服務所在的主機的ip即可】
【如上圖所示,即使遠端的cacti用戶登錄過來也只能看到cacti這個庫,權限一是及其的有限】
5.6修改cacti的配置文件
[root@nagios~server include]# vim config.php
【切記一定要修改數據庫名稱和密碼】
【啓用以上的兩項】
5.7設置crontab 【即就是定時執行監控任務】
【以cactiuser身份創建定時計劃任務】
默認 Username: admin
Password: admin
【強制修改密碼】
Nagios監控頁面
六、添加另一臺被監控的主機
【被監控主機,222.24.24.19 linux:redhat6.5】
在被監控主機裏面安裝net-anmp,修改配置文件,並啓動snmpd
[root@Dong ~]# yum install -y net-snmp
【修改以上內容】
如果出現如上圖所示的結果即爲正確
然後就是再在網頁上添加device然後再把這個device添加到Graph Tree上。
【這個詳細的步驟我後續會再次添加】
七、用cacti-spine 加速cacti
7.1.安裝一些基礎軟件:
[root@nagios~server include]# yum install -y net-snmp-devel mysql-devel openssl-devel
[root@nagios~server include]# yum install dos2unix autoconf gcc libtool cpp glibc-devel glibc-headers kerner-headers automake binutils -y
7.2下載並修改spine的配置
[root@nagios~server cacti]# tar zxvf cacti-spine-0.8.8c.tar.gz 要和cacti的版本一致
[root@nagios~server cacti]# cd cacti-spine-0.8.8c.tar.gz
[root@nagios~server cacti-spine-0.8.8c]# sh bootstrap
[root@nagios~server cacti-spine-0.8.8c]# ./configure
[root@nagios~server cacti-spine-0.8.8c]# make
[root@nagios~server cacti-spine-0.8.8c]# make install
安裝好之後會有下面的文件:
【將配置文件複製到/etc/spine文件中】
[root@nagios~server etc]# vim /etc/spine.conf
以cactiuser的身份啓動spine
[root@nagios~server ~]# su - cactiuser
【以上表示啓動成功】
7.3設置cacti 使其和spine結合:
【setting———>】
【paths————>】
【先找到位置,然後輸入spine的執行路徑,然後保存】
【選擇poller選項,然後將右邊的選項改爲spine】
7.4實驗結果
[root@nagios~server ~]# cat /var/www/html/cacti/log/cacti.log
【日誌裏面已經有spine了,之前的poller一直是cmd.php ,現在poller變成了spine】
【上圖是之前日誌文件中的內容】
八、給cacti安裝插件,進行擴展
8.1安裝插件monitor
monitor-v1.3-1.tgz
[root@foundation101 nagiosnew]# tar -zxvf monitor-v1.3-1.tgz
8.2設置cacti支持這個插件
【點擊】
【進去界面是這樣的】
【點擊】
【再點擊】
【ok了】
8.3實驗結果
【會出現一個monitor菜單】
第二部分
一、報警系統Nagios
上面是監控系統,接下來看報警系統
1.1編譯安裝nagios
出現如下報錯:
解決方法:
【首先查看系統gd的版本】
下載的gd-devel要和你係統上的gd版本一樣。
gd-devel-2.0.35-11.el6.x86_64.rpm
[root@nagios~server cacti]# yum localinsall gd-devel-2.0.35-11.el6.x86_64.rpm
【切記在安裝rpm包的時候,如果出現有依賴性,用yum localinstall來安裝】
[root@nagios~server nagios-cn-3.2.3]# ./configure --prefix=/usr/local/nagios
【指定nagios的安裝目錄】
在配置完成之後會有如下提示:
創建nagios用戶和用戶組:
# useradd nagios
# chown -R nagios.nagios /usr/local/nagios/
查看nagios 目錄的權限
# ll -d /usr/local/nagios/
# make all
# make install
# make install-init
# make install-commandmode
# make install-config
#make install
【這是nagios的安裝目錄】
# chkconfig --add nagios
# chkconfig --level 35 nagios on
# chkconfig --list nagios
1.2.驗證程序是否被正確安裝
切換目錄到安裝路徑(這裏是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 這五個目錄,如果存在則可以表明程序被正確的安裝到系統了。Nagios 各個目錄用途說明如下:
1.3下面安裝nagios的插件
# wget nagios-plugins-2.0.3.tar.gz
#tar -zxvf nagios-plugins-2.0.3.tar.gz
#cd nagios-plugins-2.0.3
#./configure --prefix=/usr/local/nagios/
#make && make install
二、配置nagios
nagios的主配置文件在:
nagios以http虛擬主機的方式發佈:
這個文件定義了nagios的用戶和密碼,一會里面指定登陸nagios的時候需要用到
但是這個裏面的密碼我們不知道,所以乾脆自己再創建一次:
測試一下,人家的配置文件有沒有語法錯誤:
[root@nagios~server etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
沒有語法錯誤的話,就啓動nagios,因爲給http新加了虛擬主機,所以http也要重啓。
【在重啓apache的時候,雖然已經成功但是還是出現了一些問題】
原因:這個問題應該是沒有在 /etc/httpd/conf/httpd.conf 中設定 ServerName。所以apache會用主機上的名稱來取代,首先會去找 /etc/hosts 中有沒有主機的定義。
解決辦法:
(1)可以設定httpd.conf文件中的 ServerName,如下:ServerName localhost:80
(2)在 /etc/hosts 中填入自己的主機名稱 bogon,如下:127.0.0.1 nagios~server(用戶名稱)
實驗結果:
【輸入剛纔設定的密碼】
nagios和cacti最大的不同是“時間點”和“時間段”的區別。
2.2自己定製nagios
上面的localhost.cfg 就是 nagios.cfg裏面指定的。也就是我們剛纔在網頁上看到的東西的根源。
我們不用人家的localhost了,自己來寫一個。
註釋掉:
然後再添加下面兩行:
可以借用一下localhost.cfg的模板:
在命令行模式下按dgg 就可以從光標位置到文件開始,這部分的數據。
我們在這個文件裏定義一個主機和一個組:
用dG刪除光標到文件尾之間的內容。
再用localhost.cfg創建一個service.cfg文件:
(其實就是把localhost.cfg的內容拆成了兩部分)
只留下含service那部分。
實驗結果:
三、給自定義的nagios加臺主機,再給所加的主機開個服務,然後用nagios去監控所加主機的所開的這個服務
3.1再開一臺虛擬機,然後安裝mysql服務
這裏的數據庫名字,授權的數據庫名字,以及密碼,都是一會兒監控要用到的。
在nagios的服務端上檢測一下,能不能監控到這個服務:
nagios就是根據這個命令的返回值來判斷被檢控的主機的服務是否好着
3.2.配置nagios使其監控上面主機的上面服務
(1).設置執行的命令的格式
添加下面的行,這是一會兒service.cfg裏面要用到的命令。
-u 數據庫的用戶 -p 數據庫用戶使用的密碼 -d 要訪問的是哪個數據庫。
$HOSTNAME$提取的是下面的service的結構體中的”host_name”的值,會根據這個值去host結構體中找對應的IP。
command結構體裏面用的命令都是這裏面的:
上面的hostname必須要和你定義的主機的結構體裏面的hostname一致。
check_command 會掉用上面定義的命令,!後面接的是參數。
上面的“local_service”是用的模板:
【這還定義了一個http服務】
這裏面指定了local-service用的配置模板是generic-service,local-service的設定會覆蓋generic-service裏面的設定。同理你自己定義的service裏面的設定會覆蓋local-service裏面的設定,他們是一層一層覆蓋的。
上面還指定了最多嘗試次數是4 分鐘
正常檢測間隔是5分鐘
如果失敗,下一次檢測的間隔是1分鐘
(3).配置監控的主機
(4).測試配置文件們是否有錯誤:
[root@nagios~server nagios]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
實驗結果:
我把taishiji上的mysql關閉之後就出現了下面效果:
mysql已經是緊急的了:
四、通過nrpe監控遠程主機上的磁盤,CPU,內存等信息
被監控端(我的taishiji)
安裝nagios插件
[root@Dong ~]# tar -zxvf nagios-plugins-2.0.3.tar.gz
[root@Dong ~]# cd nagios-plugins-2.0.3
[root@Dong nagios-plugins-2.0.3]# ./configure
[root@Dong nagios-plugins-2.0.3]# make
[root@Dong nagios-plugins-2.0.3]# make install
安裝完之後:
2.安裝nrpe
#下載nrpe-2.15.tar.gz
[root@Dong ~]# tar -zxvf nrpe-2.15.tar.gz
[root@Dong nrpe-2.15]# yum install -y openssl-devel
configure的結果:
一會兒要在/etc/service上添加這個port 5666
NRPE的用戶要是nagios 所以在系統上建立一個這個用戶:
[root@Dong nrpe-2.15]# make all
make all的結果
提示讓我們讀NRPE.pdf
根據文檔還需要做如下步驟:
把nrpe守護進程安裝在xinetd下面:
[root@Dong nrpe-2.15]# make install-xinetd
[root@Dong xinetd.d]# yum install -y xinetd
[root@Dong xinetd.d]# /etc/init.d/xinetd start
Starting xinetd: [ OK ]
這樣nrpe也就啓動了。
修改nrpe demon 的配置文件:
我們只需要修改check_disk那一行。因爲我們沒有hda1磁盤。你也可以改成任意你想監控且存在的分區。
【我查到本機上有一個sda1磁盤,所以我將hda1改爲sda1,這裏定義的命令在監控端纔可以用,如果這裏沒有定義的命令在監控端是調用不到的】
這裏-w的意思是warnning -c是critical緊急,,就需要發出警報了
以disk爲例,使用量超過80%就是剩餘20%的時候就會報警,剩10%的時候就會發送緊急報警
這裏面的命令(綠色的部分),都是在下面這個目錄裏有的:
[root@Dong libexec]# /etc/init.d/xinetd restart
3監控端(nagios端,nagios~server)
1.安裝nrpe插件
監控端只需要裝plugin不需要裝deamon。
測試你能否和被檢控端的nrpe deamon連通:
出現這個結果就代表正確
4.創建command結構體
5.定義host結構體
剛纔我們已經定義過foundation11那個結構體了這裏就不重複了
6.定義service結構體
A:
這個就在nagios~server的命令行裏執行:
效果是一樣的
看監控結構和實際被監控端taishiji的結果基本一致:
我在linux監控端的nrpe.cfg 文件中定義的command命令中check_disk命令查看的就是sda1磁盤的使用狀況
B:
和下面的對應:
C:
在被監控端可以查看:
D:
E:
測試一下上面的配置是否正確:
[root@nagios~server objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
7.實驗結果:
上面taishiji上多出來的服務就是我們通過nrpe來監控的遠程主機的服務
4.默認是以郵件的方式發送警告:
首先一定要開啓安裝sendmail,並且開啓sendmail
【[root@nagios~server mail]# yum install sendmail -y】
【[root@nagios~server mail]# /etc/init.d/sendmail start】
這裏面存的是有緊急情況時的聯繫人:nagios@localhost 你也可以改成別的郵箱
只要在/var/spool/mail目錄下有的名字,都是可用的郵箱
看郵件:
5.發郵件到QQ郵箱
5.1首先給報警發送的郵箱發送一封郵件,看是否可以收到郵件
結果如下所示:
5.2.被檢控端設置一下警告和緊急的條件
5.3監控端重新設置聯繫人郵箱
重啓nagios服務
5.4實驗結果
6.報警發微信消息 【待續】
① 註冊一個微信公衆帳號
7.cacti 和 nagios整合
7.1安裝npc (nagios plugin for cacti)
基礎環境
[root@nagios~server cacti]# yum localinstall rrdtool-perl-1.3.8-6.el6.x86_64.rpm -y
[root@nagios~server cacti]# yum install -y perl-CGI
#下載npc-2.0.4.tar.gz
配置安裝npc
[root@nagios~server cacti]# tar -zxvf npc-2.0.4.tar.gz -C /var/www/html/cacti/plugins