一种 Grafana 数据源插件开发的方案(纯后端)

栏目: 数据库 · 发布时间: 5年前

内容简介:目前, Grafana官方已支持多种数据源, 例如: Prometheus, InfluxDB, MySQL, OpenTSDB, Elasticsearch等, 已经能满足绝大部分的需求. 但是, 在某些特定的情况下可能需要编写自己的数据源插件, 这要求开发者懂一些前端的东西, 笔者是个前端文盲, 因此另辟蹊径研究了纯后端的实现方案.Grafana前端(配置Panel来可视化数据, 这里选择配置好的InfluxDB数据源), 首先Panel(可以是Graph或者其他图表)会发送请求获取数据然后再进行渲染,

背景

目前, Grafana官方已支持多种数据源, 例如: Prometheus, InfluxDB, MySQL, OpenTSDB, Elasticsearch等, 已经能满足绝大部分的需求. 但是, 在某些特定的情况下可能需要编写自己的数据源插件, 这要求开发者懂一些前端的东西, 笔者是个前端文盲, 因此另辟蹊径研究了纯后端的实现方案.

基本要求

  • 后端开发

    Java, php, Golang, Python等都可以实现, 只要能满足需求即可, 本文以Golang为例.

  • Nginx或者其他七层负载均衡器

    这个只要求会一些的简单请求参数判断就可以了, 本文以Nginx为例.

原理概述

Grafana前端(配置Panel来可视化数据, 这里选择配置好的InfluxDB数据源), 首先Panel(可以是Graph或者其他图表)会发送请求获取数据然后再进行渲染, 数据会通过配置好的InfluxDB数据源向实际的后端数据源获取, 此时我们在实际数据源和数据源插件之间增加一个Nginx来代理请求, 通过特定的查询语句的前缀来区分是否是我们自定义的请求, 如果是那么代理到我们自己的上游后端, 否则直接转到原来的后端(也就是真正的InfluxDB), 这样一来我们就完成了对Grafana前端的"欺骗", 届时我们自己的后端按照InfluxDB数据源要求的格式返回数据即可, 换作是Prometheus数据源活着的其他数据源也是类似的, 这样,就极大的扩展了支持的数据源, 因为后端就算不是对应的数据源也可以提供数据了.

实施

这里只提供一个简单的例子.

  • 后端实现:

  • Nginx配置

  • Grafana Graph 面板 查询语句为:  myprefix{"from":$__from,"to":$__to,","protocol":"test"}

注: 首先我们要选择InfluxDB作为数据源, 然后这里的 myprefix 一定要跟Nginx那边的参数判断保持一致, 这样才能进行区分, 另外查询语句可以自己定义格式, 我这里是比较通用的Json格式, 里面的参数可以加入Grafana本身的变量以及自己定义的变量, protocol 这个是用来区别具体请求的(例如获取CPU使用率, 获取内存使用率等, 根据自己的需求来定义).

最后

该方案算是有点投机取巧, 不过在某些需要的情况下还是可以使用的, 可以作为开发自定义数据源插件的一个扩展吧, 如果有前端资源的话, 还是建议按照官方流程来做.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数字化生存

数字化生存

尼葛洛庞帝 / 胡泳 等 / 海南出版社 / 1997-2 / 16.80元

《数字化生存》可以说是二十世纪信息技术及理念发展的圣经,此书的流行和传播对上个世纪信息时代的启蒙、发展产生了深远的影响,本书深入浅出地讲解了信息技术的基本概念、趋势和应用、巨大的价值和数字时代的宏伟蓝图,阐明了信息技术、互联网对时代和人们生活的影响和价值。作者尼葛洛庞帝成为了信息技术投资和趋势分析领域的教父,他的知名度和因此带来的无形价值不可估量。一起来看看 《数字化生存》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试