如何在Cacti中合并兩幅圖片
Cacti是一個(gè)很棒的開(kāi)源網(wǎng)絡(luò)監(jiān)視系統(tǒng),它廣泛使用于圖形化地展示網(wǎng)絡(luò)元素,例如帶寬、存儲(chǔ)、處理器和內(nèi)存使用。使用它的基于Web 的界面,你可以輕松地創(chuàng)建和組織各種圖表。然而,它默認(rèn)并沒(méi)有提供一些高級(jí)功能,例如合并圖片、使用多個(gè)來(lái)源創(chuàng)建聚合圖形、遷移 Cacti 到另一臺(tái)服務(wù)器。使用 Cacti 的這些功能你還需要一些經(jīng)驗(yàn)。在該教程中,我們會(huì)看到如何在將兩幅 Cacti 圖片合并為一幅。
看看這個(gè)例子。在過(guò)去的 6 個(gè)月中,客戶端 A 連接到了交換機(jī) A 的端口 5。端口 5 發(fā)生了錯(cuò)誤,因此客戶端遷移到了端口 6。由于 Cacti 為每個(gè)接口/元素使用不同的圖,客戶端的帶寬歷史會(huì)分成端口 5 和端口 6。結(jié)果是對(duì)于一個(gè)客戶端我們有兩幅圖片 - 一幅是 6 個(gè)月的舊數(shù)據(jù),另一幅保存了后續(xù)的數(shù)據(jù)。
在這種情況下,我們實(shí)際上可以合并兩幅圖片將舊數(shù)據(jù)加到新的圖中,使得用一個(gè)單獨(dú)的圖為一個(gè)用戶保存歷史的和新數(shù)據(jù)。本教程將會(huì)解釋如何做到這一點(diǎn)。
Cacti 將每幅圖片的數(shù)據(jù)保存在它自己的 RRD(round robin database,循環(huán)數(shù)據(jù)庫(kù))文件中。當(dāng)請(qǐng)求一幅圖片時(shí),根據(jù)保存在對(duì)應(yīng) RRD 文件中的值生成圖。在 Ubuntu/Debian 系統(tǒng)中,RRD 文件保存在 /var/lib/cacti/rra,在 CentOS/RHEL 系統(tǒng)中則是 /var/www/cacti/rra。
合并圖片背后的思想是更改這些 RRD 文件使得舊 RRD 文件中的值能追加到新的 RRD 文件中。
情景
一個(gè)客戶端的服務(wù)在 eth0 上運(yùn)行了超過(guò)一年。由于硬件損壞,客戶端遷移到了另一臺(tái)服務(wù)器的 eth1 接口。我們想展示新接口的帶寬,同時(shí)保留超過(guò)一年的歷史數(shù)據(jù)。該客戶端希望只在一幅圖中顯示。
確定圖的RRD文件
圖合并的***步驟是確定與圖相關(guān)聯(lián)的 RRD 文件。我們可以通過(guò)以調(diào)試模式打開(kāi)圖檢查文件。要做到這點(diǎn),在 Cacti 的菜單中: 控制臺(tái) > 管理圖 > 選擇圖 > 打開(kāi)圖調(diào)試模式。
舊圖:
新圖:
從樣例輸出(基于 Debian 系統(tǒng))中,我們可以確定兩幅圖片的 RRD 文件:
- 舊圖: /var/lib/cacti/rra/old_graph_traffic_in_8.rrd
- 新圖: /var/lib/cacti/rra/new_graph_traffic_in_10.rrd
準(zhǔn)備腳本
我們會(huì)用一個(gè) RRD 剪接腳本 來(lái)合并兩個(gè) RRD 文件。下載該 PHP 腳本,并安裝到 /var/lib/cacti/rra/rrdsplice.php (Debian/Ubuntu 系統(tǒng)) 或 /var/www/cacti/rra/rrdsplice.php (CentOS/RHEL 系統(tǒng))。
下一步,確認(rèn) Apache 用戶擁有該文件。
在 Debian 或 Ubuntu 系統(tǒng)中,運(yùn)行下面的命令:
# chown www-data:www-data rrdsplice.php
并更新 rrdsplice.php。查找下面的行:
chown($finrrd, "apache");
用下面的語(yǔ)句替換:
chown($finrrd, "www-data");
在 CentOS 或 RHEL 系統(tǒng)中,運(yùn)行下面的命令即可:
# chown apache:apache rrdsplice.php
合并兩幅圖
通過(guò)不帶任何參數(shù)運(yùn)行該腳本可以獲得腳本的使用語(yǔ)法。
# cd /path/to/rrdsplice.php# php rrdsplice.php
USAGE: rrdsplice.php --oldrrd=file --newrrd=file --finrrd=file
現(xiàn)在我們準(zhǔn)備好合并兩個(gè) RRD 文件了。只需要指定舊 RRD 文件和新 RRD 文件的名稱。我們會(huì)將合并后的結(jié)果重寫到新 RRD 文件中。
# php rrdsplice.php --oldrrd=old_graph_traffic_in_8.rrd --newrrd=new_graph_traffic_in_10.rrd --finrrd=new_graph_traffic_in_10.rrd
現(xiàn)在舊 RRD 文件中的數(shù)據(jù)已經(jīng)追加到了新 RRD 文件中。Cacti 會(huì)將任何新數(shù)據(jù)寫到新 RRD 文件中。如果我們點(diǎn)擊圖,我們可以發(fā)現(xiàn)也已經(jīng)添加了舊圖的周、月、年記錄。下面圖表中的第二幅圖顯示了舊圖的周記錄。
總之,該教程顯示了如何簡(jiǎn)單地將兩幅 Cacti 圖片合并為一幅。當(dāng)服務(wù)遷移到另一個(gè)設(shè)備/接口,我們希望只處理一幅圖片而不是兩幅時(shí),這個(gè)小技巧非常有用。該腳本非常方便,因?yàn)樗梢圆还茉丛O(shè)備是不是 相同都可以合并圖片,例如 Cisco 1800 路由器和 Cisco 2960 交換機(jī)。
希望這些能對(duì)你有所幫助。





















