使用Grafana + simpod-json-datasource快速搭建数据看板

数据看板在很多时候都有使用,比如运维可视化监控,交易数据的实时展示,人流量的展示等,都需要有数据看板。

这里教大家使用Grafana+simpod-json-datasource快速搭建数据看板。

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:

1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;

2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;

3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;

4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;

5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;

6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

image-20200924205158471

一、安装grafana

官网下载地址:https://grafana.com/grafana/download

mac安装

wuxiaolong:~ macuser$ /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"  #使用brew
wuxiaolong:~ macuser$ brew update
wuxiaolong:~ macuser$ brew install grafana        # 安装grafana
wuxiaolong:~ macuser$ brew services start grafana # 启动grafana
wuxiaolong:~ macuser$ brew services restart grafana # 重启grafana

# grafana的配置文件所在位置:/usr/local/etc/grafana/grafana.ini 

centos、redhat安装

[root@iZuf61pdvb2o7cf4mu9ccyZ ~] wget https://dl.grafana.com/oss/release/grafana-7.2.0.linux-amd64.tar.gz
[root@iZuf61pdvb2o7cf4mu9ccyZ ~] tar -zxvf grafana-7.2.0.linux-amd64.tar.gz
[root@iZuf61pdvb2o7cf4mu9ccyZ ~] ./grafana-7.2.0/bin/grafana-server          # 前台启动
[root@iZuf61pdvb2o7cf4mu9ccyZ ~] nohup ./grafana-7.2.0/bin/grafana-server &  # 后台启动

# grafana的配置文件所在位置:./grafana-7.1.5/conf/defaults.ini 

启动后的默认端口:3000,默认的用户名密码:admin/admin

二、安装simpod-json-datasource插件

安装

[root@iZuf61pdvb2o7cf4mu9ccyZ ~] grafana-cli plugins install simpod-json-datasource  #安装这个simpod-json-datasource数据源

重新启动grafana就可以看到新的数据源插件了。

image-20200924213017784

安装插件是需要注意的是:

mac安装直接执行上面的命令后,重启即可。

centos、redhat安装后,执行上面的插件安装命令重启后,看不到新的数据源。因为这个插件安装后的默认位置是 /var/lib/grafana/plugins,需要手动将这个插件复制到./grafana-7.2.0/data/plugins目录下,因为defaults.ini配置文件中指定了插件读取的位置。或将配置文件中的位置修改为/var/lib/grafana/plugins。

# Directory where grafana will automatically scan and look for plugins
plugins = data/plugins

image-20200924211928242

后端项目要求

官方文档:https://grafana.com/grafana/plugins/simpod-json-datasource

方法提供的默认http服务数据源项目(node.js):https://github.com/bergquist/fake-simple-json-datasource

这个是我测试时使用java实现的数据源项目:https://gitee.com/wuxiaolongah/grafana-backend

实现simpod-json-datasource插件要求的数据源时,需要关注的几个问题:

1.需要实现四个接口: / /annotations /search /query

image-20200924213331496

2.接口返回的数据个格式固定

比如/query接口要求返回的数据格式:

image-20200924212747951

配置数据源

写好后端接口,部署完成后,在url中填入项目的地址,点击测试,测试通过即可

image-20200924213709317

三、新建dashboard面板

新建一个dashboard,然后可以建多个panel仪表盘。比如交易数据就是一个仪表盘。

image-20200924214108836

进入这个仪表盘,选择stat的展示方式,使用default的数据源(就是从上面配置的项目调用接口获得数据)。

Query inspector可以查看http请求获得数据的请求报文和响应结果。

Metric就是度量指标,可以通过调用数据源的http post /search接口获得的数据,可以查看我的项目。

Additional JSON Data可以给http post /query请求动态的添加参数,后端动态响应。 o r g n i z a t i o n c o d e 和 orgnization_code和 orgnizationcodept_date就是两个变量,每次查询都会动态的填充参数。

这两个参数的值可以从很多地方获取,比如这个panel提前定义的变量,或者url中获取。后面再说。

image-20200924214347843
后端可以获取这两个变量的值,进行相应的数据返回,后端可以从targets对象中获得变量值:
image-20200924220541151

四、动态传参

上面说的变量就是动态传参的结果。使用动态传参需要注意一下几点。

定义变量

点击panel右上角设置:

image-20200924215622414

新建变量:

image-20200924215736810

这里定义的变量名称orgnization_code,引用时使用$orgnization_code。类型type有很多,这里使用自定义,可以给多个默认值,使用逗号分隔。最后一定要注意save dashboard。

image-20200924215816489

定义完成后,就可以使用了,当dashboard加载时,变量会自动从这里的默认值获取对应的值,传递给后端的/query接口。

image-20200924220632930

使用url传参

上面定义完成后,如果url中有这个变量,就会使用url中这个变量的值动态获取后端数据。

https://XXXXXXXX.com/d/EybWfmKGz/ri-jiao-yi-bao-biao?orgId=1&kiosk&var-organization_code=00304&var-p_date=20200917

url中变量传参的格式为var-{变量名}={变量值}

五、改变展示方式

使用grafana一般做大屏展示数据,在dashboard的右上角可以改变展示的方式,选择全屏或tv等模式。

image-20200924221330380

点击后可以发现浏览器的url中多了一个参数kiosk,这就是展示的控制。

六、URL加上公共path

通常访问grafana可以直接使用https://XXXXXXXX.com/d/EybWfmKGz/ri-jiao-yi-bao-biao?orgId=1&kiosk&var-organization_code=00304&var-p_date=20200917,如果需要在https://XXXXXXXX.com/后面加一段公共的path路径做转发,可以修改配置文件:

修改root_url和serve_from_sub_path

image-20200924222044106

这样就可以使用https://XXXXXXXX.com/mdashboard/d/EybWfmKGz/ri-jiao-yi-bao-biao?orgId=1&kiosk&var-organization_code=00304&var-p_date=20200917访问了。

使用nginx做代理转发时,很有用。

关注公众号,输入“java-summary”即可获得源码。

完成,收工!

传播知识,共享价值】,感谢小伙伴们的关注和支持,我是【诸葛小猿】,一个彷徨中奋斗的互联网民工。

猜你喜欢

转载自blog.csdn.net/wuxiaolongah/article/details/108784957