当前位置: 首页 > 科技观察

后端程序员也可以用Grafana做漂亮的可视化界面!

时间:2023-03-22 12:37:26 科技观察

前言Grafana有非常漂亮的图表和布局展示,全功能的measurementdashboard仪表盘和图形编辑器。本文主要是记录和学习如何使用mysql创建自己的可视化监控仪表盘。要安装grafna,使用下面的命令直接安装grafna。或者下载.tar.gz包并自行安装。sudoapt-getinstall-yapt-transport-httpssudoapt-getinstall-ysoftware-properties-commonwgetwget-q-O-https://packages.grafana.com/gpg.key|sudoapt-keyadd-sudoadd-apt-repository"debhttps://packages.grafana.com/oss/debstablemain"sudoapt-getupdatesudoapt-getinstallgrafana仪表板中最基本的视觉单元是面板。每个Panel都可以配置自己的查询数据源和数据查询方式。当然这里我们使用的是Mysql作为数据源,其查询方式是Sql语句。展开思路:由于每个Panel是完全独立的,一个Dashboard可能往往包含来自多个DataSource的数据。也就是说A面板可以从mysql查询数据,B面板可以从es查询数据,非常灵活,可以自由组合。Grafna启动相关命令查看grafnastatussudosystemctlstatusgrafana-serverrestartgrafnaservicegrafana-serverrestart配置grafna等操作,可以参考官方文档:https://grafana.com/docs/grafana/latest/installation/configuration/运行官网caseGrafana还专门为Dashboard提供分享服务,大家也可以上传自己的漂亮界面供大家参考交流。入口是:https://grafana.com/dashboards这里我用的是id为7991的监控面板。添加mysql数据源首先在左侧菜单栏的配置项中选择数据源。grafna支持的数据源非常多。这里我们手动搜索mysql。选择后,填写具体的数据库地址和密码,并保存。导入面板解决报错。导入面板后提示TemplatinginitfailedError1146:Table'my2.status'doesn'texist错误。这是因为我们还有工作要做。监控mysql时,需要在运行mysql服务器的机器上。安装my2.status表,根据官网面板的说明找到github仓库地址:https://github.com/meob/my2Collector在数据库中执行my2.sql导入结果。效果如下:从描述中我们可以看出,My2Collector(my2)是一个简单的、自包含的MySQL统计收集器,my2每隔10分钟自动执行一个存储过程来收集Mysql的一些性能数据。版本支持my2可以连接到任何版本的MySQL、MariaDB、Percona或其他分支,但是……发布的许多统计数据不适用于旧版MySQL。my2使用的计划作业从MySQL5.1(2008)开始可用。PROCESSLIST表从5.1.7开始可用。并且GLOBAL_STATUS从5.1.12开始可用。PERFORMANCE_SCHEMA是在5.5版本中引入的,在5.6版本中得到了极大的增强。不同的MySQL版本之间存在许多细微差异:My2可感知并兼容,尝试收集所有可用信息,对于MySQL8.0,提供不同的脚本,my2在启用性能模式的MySQL5.7上运行,MySQL8.0并且已达到最大值在MariaDB10.x中发布。实战中,基于Mysql业务表创建最简单的列表进行监控,在面板中选择表类型的面板。可以使用特定的别名来编写查询sql语句。多折线图特别注意时间序列:返回需要在列名中有time或time_sec的列,作为unix时间戳或任何sql原生日期。特别注意这里的时间转换函数:usage-$__time(column)->UNIX_TIMESTAMP(column)astime_sec-$__timeEpoch(column)->UNIX_TIMESTAMP(column)astime_sec-$__timeFilter(column)->columnBETWEENFROM_UNIXTIME(1492750877)ANDFROM_UNIXTIME(1492750877)-$__unixEpochFilter(column)->time_unix_epoch>1492750877ANDtime_unix_epoch<1492750877-$__unixEpochNanoFilter(column)->column>=1494410783152415214ANDcolumn<=1494497183142514872-$__timeGroup(column,'5m'[,fillvalue])->cast(cast(UNIX_TIMESTAMP(column)/(300)assigned)*300assigned)bysettingfillvaluegrafanawillfillinmissingvaluesaccordingtotheintervalfillvaluecanbeeitheraliteralvalue,NULLorprevious;previouswillfillinthepreviousseenvalueorNULLifnonehasbeenseenyet-$__timeGroupAlias(column,'5m')->cast(cast(UNIX_TIMESTAMP(column)/(300)assigned)*300assigned)AS"time"-$__unixEpochGroup(column,'5m')->columnDIV300*300-$__unixEpochGroupAlias(column,'5m')->columnDIV300*300AS"time"从上面的规则可以看出,如果data中的数据类型如果是bigint,则需要使用时间过滤器:$__unixEpochFilter(data_time/1000)直方图只需要在折线图配置的基础上,将model改为Bars即可显示直方图。Graph中的选项有:General(一般选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、Display(显示样式)、Alert(警报)、Timerange(时间范围)Grafana是一个Go语言编写的开源应用,主要用于大规模指标数据的可视化展示,是网络架构和应用分析中最流行的时序数据展示工具,目前支持大部分常用的时序数据库。希望这篇文章能帮到你。

最新推荐
猜你喜欢