简单 4 步,用 MatrixDB 构建你的第一个仪表盘~

1. 简介

1.1 什么是 Grafana ?

在时序分析及监控展现领域里,Grafana 无疑是一款将时序数据转换为精美图形和可视化效果的工具,提供分析、警报和查询等功能。Grafana 可以快速灵活创建数据图表,具有丰富的仪表盘插件,支持接入 MatrixDB 等多种不同的数据源,并广泛应用在工业物联网、车联网、交通等领域。

grafana

1.2 为什么使用 MatrixDB ?

近年来时序数据的需求呈现爆发式的增长,时序数据的分析成为挖掘数据价值的刚需,数据入库和查询延迟对一些场景变得至关重要。同时,时序数据规模开始放大,许多场景设备数和指标数都有了数量级的提升。

时序数据库进入到一个融合数据分析、事务处理、流处理能力的第三代超融合数据库时代,MatrixDB 引领这一方向,在成熟稳定的 MPP 分布式分析型 PostgreSQL 架构之上,为时序场景量身定制存储和优化。

MatrixDB 五大亮点:

1、全球首创超融合时序数据库技术,完美解决大数据 “多样性/ Variety” 的挑战,为数字化业务提供强力的支撑。

2、高吞吐、低延迟、高并发准实时数据加载,支持ACID保证数据严格正确性的前提下,实现海量数据的准实时、低延迟数据采集,并具有极佳的线性扩展能力。支持 RESTfulAPI ,允许上万客户端同时注入数据。

3、完善支持 SQL 标准,包括JSON、窗口函数、数据立方体、递归关联子查询等,一条SQL胜数千行代码,开发效率高,迭代速度快。

4、一键安装、自动告警、在线扩容、增量备份、并行恢复等企业特性完备,运维省心省力。

5、内置数据加密技术,支持企业级认证、访问控制和安全审计机制。

简单来说,MatrixDB 就是:

高性能!易使用!低成本!

本教程包含如下内容:

  • Grafana 安装
  • Grafana 使用
  • 创建可视化视图
  • 指定 MatrixDB 时序数据源

2. Grafana 安装

从 Grafana 官网,下载 Grafana 最新版本。

官网链接:https://grafana.com/

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.1.3-1.x86_64.rpm
sudo yum install grafana-enterprise-8.1.3-1.x86_64.rpm

安装成功后,启动 Grafana

sudo systemctl daemon-reload
sudo systemctl start grafana-server

3. Grafana 使用

Grafana 默认会绑定在3000端口,可以通过浏览器来访问。 grafana 默认账户和密码都是 admin,直接输入即可登录。

3.1 指定数据源

登录后即可看到 Grafana 主界面。 grafana

在使用 Grafana 进行数据展示之前,首先需要“创建数据源”,点击左侧设置选项卡。 grafana

选择 Data sources 选项卡,并点击 Add data source。 grafana

Grafana 支持多种协议,因为 MatrixDB 使用的是 PostgreSQL 协议,所以这里需要选择 PostgreSQL 。 grafana

填写数据库连接信息并保存。 grafana

3.2 创建可视化视图

添加 MatrixDB 为数据源后,下面开始创建可视化视图来展示数据。

Grafana 的数据展示是由仪表盘和面板组成。仪表盘展示了整个系统的可视化运行状态,是由多个面板所组成,是每个面板展示的一个指标。

3.2.1 创建新仪表盘

点击左侧添加按钮,选择 Dashboard ,创建新的仪表盘,进入到 Dashboard 主界面。 grafana

3.2.2 创建时间序列可视化视图

仪表盘创建好后,下面开始创建仪表盘上的面板。

现有如下一张时序表,包含时间戳、tagid、指标值3列:

mxadmin=# \d sensor_data
                     Table "public.sensor_data"
 Column |           Type           | Collation | Nullable | Default
