监控MySQL从数据采集到前端展示(1)-呼声和响应

二次开发过zabbix图形展示功能,用rrd存放图形数据和绘图并将应用和硬件信息按主机分开展示,并将该功能集成到运维平台,使用查阅方便了不少。
如果有个需求,需要集中监控或展示线上众多的MySQL实例状态,根据QPS动态排序展示,某些特别点的mysql线程抓取,定义的监控项图形等。继续在zabbix的监控数据中挖掘再二次开发,未必不可,但是感觉没有那么灵活。故需要为监控MySQL实例专卖开发一个简单的分布式监控系统。
为了维护方便,一个地区(内网互通的机房)只部署一个监控程序,最后再由一个proxy节点专门汇总各个地区的监控数据:

mysql

部署的监控程序输量只随机房的增加而增加,不随实例的增加而增加,大大降低了维护成本,数据采集3个机房就只要3个监控程序和一个中心的proxy汇总程序。
数据采集采用的go编写,主要用go的协程,高并发采集不同实例的监控数据。
前端展示集成在运维平台,Django框架。
各个实例状态概览:
mysqlMonitor01
列表展示相信监控指标:
mysqlMonitor02
图形展示和预警点数据:
mysqlMonitor03
图形下面是预警点和某点的具体线程SQL语句:
mysqlMonitor04

3 Comments

 Add your comment
  1. 博主。想问问你
    你自己写的监控系统
    用的WEB框架是django吗。
    数据的采集端是自己写还是直接使用开源监控系统做二次开发
    一直想做这样的东西。但是一直滞留于如何写WEB后台以及前台的内容 感觉很无奈

  2. 嗯,WEB框架用的Django。更据Django官方文档死磕即可,web页面展示不需要花太多精力,网上有很多基于Bootstrap的开源的管理后台模版,拿来按自己的需求稍加修改即可,需要有一定的css、html、js基础,可以一边开发一边学。后台数据组织需要花点功夫,先用简单的例子大致弄清楚Django的机制,然后就慢慢堆逻辑代码。用到最多的就是从数据库获取数据展示成表格或图片,处理异步加载需要写API接口,简单理解就是返回你想要的数据(例如json格式的数据)不涉及模版渲染。运维开发还要熟悉你环境各个工具API的调用。一步一步来,发现也没有那么无奈:)

  3. 谢谢博主的提示,因为以前已经做过django的官方例子,但是一直不知道如何下手,在博主的提示下,试着建立了数据库结构并简单的通过django将数据展示出来了,当然前台的部分我就先不考虑了(因为没有前台基础 看上去很丑),我希望能够将后台部分完善后再来将前台完善。
    在这个过程中还有一些问题想问问博主:
    1.关于上次我提到数据采集端,网上有很多采集的方法,例如ssh\snmp亦或是直接使用开源监控系统的采集端,我想问问博主采取的方法是什么
    2.关于博主上次提到的json数据的构建,是否是因为使用了echarts所以需要构建json数据进行图形化
    因为刚刚进入运维这一块 所以小白问题很多 希望博主有空的话能解答一下 感激不尽

发表评论:

你的电子邮件地址将不会被公开.

÷ 5 = 2