IT技术学习之开发(三)

先声个明:

我写技术文章的目的可能就是充个数,因为最近几个月都在钻研技术,没时间思考主要方向。既然花费了大量精力来搞技术,不如当个文章写出来。技术大牛请绕行,初学者可能也学不到什么基本功,就是个个人学习成长血泪史,兴许可以替同路人铺个把个坑儿。

下面继续挖坑儿......

上回说到用Python写数据库测试脚本。之后我就开始摸索zabbix数据库结构,因为之前用API调用时知道了几个关键表,所以直接就拿来用了,其他的表对于不同的需求也都非常有用,多数都能和zabbix页面上的选项对应上。

zabbix安装时导入的表结构里包含140个表,我这里多了一个,就是第一列的django_migrations,这是因为我把zabbix数据库导入到了Django框架里,这个以后再介绍。主要的表有groups、hosts、hosts_groups、items、trends和trends_uint。history系列的表是zabbix收集的原始数据,数据量庞大,实在不敢调用,我们这的数据量就有14亿条。下面分别来看看各表的结构。

groups表里存放的是组ID和组名,查询结果举例如下。

有了这个表,我们就可以把组名和组ID对应起来,由于我们是按项目分组,所以找到组名对应关系是向下查找的第一步。

hosts_groups表储存的是组ID和主机ID对应的表,每个组和组下的主机一一对应产生了主机组ID,我们只要拿到组和主机的对应关系就可以了,主机组ID暂时没啥大用。举例如下。

我通过刚才查到的组ID,查到了该组下的所有主机ID。

hosts表里的项就多了,大部分我还不知干啥用的,因为没用到。。唯一用到的只是name这项,为了做报表用。例子如下。

通过hostid,我可以查到name这项的值。

items表就更多了,它是zabbix监控项,是主机信息和数据的交汇处,所以接口比较多。例子如下。

从SQL语句可以看出,我只查询了itemid和name两项,每个主机的监控项有很多,从zabbix页面上就能看见,我只截取了一段。查items的目的也只是通过hostid得到这两项的值。

trends和trends_uint就是我最终想要得到的数据,通过itemid,可以查到该监控项里clock时间对应的最大、最小和平均值。这两表的区别在于存储的数据类型略有不同,有没有正负号的区别,但好像还有是不是百分数的区别,具体还是去网上查查的好,别被我带坑儿里。例子如下。

好了,数据库简单地搞明白了,下次就用Python来调用数据库中的数据了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180530G2059U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券