--------+--------------------------+-----------+----------+---------
 ts     | timestamp with time zone |           |          |
 tagid  | integer                  |           |          |
 value  | real                     |           |          |
Distributed by: (tagid)

本节演示如何展示 tagid 为1的设备的指标时间序列图。

1、 点击 Add an empty panel 添加一个空面板。 grafana

2、 右边可视化列表里列出了所有可视化效果,选择 Time series。 grafana

3、 编写查询数据的 SQL 语句。有两种方法可以编写 SQL 语句:使用 SQL 生成器或手动编写。

本节使用 SQL 生成器来编写,在下面的查询生成栏里填写 SQL 的具体信息。

FROM:sensor_data
Time column:ts
SELECT:Column:value
WHERE:在默认的宏定义$_timeFilter基础上,添加过滤条件Expr: tagid=1

在面板里会显示出数据曲线,为了让数据看得更清楚,可以在时间过滤条件里选择 Last 5 minutes。 grafana

4、 最后,点击右上角的 Save 按钮,填写 Dashboard name ,完成存档。 grafana

3.2.3 创建饼图可视化视图

下面,演示添加一个饼图可视化视图,点击上边栏的 Add panel ,再创建一个 Empty panel 。 grafana 这次,在 Visualizations 里选择 Bar chart 。 grafana 如果要展示每个设备的指标在“最近时间区间的平均值”,需要使用手动编写的方式。

点击 Edit SQL 手动编写 SQL ,并且在 Format as 要选择 Table 。 grafana

SELECT
  '设备'||tagid::text,
  avg(value)
FROM
  sensor_data
WHERE
  $__timeFilter(ts)
GROUP BY tagid

因为 Bar chart 要显示每个饼图的名称,所以必须要有一个字符串列。

其中 $__timeFilter(ts) 是 Grafana 提供的时间函数,用来允许用户在界面上选择时间过滤条件。

写完 SQL 并应用后,就可以在 Dashboard 里看到刚才创建完成的两个 Panel 。

同时可以在右上角点击刷新,仪表盘的数据会按刷新频率更新。 grafana

3.2.4 使用MatrixDB时序组件和函数

前面介绍了如何创建时间序列和饼图面板来可视化数据,可以看到 Grafana 强大的数据展示能力。MatrixDB 作为一款超融合时序数据库,提供了时序组件,可以更方便的进行数据统计,使可视化数据更有价值。

time_bucket

下面准备使用 MatrixDB 时序组件里提供的 time_bucket 函数来修改前面展示指标值时间序列图,使每个指标点表示的含义为1分钟的平均值。

在使用时序组件前,首先需要在数据库中创建组件:

mxadmin=# CREATE EXTENSION matrixts;
CREATE EXTENSION

点击编写 SQL,并将 SQL 语句做如下改写:

SELECT
  time_bucket('1 minutes', ts) AS time,
  AVG(value)
FROM
  sensor_data
WHERE
  $__timeFilter(ts)
GROUP BY time

grafana 这样,统计数据中的每个点则为1分钟内的平均值,相比每秒结果都展示出来,数据更加的清晰,更利于分析。除了 time_bucket 外,MatrixDB 的时序组件还提供了许多有用的函数,详细的用法可以从 yMatrix 官方文档里获取。

窗口函数 下面演示如何使用 MatrixDB 提供的窗口函数展示数据变化量。在 SQL 编写栏里填写如下 SQL :

SELECT
    ts AS time,
    (
     CASE WHEN lag(value) OVER (ORDER BY ts) IS NULL THEN NULL
     ELSE value - lag(value) OVER (ORDER BY ts)
     END
    ) AS value
FROM sensor_data
WHERE $__timeFilter(ts) AND tagid = 1

和之前展示的数值不同,这次展示的是变化量,所以会有负值。 grafana

4. 总结

通过如上演示可以看到,Grafana 支持多种数据来源和不同形式的展示风格,结合 MatrixDB 丰富的时序组件和函数可以非常方便的做可视化数据展示。