orabbix结合python发送图形报表(一)

简介: 在数据库的运维工作中,如果有一种运筹帷幄的感觉,那么其中一种方式就是看报表,比如喝着咖啡缓缓打开电脑,几十台,上百台的机器的负载明细都在眼底。如果某个地方出现了异常或者明显的抖动,在报表中也能够很清晰的显示出来。
在数据库的运维工作中,如果有一种运筹帷幄的感觉,那么其中一种方式就是看报表,比如喝着咖啡缓缓打开电脑,几十台,上百台的机器的负载明细都在眼底。如果某个地方出现了异常或者明显的抖动,在报表中也能够很清晰的显示出来。
目前这种情况还是很难实现,但是我们可以创造,之前的博文中也分析过了zabbix+orabbix的监控方式,还是存在很多亮点,在监控和定制功能上确实很强大,gc功能本身就很强大,但是扩展相对还是比较困难的。
首先我们来show一个概览图,这个是我们努力的目标。比如我们有几十台DB服务器,在开始工作前看看这个报表无疑会让你的工作针对性更强,哪些是需要重点关注的,哪些可能是潜在的问题,哪些问题迫在眉睫需要解决。

比如我们收到了下面的形式的邮件,描述的是4台DB在过去的24个小时内的等待事件,是不是相对来说感觉要清晰一些,当然我们还可以扩展其它的监控项。

要实现这个效果,着实不是一件容易的事情。
自己也是各方找了各种资料,也是在不断的失败经历中总算看到了一丝曙光。
首先要通过zabbix得到这个图片,大体的原理如下:
要得到一个基本的图形,除了基本指定长宽之外,最主要的就是graphid和screenid这两个属性

orabbix会把数据通过Jdbc得到后传给zabbix中的mysql表中,当需要取得对应的数据信息时,通过图形的方式还是要依赖screenid和graphid,在对应的表中进行关联得到数据的变化情况。
明白了基本原理,我们为了实现发送邮件中嵌入图形的需求,就需要把这些图形以附件的形式发送邮件。
按照这个思路还是有几件必须要完成的事情,
1.知道screenid和graphid和mysql表的关联关系
2.利用screenid和graphid得到对应的报表图片
3.把图形存储在临时目录下
4.把图形以附件的形式发送。

第1步从网络中也会得到一些基本的信息,如果想得到更多的明细信息,似乎资源也有限,从我的实验来看,表关联关系和网络还是存在一定的差别,最后我是根据几个关联表的数据反复比较,最后也算是找出了规律,后面详细介绍表关联关系的细节。
第2步通过screenid和graphid得到对应的报表图片,这个步骤是基于第1步,我们可以做基本的测试,得到图片的url格式,然后把一些非必须字段,比如长宽等给定一个默认值即可。
第3步需要把图片能够下载下来存放在临时目录下,这个过程还是需要借助脚本来完成,这方面python的强大的web功能就派上了用场。可以基于根据url下载图片,然后把图片放入web服务器的默认路径下,比如/var/www/zabbix/reports
第4步就是借用邮件发送的功能来把图片放入附件中,这个部分还是使用python来做,把步骤3,步骤4的功能都独立成对应的功能点。
看起来各个功能还是紧密关联的,但是我们可以把它拆分开来,比如我们可以直接实现第4步,模拟我们收到了图片的场景即可。
得到图片graphid和screenid的部分,我们可以在已有的监控图中查看属性得到一个url样例,然后按照这个格式来进行修改定制。
如果实现得都差不多了,再回到第一步来解析数据字典也不迟。解析数据字典的比偶关联有点懵懵懂懂,压根没有datamodel之类的详细文档,好在开源项目的表结构还是很清晰,还是能够基本看出字段,表名的含义,比较清晰,侥幸解析出来了关联关系。

详细的步骤在第二篇中进行分析。
目录
相关文章
|
Python
Python基础教程(第3版)中文版 第12章 图形用户界面 (笔记)
Python基础教程(第3版)中文版 第12章 图形用户界面 (笔记)
158 1
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
358 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
在Python中,`tkinter`是一个用于创建图形用户界面(GUI)的标准库。
在Python中,`tkinter`是一个用于创建图形用户界面(GUI)的标准库。
|
开发框架 Python
Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。
【6月更文挑战第21天】Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。要开始,先通过`pip install pygame`安装。基本流程包括:初始化窗口、处理事件循环、添加游戏元素(如玩家和敌人)、响应用户输入、更新游戏状态及结束条件。随着项目发展,可逐步增加复杂性。
501 1
|
存储 前端开发 人机交互
23.Python 图形化界面编程
23.Python 图形化界面编程
322 2
|
Python 容器
Python与GUI编程:创建图形用户界面
Python的Tkinter库是用于构建GUI应用的内置工具,无需额外安装。它提供了丰富的控件,如按钮、文本框等,让用户通过图形界面与程序交互。创建GUI窗口的基本步骤包括:导入Tkinter库,创建窗口对象,设置窗口属性,添加控件(如标签和按钮),并使用布局管理器(如`pack()`或`grid()`)来组织控件的位置。此外,可以通过绑定事件处理函数来响应用户操作,例如点击按钮。Tkinter还有更多高级功能,适合开发复杂GUI应用。
|
存储 数据可视化 算法
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
|
数据可视化 Linux 数据格式
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
|
人工智能 监控 数据可视化
bashplotlib,一个有趣的 Python 数据可视化图形库
bashplotlib,一个有趣的 Python 数据可视化图形库
228 4

推荐镜像

更多