Grafana使用MySQL数据源¶
Grafana内置提供了MySQL数据源插件,也就是可以直接查询和可视化MySQL兼容的数据库数据。
这在日常运维工作中非常有用,因为大多数后端开发和运维工程师都不擅长前端开发,自己使用框架开发图表虽然也可行,但是毕竟效率较低,且很难达到Grafana这样专业的水准。虽然各大互联网公司都有自己的大数据平台和可视化报表系统,但是专有闭源平台往往非常沉重使用不变。对于个人和中小型公司,实际上使用 Grafana 结合数据库就能构建非常好的BI系统。
准备工作¶
首先完成 安装MariaDB ,获得可运行和访问的MySQL数据库:
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
只读查询账号并赋予查询权限:
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
数据源输入配置:
测试通过后保存,然后就可以到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图表是按时间序列,所以统计数据如果没有时间需要就需要使用表格或特定图表),效果类似如下: