開源監控軟件 cacti的應用

開源監控Cacti的架構及應用


一:cacti 的簡介

二:Cacti 的特點以及優點

三:Cacti 所監控的對象

四:監控的步驟

五:snmp 的工作原理

六:cacti 架構及應用

一:Cacti 的簡介:

Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool複雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。界面友好。

Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來作出各式各樣的監控圖。

cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,然後用rrdtool儲存和更新數據,當用戶需要查看數據的時候用rrdtool生成圖表呈現給用戶。因此,snmprrdtoolcacti的關鍵。Snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成。

Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機ipsnmp團體名、端口號、模板信息等變量。

snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(Round Robin Archive),它能夠存儲的數據筆數在創建時就已經定義。

二:Cacti 的特點以及優點:

1、開源

1,自由發行

2,開放源代碼

3,運行高效

2、跨平臺

支持的平臺redhat windows solariscentos suse

3、界面友好

圖形豐富 各種模板 自定義模板

4、可擴展

支持二十種的插件,豐富的插件資源,大大提高了cacti的功能。

三:Cacti 所監控的對象:

1、服務器cpu 、內存、磁盤、進程、連接數

2、Webmail ftp 數據庫 、中間件

3、網絡接口流量、轉發速率、丟包率

4、網絡設備性能 、配置文件 、路由數

5、安全設備性能、連接數、電源、溫度

6、機房運行環境:電流、電壓、溼度等

四:監控的步驟:

1,如何獲取數據?

命令:ping ssh telnet

腳本:編輯相應的腳本測試被監控主機的狀態

Snmp協議:

SNMP(Simple Network Management Protocol,簡單網絡管理協議)的前身是簡單網關監控協議(SGMP),用來對通信線路進行管理。隨後,人們對SGMP進行了很大的修改,特別是加入了符合Internet定義的SMIMIB:體系結構,改進後的協議就是著名的SNMPSNMP的目標是管理互聯網Internet上衆多廠家生產的軟硬件平臺,因此SNMPInternet標準網絡管理框架的影響也很大。

2,如何存儲數據?

數據的存儲是靠rrd數據庫來實現的,也叫環狀數據庫,數據庫格式以.rrd結尾。數據庫中存放的不是直接收集到的信息,而是通過聚合函數聚合之後的數據,默認每隔5分鐘,收集一次信息,也可以每隔5秒鐘收集一次信息,這叫做pdp。通過聚合之後的數據存放到rrd表格中叫做rrarrd表格是由數據庫管理,這裏數據庫也叫做數據源,而數據庫的創建是靠rrdtool工具完成的。

Rrdtool 創建數據庫 更新數據庫 繪圖

3,如何展示以及報警?

圖形的展示,以及報警是通過基於web頁面的cacti這個軟件來實現的,報警的方式有發送郵件、msn消息、飛信消息。

五:Snmp的工作原理:

1、三層架構:第一層叫網管工作站簡稱nms ,第二層叫做agent ,也就是被監管的設備,第三層就是數據庫。

2、原理:

agent 把收集到的信息放到數據庫中,nms把要請求的數據的信息提交給agent nmsagent 打交道的方式有GetRequest GetNextRequestSetRequestGetResponsetrap 向數據庫中收集數據,然後把數據提交給nms

GetReques:請求得到這個對象本節點相關信息

GetNextRequest:請求得到這個對象本節點以下的所有信息

SetRequestagent 設置本節點的信息

Trap agent主動向nms 提交信息

3、OID

爲了在系統中能夠找到所需對象,我們需要爲每一個對象分配一個唯一的表示號。在關係數據庫中我們稱之爲關鍵字,而在對象術語中,則叫做對象標識(Object identifier-OID)通常OID在內部都使用一個或多個大整數表示,而在應用程序中則提供一個完整的類爲其他類提供獲取、操作。一個OID必須在一層中保持唯一,理想上應該在所有對象上都唯一。

把被監控對象的名稱和OID放在一個文件中,這個文件叫做MIB庫。

不同的設備的MIB-2 OID 是不同的,比如說udp的報文OID 1.3.6.1.2.7udp 進來的報文OID 1.3.6.1.2.7.2 udp出錯的報文OID 1.3.6.1.2.7.3

