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