关于

  • 格拉法纳是一个仪表板工具,可以可视化各种数据
  • 这篇文章我会在本地环境下快速试用
    • 在 Docker 上准备 Grafana 和 MySQL 容器
    • 使用 MySQL 创建合适的数据库
    • 在 Grafana 中查看该数据
    • (无需用户注册或登录 Grafana)

环境

  • Windows 11 主页
  • WSL2 (Ubuntu-20.04)
  • 码头工人

使用 MySQL 创建数据库

创建一个 MySQL 容器

使用以下命令创建 MySQL 容器。为了简单的数据持久化,这里我们创建一个名为db的本地目录并挂载它。即使您重新创建容器,这也会保留数据库。此外,还指定了用户,因为如果未设置访问权限,它将被写为 root。

尝试 WSL2 时需要--net host。此外,Windows 防火墙在不禁用它的情况下也很好。

创建一个 MySQL 容器
mkdir ./db

docker run --name some-mysql \
  --user `id -u` \
  -v `pwd`/db:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=pw-for-root \
  --net host \
  -p 3306:3306 \
  -d --rm mysql:8.0.30

配置 MySQL

输入使用以下命令创建的容器。密码是pw-for-root

进入 MySQL
docker exec -it  some-mysql mysql -u root -p

之后,为 Grafana 创建一个用户,稍后将使用以下 SQL 语句。 Grafana 只允许 SELECT。在不使用通配符的情况下正确指定数据库名称和表名称会更安全。

为 Grafana 添加用户
CREATE USER 'grafanaReader' IDENTIFIED BY 'pw-for-grafana';
GRANT SELECT ON *.* TO 'grafanaReader';

创建示例数据库

接下来,使用以下 SQL 语句创建一个合适的数据库。这里我们创建一个普通表和一个时间序列表。
完成后,按 Ctrl+d 退出并确定。

创建示例数据库
CREATE DATABASE IF NOT EXISTS test_db;
CONNECT test_db;

CREATE TABLE user_table (
    id int(10) AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(20)
);

INSERT INTO user_table(name) VALUES ('Alice');
INSERT INTO user_table(name) VALUES ('Bob');
INSERT INTO user_table(name) VALUES ('Charlie');


CREATE TABLE time_table (
    id int(10) AUTO_INCREMENT PRIMARY KEY,
    data_time DATETIME,
    value int
);

INSERT INTO time_table(data_time, value) VALUES ('2022-01-02 16:00:00', 10);
INSERT INTO time_table(data_time, value) VALUES ('2022-02-02 16:00:00', 20);
INSERT INTO time_table(data_time, value) VALUES ('2022-03-02 16:00:00', 30);
INSERT INTO time_table(data_time, value) VALUES ('2022-04-02 16:00:00', 40);
INSERT INTO time_table(data_time, value) VALUES ('2022-05-02 16:00:00', 30);
INSERT INTO time_table(data_time, value) VALUES ('2022-06-02 16:00:00', 20);

SELECT * FROM user_table;
SELECT * FROM time_table;

格拉法纳

创建一个 Grafana 容器

使用以下命令创建 Grafana 容器。为了方便数据持久化,这里我们创建一个名为grafana 的本地目录并挂载它。各种设置保存在这里。

创建 Grafana 容器
mkdir ./grafana

docker run --name grafana \
  --user `id -u` \
  -v `pwd`/grafana:/var/lib/grafana \
  --net host \
  -p 3000:3000 \
  -d --rm grafana/grafana

访问 Grafana

在启动容器的同一台 PC 上访问以下内容:

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

数据源设置

  • 点击配置->数据源->添加数据源

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

  • 选择 MySQL

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

  • 配置以下设置
    • 主机:本地主机:3306
    • 数据库:test_db
    • 用户:grafanaReader
    • 密码:pw-for-grafana
  • 点击页面底部的Save & Test,确保看到Database Connection OK

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)
GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

仪表板设置

    单击
  • 仪表板 -> 浏览 -> 新建 -> 新建仪表板
  • 单击添加新窗格

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

添加常规表

  • 将格式设置为Table

  • 单击编辑 SQL 并输入

    SELECT * FROM user_table;
    
  • 从右上角选择表格。或者选择另一种绘图方法

  • 设置完成点击Apply

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

添加时间序列数据

  • 由于Dashboard上已经添加了之前的表格,继续点击Add Panel -> Add a new panel

  • 将格式设置为Time series(默认)

  • 单击编辑 SQL 并输入

    SELECT
      data_time AS "time",
      value
    FROM time_table
    
  • 将时间范围设置为过去一年(因为这就是我们的数据的样子)

  • 设置完成点击Apply

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

保存仪表板

  • 添加更多面板并调整它们在仪表板上的位置
  • 保存后完成

GrafanaでMySQLのデータを可視化する in Docker (in WSL2)

其他

  • 设置在容器重新启动后保持不变
  • 在 MySQL 端添加数据也会更新 Dashboard
  • InfluxDB 在处理时序数据时优于 MySQL

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308628114.html

相关文章:

  • 2021-07-27
  • 2022-01-22
  • 2021-10-18
  • 2022-01-28
  • 2021-12-02
猜你喜欢
  • 2022-12-23
  • 2021-05-13
  • 2021-09-18
  • 2022-12-23
  • 2022-12-23
  • 2021-06-17
相关资源
相似解决方案