六:架構cacti及其應用

1、snmp 的安裝

1rpm 包安裝snmp

net-snmp-5.3.2.2-7.el5.i386.rpm 提供snmpd服務,開啓這個服務將成爲agent將提供161端口。

net-snmp-utils-5.3.2.2-7.el5.i386.rpm 安裝這個軟件包,將成爲nms ,提供很多工具。

開啓snmpd 服務查看端口

144913389.png

2nms agent 打交道需要進行身份認證,在snmp1版本 、2c 版本是靠團體名進行身份驗證的,明文傳遞信息,不安全。3版本 是靠賬號驗證的。密文傳遞信息,比較安全,但是,一般使用2c版本,比較方便。

通過snmp的工具snmpwalk 簡單獲取agent(本地主機)的信息

Snmpwalk -v 2c - c public 127.0.0.1

144927832.png

將會得到很多MIB 信息,在安裝snmp的軟件包時,將各節點的MIB庫文件就已經存放到/usr/share/snmp/mibs 目錄下面了。

Nms 只能得到 SNMPv2-MIBHOST-RESOURCES-MIB的相關信息,這是因爲在snmp的配置在文件中,只打開了這兩個節點OID,所以nms 只能獲得這兩個節點以下的相關信息。

144944503.png

如果想監控到到更多節點的相關信息,只需把節點的OID 添加到配置文件中

比如說獲取TCP-MIB.txt中的信息tcp節點的OID1.3.6.1.2.1.6,設置好之後重啓服務,將會得到tcp的相關信息。

145000903.png

Snmpwalk -v 2c - c public 127.0.0.1

145012571.png

2、Rrdtool 的應用

2rrdtool 的簡介:

高性能的記錄繪圖工具rrdtool ,主要用於處理時間序列的數據

Rrdtool 提供了幾個子命令實現對.rrd 文件的管理,如create,updateupdatev ,graph ,dump ,last ,info 等命令。

使用rrdtool 繪圖的步驟:

1、使用rrdtool create 創建一個新的rrd數據文件;

2、使用, rrdtool update 爲前面的創建的rrd 數據文件提供數據;此數據需要週期性的進行更新,因此,應該講rrdtool update 創建爲cron任務;

3、使用rrdtool graph rrd 數據文件中獲取數據並繪圖;

3Rrdtool create 命令的用法:

Rrdtool create filename --start |-b start time 】【--step| -s step】【--no-overtime】【DS:dst arguments 】 【RRACF:cf arguments

Filename :rrd數據庫文件名稱

Start :開始時間

Step :步長,每隔多長時間記錄一次,默認每隔300秒。

no-overtime:不覆蓋一個已經存在的rrd數據文件

DS:數據源

Dst :數據源類型

Arguments:變量

RRA:每隔幾個步長統計一下信息

CF:對數據進行處理的統計函數:AVERAGE 平均值,MIN 最小值,MAX 最大值

1.使用rrdtool創建rrd數據庫文件

rrdtool create test.rrd -s 5 DS:testds:GAUGE:8:0:U RRA:AVERAGE:0.5:1:17280

創建的數據庫文件test.rrd ,每隔5秒收集一下信息,數據源是testds,對數據求絕對值,到8秒的時候也可以接受數據,最小值是0最大值沒有,對錶格中的數據求平均值,數據不超過50%,步長爲1,記錄統計每隔5秒的一天之內的數據,欄位是17280

將會在當前目錄下產生一個rrd數據庫文件test.rrd

查看rrd數據庫文件的數據平均值信息

rrdtool fetch test.rrd AVERAGE

145026325.png

當前還沒有信息,以爲沒有往表格中輸入信息,所以統計不到信息,編輯一個腳本不斷地往表格中輸入信息,運行腳本

#!/bin/bash

while true ;do

rrdtool update test.rrd N:$RANDOM

sleep 5

done

查看rrd數據庫文件的數據平均值信息,將會得到一些數據

rrdtool fetch test.rrd AVERAGE

145041216.png

2..使用rrdtool 工具創建圖形,獲取的是test.rrd數據庫中的數據,每隔五秒收集一次信息,數據源是testds,求數據的平均值,圖形的形式是線條顏色爲黃色。

