Cacti的庫表結(jié)構(gòu)-Graph
cacti 我們也用了很久了,但是它的表結(jié)構(gòu)一直都沒有去關(guān)心過,得空抽了半個晚上的時間,把它的庫表結(jié)構(gòu)大概看了下,某些字段的含義跟大家分享下:
cacti 的數(shù)據(jù)都是存放在rrdtool 中的,數(shù)據(jù)庫存放的其實只是配置數(shù)據(jù),cacti 的邏輯對象主要分為三種,data (數(shù)據(jù))、graph (圖片)、host (設(shè)備),這在它的表設(shè)計中也能很容易的看出來。所以,就分三個大類來討論了
Graph
繪圖方面,自定義的方法其實很多, cacti 并沒有把 rrdtool 在繪圖方面的參數(shù)全部表現(xiàn)出來,不過也已經(jīng)夠用了。
1 、 graph_local 表
本地的圖片,和 data_local 類似,一般來講,一個 data_local 的對象,都會對應一個 graph_local 的對象,意思就是,一個數(shù)據(jù),對應一張圖片,但是也有可能出現(xiàn)不對應的情況,那就是:我有些數(shù)據(jù)并不繪圖、或者有些圖我需要多個數(shù)據(jù)。
表結(jié)構(gòu)和 data_local 類似,不過 data_template_id 換成了 graph_template_id ,***個 id 字段代表的含義也變了,代表 graph 對象。
2 、 graph_templates 表
繪圖模板。
id :模板的 id
hash :索引
name :名稱
3 、 graph_template_input 表
graph_template 對應的具體對象類型,比如說這個類型是個顏色,這個類型是流量數(shù)據(jù)流入的數(shù)據(jù)源,等等。
id :數(shù)據(jù)類型的 id
hash :索引
graph_template_id :圖片模型的 id ,在 graph_template 中定義
name :名字
description :不作說明了
column_name :對象的類型,是顏色,還是數(shù)據(jù)源,還是一段文字
4 、 graph_template_input_defs 表
定義圖中的具體對象類型和 item 的對應。
graph_template_input_id : graph_template_input 的 id ,類型是什么
graph_template_item_id :具體對象的 id ,在 graph_templates_item 中定義
5 、 graph_templates_gprint 表
輸出格式
6 、 graph_templates_graph 表
繪圖時候的選項,每張圖在這張表中對應一條記錄,大多是 rrdtool 的參數(shù)。和 data_template_data 類似。
id :繪圖選項的 id
local_graph_template_graph_id :如果采用模板的話,這里就是模板的 id 。模板中定義好的東西,就不用重新定義了。在本張表中有定義
local_graph_id :是哪張圖,在 graph_local 中定義
graph_template_id :在 graph_templates 表中定義的繪圖模板
剩下的都是 rrd 繪圖的選項了,例如繪的圖有多高,多寬,圖片的名字是啥等等 ......
7 、 graph_templates_item 表
每張圖上,對應的有些什么內(nèi)容。內(nèi)容主要是包含:線或者是面,就是趨勢圖、下面的標注,例如***值,最小值,當前值。
id : item 的 id
hash :
local_graph_template_item_id :如果采用了模板,則寫模板的 id ,在本表中定義
local_graph_id :對象屬于哪張圖
graph_template_id :在 graph_templates 表中定義的繪圖模板
task_item_id :如果對象的類型是 task_item_id (在 graph_template_input 中定義),則這里的 id 就是數(shù)據(jù)源的 id ,在 data_template_rrd 中定義。
color_id :顏色,在 color 表中定義
alpha :透明度
graph_type_id :圖的類型?
cdef_id :如果這個值是計算出來的(例如多個值的累加),那這里要有計算的公式,在 cdef 表中定義
consolidation_function_id :功能函數(shù),比如取平均值,取***值等
text_format :字符串,直接顯示在圖上的東東,可以理解為對象的名字
value :值
hard_return :不知
gprint_id :輸出格式
sequence : rrd 的繪圖是有順序的, sequence 大的對象會覆蓋 sequence 小的對象
繪圖的地方,是最復雜的地方,因為 rrdtool 本身在繪圖的時候參數(shù)就是最多的,也是最復雜的,把這些東西都封裝到數(shù)據(jù)庫中,那這些表結(jié)構(gòu)也是十分復雜的。一般情況下,可以這么理解:
1 、每個 host_id 的對象,可以對應多張圖,但是也有可能有某些圖并不對應任何 host ,例如匯總的圖。但是每張圖必然在 graph_local 中有定義,就是有一個 local_graph_id 。
2 、每張圖片,在創(chuàng)建的時候肯定有很多參數(shù),這些參數(shù)就是在 graph_template_graph 中定義的。如果采用了模板,那模板中定義過的參數(shù),就不用再重復定義了。
3 、每張圖片,必然包含一個以上的對象,那就是 graph_template_item 了, item 有很多類型,例如,流量圖中,綠色區(qū)域代表的流出、藍色實線代表的流出,就分別代表一個對象。還有些對象,例如下標的***值,平均值等。這些對象,都是需要有數(shù)據(jù)源的,可能一個數(shù)據(jù)源,也可能需要多個,因為實際繪出來的值,是 cdef 把不同的數(shù)據(jù)源運算后得到的。這個數(shù)據(jù)源,就是 ds ,也就是 data_template_rrd 中的對象。
【編輯推薦】