《Cacti实战》——3.2 存储流程

简介:

本节书摘来自华章计算机《Cacti实战》一书中的第3章,第3.2节,作者:刘钊,张跃著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 存储流程

当数据通过SNMP或者脚本查询的方式被Cacti系统获取之后,这些数据会分门别类地存储,Cacti的工作流程就进入数据存储这一步骤。在Cacti系统中,数据一般会分为两种,一种是监控指标的数据,它们以普通文件的方式(rra文件)存储在文件系统中,另一种是系统必备的元数据,它们以结构化数据的方式存储在数据库中。下面分别介绍这两种数据是如何存储的。
3.2.1 RRDTool存储方式
在前面章节已经介绍了RRDTool基本知识,RRDTool的存储方式,也很有必要学习。RRDTool的存储方式比较有意思,简单来说,可以将这种存储方式比喻成一个圆钟,数据存储的时间节点就是圆钟上的分钟刻度,圆钟的箭头就好像读取数据的方式,它日复一日,年复一年地不断转动,没有起点和终点,指针可以一直往下走下去。每转动一圈,所有存储了数据的时间节点都会被重用,该循环过程会自动刷新原来的位置。这样的设计可以使存储的数据集不会增大,并且维护起来非常简单。
通过一个形象的例子说明RRDTool的数据存储原理。假设有一个设备需要监控,姑且叫做A设备,A设备运行起来之后会有很多描述运行状态的数据,我们把它想象成一个大型的数据池。RRDTool的工作就是要按照用户的要求获取指定的数据并保存起来。假设需要RRDTool以3种方式来读取数据,即每5分钟采集一次数据、每20分钟(4个5分钟)采集一次数据和每一小时(12个5分钟)采集一次数据。
在3-4图中,RRDTool会每5分钟采集一次数据,并保存在一个rra文件中,当运行到20分钟时,以每5分钟采集一次数据的方式进行到了第4次,这一次的数据不仅会被每5分钟采集数据的策略存储下来,同时它作为一个每20分钟采集数据策略的第一个数据存储下来。以此类推,当每5分钟采集数据进行了12次之后,第一个每小时采集数据的策略也会记录它的第一个数据。

image

从这个过程中不难发现,对于采集同一指标的数据,RRDTool可以按照时间策略存储多个rra数据文件,并且rra文件采用固定大小来存储,当数据写满之后,之前写过的位置会被系统重用写入新的数据。
3.2.2 数据库存储方式
数据库存储通常用来保存Cacti系统必备的元数据内容,那么什么是元数据呢?简单来说就是“描述数据的数据”(data about data)。其中,后一个data是指被描述的信息资源,前一个data则是指为理解该信息资源而存储的有关信息,即元数据。例如,一组数据“15,26,31,15”,如果没有元数据对它进行描述,这一组数据就毫无意义,假如有一组元数据将它描述为“今天夜间的最低气温,明天白天的最高气温,一周之内的最高气温,一周之内的最低气温”,那么前面的4个数字变成了表达天气的数据,就变得有意义了。如果我们换一组元数据为“停车场1楼的空车位,停车场2楼的空车位,停车场3楼的空车位,停车场4楼的空车位”,则这一组数字就变成了描述空车位的数据。这就是元数据的作用。
Cacti系统将元数据保存在MySQL数据库中,通过关系型数据结构的方式存储。通过查看其中一个数据库来了解Cacti数据库的表结构存储了哪些元数据信息。如表3-1所示,“plugin_config”数据库的主要作用是存储用来描述Cacti插件的基本信息。从字段注释,不难看出Cacti数据库的主要作用就是存储描述Cacti系统的各种元数据。
image

附录完整呈现了Cacti数据库的结构,这里为节省篇幅不再赘述。

相关文章
|
16天前
|
SQL 存储 关系型数据库
轻松入门MySQL:简明教程解析数据存储与管理(1)
轻松入门MySQL:简明教程解析数据存储与管理(1)
|
4月前
|
监控 前端开发 应用服务中间件
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
411 0
|
8月前
|
运维 监控 关系型数据库
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(二)
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(二)
71 0
|
8月前
|
运维 监控 关系型数据库
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)(一)
【运维知识进阶篇】zabbix5.0稳定版详解4(用脚本自定义监控项+监控MySQL状态信息)
100 0
|
8月前
|
运维 监控 关系型数据库
【运维知识进阶篇】zabbix5.0稳定版详解1(安装+部署+添加服务器+拆分数据库)(二)
【运维知识进阶篇】zabbix5.0稳定版详解1(安装+部署+添加服务器+拆分数据库)(二)
138 0
|
8月前
|
运维 监控 Kubernetes
【运维知识进阶篇】zabbix5.0稳定版详解1(安装+部署+添加服务器+拆分数据库)(一)
【运维知识进阶篇】zabbix5.0稳定版详解1(安装+部署+添加服务器+拆分数据库)
268 0
【运维知识进阶篇】zabbix5.0稳定版详解1(安装+部署+添加服务器+拆分数据库)(一)
|
监控 关系型数据库 应用服务中间件
|
存储 PHP 关系型数据库