rrdtool graph test.png -s 1382934740 --step 5 -t tupian -v vtupian DEF:vname=test.rrd:testds:AVERAGE LINE1:vname#ff0

在當前目錄下將產生test.png,查看圖片

145103413.png

3cacti的安裝

Rrdtool 太過繁瑣麻煩,所以很少有人願意使用這個工具,cacti的出現大大簡化了操作,cacti是基於web頁面的開源監控軟件,在頁面裏,就可以收集數據信息,繪製圖形。

1LAMP的環境搭建

使用yum安裝lamp的軟件包

打開httpd 服務,設置開機啓動

打開mysqld 服務,設置開機啓動

修改mysql服務器的登陸密碼

Mysqladmin -u root -p password 123

登陸mysql 服務器,創建數據庫,數據庫的名稱是cacti ,用於存放收集到的數據信息

,然後授予所有權限給cacti 這個用戶來管理cacti數據庫中的所有表格,然後刷新權限。

create database cacti;

grant all privileges on cacti.* to cacti@localhost identified by 'cacti';

Query OK, 0 rows affected (0.00 sec)

flush privileges;

2,使用cacti的源代碼中帶的腳本,往cacti數據庫中導入表格

cacti-0.8.7g.tar.gz cactiphp頁面

cacti-plugin-0.8.7g-PA-v2.8.tar.gz cacti的插件管理器

monitor-latest.tgz 插件 實現監控的功能

sendMsg.zip 實現msn報警功能

settings-latest.tgz 增加設置的功能

feition.tar.bz2 實現飛信報警的功能

thold-latest.tgz 設置域值大小的功能

解壓cacti-0.8.7g.tar.gzi到站點主目錄下/var/www/html

切換到cacti 目錄下,將會看到很多php 文件和一些目錄,poller.phpcacti利用snmp協議不斷地獲取數據的php腳本,rra 目錄,用戶存放rrd數據庫,image 目錄,存放cacti生產的圖片。Cacti.sql 文件,用於導入到mysql數據庫服務器中的cacti數據庫中,給cacti數據庫創建表格。

mysql -u root -p cacti <./cacti.sql

進入到cacti數據庫中查看錶格

145204872.png

3製作個人的計劃任務運行poller.php這個文件,使得cacti不斷地獲得數據

crontab -e

*/5 * * * * php /var/www/html/cacti/poller.php >/dev/null 2>&1

4,切換到include 目錄下打開config.php ,指明php連接到cacti數據庫的賬號和口令

145222492.png

5,創建系統賬號cacti,把logrra 目錄的擁有者設置爲cacti

useradd cacti

passwd cacti

Chown -R log rra

6,通過瀏覽器訪問站點主目錄下的cacti,將出現安裝嚮導,如果沒有問題的話點擊finnish

將會出現後臺管理員的登陸界面管理員的賬號admin,密碼;admin

然後系統會讓你修改密碼,之後將會進入cacti的主界面

145244983.png

剛進去因爲沒有安裝插件只能看到console graphs兩個菜單,在console菜單下有很多子菜單,比如說 create management templates configurationutilities等。

management 菜單下的graph trees ,用於創建節點的,節點掛載到默認樹下面,比如說,創建linux windows 、防火牆節點,與linux相關的圖形,掛載到linux節點下,與windows節點相關的圖形掛載到windows節點下,與防火牆相關的圖像掛載到防火牆相關的節點下。

Templates (模板)菜單下的有圖形模板、主機模板、數據模板。當被監管的主機的被監控的對象相同或相似時就可以直接套用模板,主機模板包括一個或多個圖形模板 ,圖形模板包括一個或多個數據模板。

Configuration 菜單下可以進行相應的設置,

145305826.png

General 進行全局的設置,比如說snmp的版本,rrdtool的版本,團體名的版本,設置好之後點擊save進行保存。

四 、cacti的應用

1、監控linux本機

1,點擊 devices 進行設置添加被監控主機的描述ip地址 和套用的模板,使用snmp獲取信息

145326717.png

145327659.png


2點擊保存之後將會看到保存之後的信息,顯示的是用snmp獲取的信息

,點擊create graphs ,對獲取的信息製作圖形。

145346434.png

