温馨提示:在读取本文之前请先确保自己对cacti的基本知识有了一定的了解(了解数据输入方法、数据模板、图形模板、主机模板的配置和使用)
声明:本文旨在分析cacti的数据库结构以便于在其基础上进行二次开发。
一、与数据输入方法相关的数据库表结构
与数据输入方法直接相关的表有三个,分别为data_input表、data_input_fields表以及data_input_data表
①data_input存放了数据输入方法的基本信息
表结构如下:
id:数据输入方法主键
hash:cacti利用自己定义的get_hash_data_input函数基于id生成的hash值
此方法在cacti源码中经常被使用,其使用方式如下:
name:数据输入方法的名称
input_string:数据输出方法对应的输入字符串
type_id:数据输入类型id,对应关系如下:
1 Script/Command
2 SNMP
3 SNMP Query
4 Script Query
5 Script - Script Server (PHP)
6 Script Query - Script Server
库表实例(红框内为自己定义的一个数据输入方法):
②data_input_fields存放了数据输入方法的输入输出字段
表结构如下:
id、hash:略过
data_input_id:指向data_input表的外键,表示该输入/输出字段关联的数据输入方法
name:字段名称
data_name: 字段对应的数据名称
input_output: 输入/输出字段的标识位
update_rra:是否更新rra
sequence:该字段的序号(是第几个字段,用于表明是第几个输入字段)
type_code:指定给该字段的类型代码(用户输入字段)
regexp_match:输入的数据要匹配的正则表达式
allow_nulls:输入数据是否允许为空
库表实例(红框内是adm_tt方法对应的输入输出字段信息):
③data_input_data表存放的是数据输入方法每个输入字段的输入数据(也是从此表出发建立了与数据模板的联系)
其库表结构如下:
data_input_field_id:指向data_input_field的外键
data_template_data_id:指向data_template_data的外键
t_value:自定义的数据输入方法一般为空
value:输入字段对应的数据
库表实例(红框内对应着数据输入方法adm_tt的输入字段ip对应的数据信息,有好几条的原因是有多个数据模板引用了这个数据输入方法,值得注意的是即使未来你删除了这些数据模板但是次数的数据仍不会被删除):
二、与数据模板相关的库表结构
未完待续……
本文出自 “Rocky___” 博客,请务必保留此出处http://zutianbiao.blog.51cto.com/1361296/1374250