Grafana使用MySQL数据源

Grafana内置提供了MySQL数据源插件,也就是可以直接查询和可视化MySQL兼容的数据库数据。

这在日常运维工作中非常有用,因为大多数后端开发和运维工程师都不擅长前端开发,自己使用框架开发图表虽然也可行,但是毕竟效率较低,且很难达到Grafana这样专业的水准。虽然各大互联网公司都有自己的大数据平台和可视化报表系统,但是专有闭源平台往往非常沉重使用不变。对于个人和中小型公司,实际上使用 Grafana 结合数据库就能构建非常好的BI系统。

准备工作

  • 首先完成 安装MariaDB ,获得可运行和访问的MySQL数据库:

快速安装、启动和初始化MariaDB
sudo yum -y install mariadb-server
sudo systemctl enable --now mariadb
sudo /usr/bin/mysql_secure_installation
创建一个数据库并创建访问账号及授权
create database mydb character set utf8;
grant usage on mydb.* to myapp_user@'%' identified by 'myapp_passwd';
grant all privileges on mydb.* to myapp_user@'%';
flush privileges;
  • 比较简单的方式是通过程序脚本、日志系统,向MySQL数据库加载数据

  • 创建一个 grafanareader 只读查询账号并赋予查询权限:

创建 grafanareader 只读查询账号并赋予查询权限
 grant usage on notifier.* to grafanaReader@'%' identified by 'PASSWORD';
 grant select on notifier.* to 'grafanaReader';
 flush privileges;

配置数据源

  • 在左方导航菜单选择 Connections => Data sources ,然后点击 Add new data source 按钮

  • 选择 MySQL 数据源

  • 输入配置:

../../../_images/grafana_mysql_data_source.png
  • 测试通过后保存,然后就可以到dashboard中去构建查询

查询

Grafana提供了Query Builder,只需要选择MySQL数据源,就可以依次选择数据表,列进行查询;当然SQL语法可以直接使用,所以也可以在MySQL中先采用标准SQL查询好符合预期的结果,然后再输入到 Grafana 的 Query Code栏进行查询

  • 数据查询: 按天纬度查询每日告警数据量

按照每天统计告警数量
SELECT count(alert) as 告警数量, date(gmt_create) as 日期 FROM notifier.notifier_alert_statistics
    where gmt_create between '2023-07-01 00:00:00' and '2023-07-31 23:59:59' 
    GROUP BY date( gmt_create ) order by date(gmt_create);

MySQL查询语句可以直接在Grafana中使用,只需要构建DashBoard的可视化面板时选择MySQL数据源,然后选择正确的Graph就可以(注意:Grafana图表是按时间序列,所以统计数据如果没有时间需要就需要使用表格或特定图表),效果类似如下:

../../../_images/grafana_mysql_datasource_query.png

参考