將會根據相關聯的圖形模板,創建圖形,也可以添加模板,與inux主機相關聯的圖形模板有linux的內存使用、用戶登錄數、 進程數。

點擊create 將會創建linux內存使用情況圖形,用戶登錄數圖形,進程數圖形。

切換到cactirra目錄下面,將會形成相應的rrd數據庫文件,生成rrd文件就一定會有相應的圖片產生。

145423213.png

145423342.png

145425380.png

145425151.png

145426744.png



2、監控windows主機的磁盤使用狀況

1,準備工作

安裝snmp服務,開啓snmp服務,使得windows主機成爲一個被監管的設備(agent

Windows 主機的ip地址爲192.168.1.102

開始--》控制面板--》添加刪除服務--》添加刪除組件--》管理和監視工具

進行相關的設置,添加團體名和nmsip地址

145510285.png

2, 點擊graph trees 創建節點windows xp ,以後windows主機的圖形就可以掛 載 到這個節點上

145525108.png

3,點擊devices 添加被監控的主機,t添加被監管設備的ip地址和要使用的模板,然 後點擊create創建。

145542104.png

4,爲主機選擇圖形模板

145606506.png

5,根據所選擇的圖形模板,繪製磁盤使用情況的圖形

點擊devices 將會出現window這臺主機,選擇windows這臺主機掛在到剛剛創建的 windows xp 節點上

145625990.png

6,點擊graphs這個插件,將會看到windowsxp這個節點,但是還沒有出現圖片,這個沒有關係,點擊右上角的logout,從新登陸一下cacti就可以了,將會看到windowsxp節點下面有一臺主機winxp,點擊winxp將會看到被監控信息,磁盤 物理內存 、虛擬內存使用狀況。

145704254.png

145705251.png

145722541.png

五、cacti的報警

簡要說明: 實現郵件報警和飛信報警兩種功能,cacti所要監控的設備有linux主機本身的用戶數,apache服務器的狀態 ,磁盤使用情況和windows 主機的磁盤使用情況

拓撲圖:

145743671.png

一:cacti插件管理器和插件的安裝

Apache 服務器狀態的監測,要靠apache的一個運行狀態腳本來獲取apache運行狀態信息的, ss_apache_stats.php ,監控apache

狀態的圖形模板爲cacti_host_template_webserver_-_apache.xml,這些圖形模板和腳本到網上可以下載,模板可以中cactiweb頁面中導入導出。

1,把腳本拷貝到cactiscripts的目錄下面

cp -p ss_apache_stats.php /var/www/html/cacti/scripts/

2,通過web方式的訪問進入到cacti的主界面,導入監控apache服務器的圖形模板

145759722.png

導入之後出現如下提示,說明模板導入成功

145815450.png

要想監控apache的運行狀態的信息,必須打開apache的配置文件,開啓狀態輸出的功能,狀態輸出功能的實現,是靠apache在啓動時調用一個模塊來實現的,然後打開輸出狀態的訪問方式,ss_apache_stats.php這個php腳本就是獲取apache輸出狀態的運行腳本。

145838812.png

145838351.png


重啓apache服務器,用瀏覽器訪問http://192.168.1.4/server-status,將會看到apache的輸出信息,版本信息,CPU使用信息等。

145906322.png

145906905.png


3,點擊devices 菜單,找到apache所在的linux主機,也就是本地主機,在添加圖形模板的位置,將會出現有關apache狀態信息的模本,這根導入的模板有關。

145935631.png

然後點擊添加 保存 最後創建圖形

145954906.png

點擊graphs 找到host :localhost,將會形成相應的圖形

150031518.png

150032670.png

150033797.png


4,但是怎麼樣才能實現報警呢?目錄前cacti實現不了,因爲沒有安裝插件,比如說限制域值的插件,狀態圖標插件。

cacti-plugin-0.8.7g-PA-v2.8.tar.gz 插件管理器

monitor-latest.tgz 顯示狀態圖標的插件,當被監控的設備是綠顏色,說明是up 狀態,當爲紅顏色是就是down狀態

sendMsg.zip 實現msn報警的功能

settings-latest.tgz 增加設置功能

thold-latest.tgz 主要設置域值,超出設置的域值,將要報警。

5, 解壓cacti的插件管理器cacti-plugin-0.8.7g-PA-v2.8.tar.gz

切換到cacti-plugin-arch/,將會看到一個補丁,導入數據庫的一個腳本

150109801.png

cacti-plugin-arch/目錄下的所有內容,移動到cacti的主目錄下面/var/www/html/cacti

pa.sal 導入cacti數據庫中,然後給cacti打補丁

150139241.png



打完補丁之後刷新cacti的主界面,將會發現cacti的主界面有點亂,打開cacti/include目錄下的config.phpcacti與數據庫連接的配置文件,修改cacti的訪問路徑爲/cacti/

150337476.png

再次刷新cacti的主界面將會清晰明瞭

150354921.png

點擊setting --》用戶管理-->admin ,勾選插件管理,然後保存

150411972.png

點擊插件管理器,裏面還沒有任何插件

150430315.png

6,安裝所需要的插件monitor-latest.tgzsettings-latest.tgz thold-latest.tgz

解壓源代碼,把源代碼目錄移動到cacti目錄下的plugins 目錄下,修改名稱

150450877.png

切換到/var/www/html/cacti/plugins/目錄下,修改名稱,不改名稱,cacti識別不到

150512319.png

7,刷新cactiweb頁面,將會看到三個插件。

150528698.png

8,點擊按鈕,進行插件的安裝,安裝好之後查件的狀態將是active

150550833.png

9,點擊settings將會出現很多選項,進行設置,比如說設置報警方式鈴聲報警、郵件報警。

150605932.png

二:實現郵件報警功能

1,點擊settings 按鈕,點擊mail/dns插件,進行相應的操作,先發送一個測試郵件,用管理員發送郵件。

150628653.png

150628502.png


登錄qq郵箱查看測試郵件

2,設置域值,實現報警

點擊thresholds(域值)菜單,選中要監控的主機,比如監控本地linux主機的進程數目,設置域值,限制進程數目,最大幾個進程,最小几個進程,如果超出範圍,將進行郵件報警。

150656150.png

150657792.png


3,進程明顯大於100,所以將會發送報警郵件,進入郵箱查看郵件

點擊thold 查看告警,如果是紅顏色,說明已經超過域值,正在告警,如果是綠顏色,沒有超過域值。

150722790.png

150723851.png


過了五分鐘,又收到一條告警信息,進程數達到139個,cacti實施報警

150742484.png

4,監控linux主機的apache服務器CPU使用情況,超過1%將進行報警,監控apache服務器的傳輸的字節數,超過2000字節,將實時報警。

150831381.png

150832382.png

150834665.png


三:實現飛信報警功能

1,解壓飛信程序的源代碼到當前目錄下,拷貝共享庫文件到系統共享庫目錄下也就是/lib目錄下,否則,飛信程序執行不了。

150915303.png

2,測試飛信程序,是否可以正常發送飛信,先自己給自己發飛信。

語法:--mobile=發信人的電話號碼

--pwd=發信人的飛信密碼

--to=收信人的電話號碼

--file-utf8=要發送的utf8字符集格式的飛信文件

150938344.png

發送飛信後將會產生一個以.jpg結尾的圖片驗證碼,導出到windows系統的桌面,然後再linux系統當前狀態下輸入驗證碼,將會把飛信發出。

151002873.png

151003706.png


3,但是如何才能實現cacti的飛信報警呢?有一個發送飛信的腳本,當監控的設備數據信息超過某個範圍時,cacti自動運行腳本發送飛信,可以實現用戶不用上網,不在網管工作站,遠距離的接受報警信息。把飛信腳本拷貝到 /var/www/html/cacti/plugins/thold/

mkdir /var/www/html/sendsms/

mv linuxso_20101113/ /var/www/html/sendsms/linuxso

151020502.png

切換到 /var/www/html/cacti/plugins/thold/,創建兩個文件,alert.log 告警文件,sms.txt 日誌文件

151039588.png

4,當監控的信息,超過域值時,告訴thold 執行腳本發送告警飛信。打開thold的聲明文件thold_functions.php ,添加兩條語句。

151052883.png

到這裏我已經實現了郵件報警和飛信報警,你可以根據我的步驟完成cacti的應用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章