且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

对CACTI数据库结构的一点分析

更新时间:2022-10-01 19:30:23

因为我的需要主要是根据主机名和数据类型来取相关RRA数据,所以对一些关系不大的部分就没作进一步分析。就我需求而言,以下的几个表是很重要的被用于定位RRA文件路径(连文件名):
host        主机名表,主要字段:id, hostname
data_local  数据源表,主要字段:id, data_template_id, host_id, snmp_query_id, snmp_index
data_template 数据模板表, 主要字段:id
data_template_data 数据源信息表,主要字段:id, local_data_id, data_template_id, data_input_id, data_source_path, name_cache
其中host表的iddata_local表的host_id关联,data_local表和data_tempate_data表的data_template_iddata_templateid关联;data_template_data表的local_data_iddata_local表的id关联。
基于上述信息可以查到任意一个给定主机的所有RRA文件信息(data_tempate_data表的data_source_path字段)。
不过要查给定一种数据类型的数据,还需要进一步的约束条件。这里要分几种情况来分析:
第一种,类似CPU/LoadAverage等对应MIBII库限定OID数据类型的情况:
新引进以下一个表来继续分析:
data_input_data     查询输入数据信息表,主要字段:data_template_data_idvalue
其中的value字段就是用来存储数据类型所对应OID的。用其data_template_data_iddata_template_data表的id关联即可实现该约束的加强。
 
第二种,用data_query方法和XML文件定义来实现数据模板的数据类型的情况:
需新引进以下一个表来继续分析:
snmp_query_graph_rrd 数据源查询字段表, 主要字段:data_template_idsnmp_field_name
其中的snmp_field_name字段就是用来存储数据类型相关SNMPNODE DESCRIPTION的,用其data_template_iddata_template_data表的data_template_id关联,即可实现该约束的加强。
 
第三种,这是第二种情况的延伸,即data_query方法是属于index类的(即返回多列数据,由返回列的描述字段来自扩展数据源)。

data_local表的snmp_indexdata_template_dataname_cache来实现该约束的加强。


本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/46080