fix doc issue
This commit is contained in:
parent
b170feeb22
commit
43448bee6e
|
@ -11,11 +11,11 @@ public class WSConnectExample {
|
||||||
// ANCHOR: main
|
// ANCHOR: main
|
||||||
public static void main(String[] args) throws SQLException {
|
public static void main(String[] args) throws SQLException {
|
||||||
// use
|
// use
|
||||||
// String jdbcUrl = "jdbc:TAOS-RS://localhost:6041/dbName?user=root&password=taosdata&batchfetch=true";
|
// String jdbcUrl =
|
||||||
|
// "jdbc:TAOS-RS://localhost:6041/dbName?user=root&password=taosdata&batchfetch=true";
|
||||||
// if you want to connect a specified database named "dbName".
|
// if you want to connect a specified database named "dbName".
|
||||||
String jdbcUrl = "jdbc:TAOS-RS://localhost:6041?user=root&password=taosdata&batchfetch=true";
|
String jdbcUrl = "jdbc:TAOS-RS://localhost:6041?user=root&password=taosdata&batchfetch=true";
|
||||||
Properties connProps = new Properties();
|
Properties connProps = new Properties();
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_BATCH_LOAD, "true");
|
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT, "true");
|
connProps.setProperty(TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT, "true");
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
||||||
|
@ -26,8 +26,10 @@ public static void main(String[] args) throws SQLException {
|
||||||
// you can use the connection for execute SQL here
|
// you can use the connection for execute SQL here
|
||||||
|
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
// handle any errors, please refer to the JDBC specifications for detailed exceptions info
|
// handle any errors, please refer to the JDBC specifications for detailed
|
||||||
System.out.println("Failed to connect to " + jdbcUrl + "; ErrCode:" + ex.getErrorCode() + "; ErrMessage: " + ex.getMessage());
|
// exceptions info
|
||||||
|
System.out.println("Failed to connect to " + jdbcUrl + "; ErrCode:" + ex.getErrorCode() + "; ErrMessage: "
|
||||||
|
+ ex.getMessage());
|
||||||
throw ex;
|
throw ex;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
System.out.println("Failed to connect to " + jdbcUrl + "; ErrMessage: " + ex.getMessage());
|
System.out.println("Failed to connect to " + jdbcUrl + "; ErrMessage: " + ex.getMessage());
|
||||||
|
|
|
@ -103,13 +103,13 @@ chmod +x TDinsight.sh
|
||||||
点击 `Save & Test` 进行测试,成功会提示:`TDengine Data source is working`。
|
点击 `Save & Test` 进行测试,成功会提示:`TDengine Data source is working`。
|
||||||
|
|
||||||
|
|
||||||
## 导入 TDengine V3 仪表盘
|
## 导入 TDinsightV3 仪表盘
|
||||||
|
|
||||||
在配置 TDengine 数据源界面,点击 “Dashboards” tab,再点击 ”import” 导入 ”TDengine for 3.x” 仪表盘。
|
在配置 TDengine 数据源界面,点击 “Dashboards” tab,再点击 ”import” 导入 ”TDengine for 3.x” 仪表盘。
|
||||||
导入成功后可以进入这个 dashboard,在左上角 ”Log from“ 选项中选择 taosKeeper 中设置的记录监控指标的数据库就可以看到监控结果。
|
导入成功后可以进入这个 dashboard,在左上角 ”Log from“ 选项中选择 taosKeeper 中设置的记录监控指标的数据库就可以看到监控结果。
|
||||||
|
|
||||||
|
|
||||||
## TDengine V3 仪表盘详情
|
## TDinsightV3 仪表盘详情
|
||||||
|
|
||||||
TDinsight 仪表盘旨在提供 TDengine 相关资源的使用情况和状态,比如 dnodes、 mnodes、 vnodes 和数据库等。
|
TDinsight 仪表盘旨在提供 TDengine 相关资源的使用情况和状态,比如 dnodes、 mnodes、 vnodes 和数据库等。
|
||||||
主要分为集群状态、DNodes 概述、MNode 概述、请求、数据库、DNode 资源使用情况和 taosAdapter 监控信息。下面我们分别详细介绍。
|
主要分为集群状态、DNodes 概述、MNode 概述、请求、数据库、DNode 资源使用情况和 taosAdapter 监控信息。下面我们分别详细介绍。
|
||||||
|
|
|
@ -13,7 +13,7 @@ TDengine 提供了丰富的应用程序开发接口,为了便于用户快速
|
||||||
目前 TDengine 的原生接口连接器可支持的平台包括:X64/ARM64 等硬件平台,以及 Linux/Win64 等开发环境。对照矩阵如下:
|
目前 TDengine 的原生接口连接器可支持的平台包括:X64/ARM64 等硬件平台,以及 Linux/Win64 等开发环境。对照矩阵如下:
|
||||||
|
|
||||||
| **CPU** | **OS** | **Java** | **Python** | **Go** | **Node.js** | **C#** | **Rust** | C/C++ |
|
| **CPU** | **OS** | **Java** | **Python** | **Go** | **Node.js** | **C#** | **Rust** | C/C++ |
|
||||||
|---------------|-----------|----------|------------|--------|-------------|--------|----------|-------|
|
| ------------- | --------- | -------- | ---------- | ------ | ----------- | ------ | -------- | ----- |
|
||||||
| **X86 64bit** | **Linux** | ● | ● | ● | ● | ● | ● | ● |
|
| **X86 64bit** | **Linux** | ● | ● | ● | ● | ● | ● | ● |
|
||||||
| **X86 64bit** | **Win64** | ● | ● | ● | ● | ● | ● | ● |
|
| **X86 64bit** | **Win64** | ● | ● | ● | ● | ● | ● | ● |
|
||||||
| **X86 64bit** | **macOS** | ● | ● | ● | ○ | ○ | ● | ● |
|
| **X86 64bit** | **macOS** | ● | ● | ● | ○ | ○ | ● | ● |
|
||||||
|
@ -29,7 +29,7 @@ TDengine 提供了丰富的应用程序开发接口,为了便于用户快速
|
||||||
TDengine 版本更新往往会增加新的功能特性,列表中的连接器版本为连接器最佳适配版本。
|
TDengine 版本更新往往会增加新的功能特性,列表中的连接器版本为连接器最佳适配版本。
|
||||||
|
|
||||||
| **TDengine 版本** | **Java** | **Python** | **Go** | **C#** | **Node.js** | **Rust** |
|
| **TDengine 版本** | **Java** | **Python** | **Go** | **C#** | **Node.js** | **Rust** |
|
||||||
|------------------------|----------|--------------------------------------|------------|---------------|-----------------|----------|
|
| ---------------------- | ----------- | ------------------------------------------- | ------------ | ------------- | --------------- | -------- |
|
||||||
| **3.3.0.0 及以上** | 3.3.0及以上 | taospy 2.7.15及以上,taos-ws-py 0.3.2及以上 | 3.5.5及以上 | 3.1.3及以上 | 3.1.0及以上 | 当前版本 |
|
| **3.3.0.0 及以上** | 3.3.0及以上 | taospy 2.7.15及以上,taos-ws-py 0.3.2及以上 | 3.5.5及以上 | 3.1.3及以上 | 3.1.0及以上 | 当前版本 |
|
||||||
| **3.0.0.0 及以上** | 3.0.2以上 | 当前版本 | 3.0 分支 | 3.0.0 | 3.1.0 | 当前版本 |
|
| **3.0.0.0 及以上** | 3.0.2以上 | 当前版本 | 3.0 分支 | 3.0.0 | 3.1.0 | 当前版本 |
|
||||||
| **2.4.0.14 及以上** | 2.0.38 | 当前版本 | develop 分支 | 1.0.2 - 1.0.6 | 2.0.10 - 2.0.12 | 当前版本 |
|
| **2.4.0.14 及以上** | 2.0.38 | 当前版本 | develop 分支 | 1.0.2 - 1.0.6 | 2.0.10 - 2.0.12 | 当前版本 |
|
||||||
|
@ -43,32 +43,36 @@ TDengine 版本更新往往会增加新的功能特性,列表中的连接器
|
||||||
|
|
||||||
### 使用原生接口(taosc)
|
### 使用原生接口(taosc)
|
||||||
|
|
||||||
| **功能特性** | **Java** | **Python** | **Go** | **C#** | **Node.js** | **Rust** |
|
| **功能特性** | **Java** | **Python** | **Go** | **C#** | **Rust** |
|
||||||
|----------------|----------|------------|--------|--------|-------------|----------|
|
| ------------------- | -------- | ---------- | ------ | ------ | -------- |
|
||||||
| **连接管理** | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
|
| **连接管理** | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **普通查询** | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
|
| **普通查询** | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **参数绑定** | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
|
| **参数绑定** | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **数据订阅(TMQ)** | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
|
| **数据订阅(TMQ)** | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **Schemaless** | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
|
| **Schemaless** | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
由于不同编程语言数据库框架规范不同,并不意味着所有 C/C++ 接口都需要对应封装支持。
|
由于不同编程语言数据库框架规范不同,并不意味着所有 C/C++ 接口都需要对应封装支持。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### 使用 http (REST 或 WebSocket) 接口
|
### 使用 http REST 接口
|
||||||
|
|
||||||
|
| **功能特性** | **Java** | **Python** | **Go** | **C#** |
|
||||||
|
| ------------ | -------- | ---------- | ------ | ------ |
|
||||||
|
| **连接管理** | 支持 | 支持 | 支持 | 支持 |
|
||||||
|
| **普通查询** | 支持 | 支持 | 支持 | 支持 |
|
||||||
|
|
||||||
|
### 使用 Websocket 接口
|
||||||
|
|
||||||
| **功能特性** | **Java** | **Python** | **Go** | **C#** | **Node.js** | **Rust** |
|
| **功能特性** | **Java** | **Python** | **Go** | **C#** | **Node.js** | **Rust** |
|
||||||
|------------------------|----------|------------|--------|--------|-------------|----------|
|
| ------------------- | -------- | ---------- | ------ | ------ | ----------- | -------- |
|
||||||
| **连接管理** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
| **连接管理** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **普通查询** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
| **普通查询** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **参数绑定** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
| **参数绑定** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **数据订阅(TMQ)** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
| **数据订阅(TMQ)** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **Schemaless** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
| **Schemaless** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||||
| **批量拉取(基于 WebSocket)** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
|
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
|
|
||||||
- 参数绑定、数据订阅、Schemaless 和批量拉取功能仅在 WebSocket 连接下支持。
|
|
||||||
- 无论选用何种编程语言的连接器,2.0 及以上版本的 TDengine 推荐数据库应用的每个线程都建立一个独立的连接,或基于线程建立连接池,以避免连接内的“USE statement”状态量在线程之间相互干扰(但连接的查询和写入操作都是线程安全的)。
|
- 无论选用何种编程语言的连接器,2.0 及以上版本的 TDengine 推荐数据库应用的每个线程都建立一个独立的连接,或基于线程建立连接池,以避免连接内的“USE statement”状态量在线程之间相互干扰(但连接的查询和写入操作都是线程安全的)。
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
|
@ -7,13 +7,18 @@ toc_max_heading_level: 4
|
||||||
import Tabs from "@theme/Tabs";
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from "@theme/TabItem";
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
TDengine 能够与开源数据可视化系统 [Grafana](https://www.grafana.com/) 快速集成搭建数据监测报警系统,整个过程无需任何代码开发,TDengine 中数据表的内容可以在仪表盘(DashBoard)上进行可视化展现。关于 TDengine 插件的使用您可以在 [GitHub](https://github.com/taosdata/grafanaplugin/blob/master/README.md) 中了解更多。
|
## 概述
|
||||||
|
本文档介绍如何将 TDengine 数据源与开源数据可视化系统 [Grafana](https://www.grafana.com/) 集成,以实现数据的可视化和监测报警系统的搭建。通过 TDengine 插件,您可以轻松地将 TDengine 数据表的数据展示在 Grafana 仪表盘上,且无需进行复杂的开发工作。
|
||||||
|
|
||||||
|
## Grafana 版本要求
|
||||||
|
当前 TDengine 支持 Grafana 7.5 及以上版本,建议使用最新版本。请根据您的系统环境下载并安装对应版本的 Grafana。
|
||||||
|
|
||||||
|
|
||||||
## 前置条件
|
## 前置条件
|
||||||
|
|
||||||
要让 Grafana 能正常添加 TDengine 数据源,需要以下几方面的准备工作。
|
要让 Grafana 能正常添加 TDengine 数据源,需要以下几方面的准备工作。
|
||||||
|
|
||||||
- Grafana 服务已经部署并正常运行。目前 TDengine 支持 Grafana 7.5 以上的版本。用户可以根据当前的操作系统,到 Grafana 官网下载安装包,并执行安装。下载地址如下:[https://grafana.com/grafana/download](https://grafana.com/grafana/download) 。
|
- Grafana 服务已经部署并正常运行。
|
||||||
:::info
|
:::info
|
||||||
|
|
||||||
**注意**:要确保启动 Grafana 的账号有其安装目录的写权限,否则可能后面无法安装插件。
|
**注意**:要确保启动 Grafana 的账号有其安装目录的写权限,否则可能后面无法安装插件。
|
||||||
|
@ -177,7 +182,15 @@ docker run -d \
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 内置变量和自定义变量
|
## Dashboard 使用指南
|
||||||
|
|
||||||
|
本节内容按如下方式组织:
|
||||||
|
1. 介绍基础知识,包括 Grafana 的内置变量和自定义变量,TDengine 对与时序查询的特色语法支持。
|
||||||
|
2. 介绍如何使用 TDengine 数据源在 Grafana 中创建 Dashboard,然后给出使用时序查询的特色语法和如何分组展示数据。
|
||||||
|
3. 由于配置的 Dashbord 在页面显示时会定时查询 TDengine 来刷新显示,如果 SQL 编写不当会导致严重的性能问题,我们给出了性能优化建议。
|
||||||
|
4. 最后我们以 TDengine 监控面板 TDinsight 为例介绍了如何导入我们提供的 DashBoard。
|
||||||
|
|
||||||
|
### Grafana 内置变量和自定义变量
|
||||||
|
|
||||||
Grafana 中的 Variable(变量)功能非常强大,可以在 Dashboard 的查询、面板标题、标签等地方使用,用来创建更加动态和交互式的 Dashbord,提高用户体验和效率。
|
Grafana 中的 Variable(变量)功能非常强大,可以在 Dashboard 的查询、面板标题、标签等地方使用,用来创建更加动态和交互式的 Dashbord,提高用户体验和效率。
|
||||||
|
|
||||||
|
@ -191,7 +204,7 @@ Grafana 中的 Variable(变量)功能非常强大,可以在 Dashboard 的
|
||||||
|
|
||||||
Grafana 提供了内置变量和自定义变量,它们都可以可以在编写 SQL 时引用,引用的方式是 `$variableName`,`variableName` 是变量的名字,其他引用方式请参考 [引用方式](https://grafana.com/docs/grafana/latest/dashboards/variables/variable-syntax/)。
|
Grafana 提供了内置变量和自定义变量,它们都可以可以在编写 SQL 时引用,引用的方式是 `$variableName`,`variableName` 是变量的名字,其他引用方式请参考 [引用方式](https://grafana.com/docs/grafana/latest/dashboards/variables/variable-syntax/)。
|
||||||
|
|
||||||
### 内置变量
|
#### 内置变量
|
||||||
|
|
||||||
Grafana 内置了 `from`、`to` 和 `interval` 等变量,都取自于 Grafana 插件面板。其含义如下:
|
Grafana 内置了 `from`、`to` 和 `interval` 等变量,都取自于 Grafana 插件面板。其含义如下:
|
||||||
- `from` 查询范围的起始时间
|
- `from` 查询范围的起始时间
|
||||||
|
@ -202,13 +215,13 @@ Grafana 内置了 `from`、`to` 和 `interval` 等变量,都取自于 Grafana
|
||||||
|
|
||||||
除了上述三个常用变量,Grafana 还提供了如 `__timezone`, `__org`, `__user` 等变量,详情请参考 [内置变量](https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#global-variables)。
|
除了上述三个常用变量,Grafana 还提供了如 `__timezone`, `__org`, `__user` 等变量,详情请参考 [内置变量](https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#global-variables)。
|
||||||
|
|
||||||
### 自定义变量
|
#### 自定义变量
|
||||||
|
|
||||||
我们可以在 Dashbord 中增加自定义变量。自定义变量和内置变量的使用方式没有区别,都是在 SQL 中用 `$variableName` 进行引用。
|
我们可以在 Dashbord 中增加自定义变量。自定义变量和内置变量的使用方式没有区别,都是在 SQL 中用 `$variableName` 进行引用。
|
||||||
自定义变量支持多种类型,常见的类型包括 `Query`(查询)、`Constant`(常量)、`Interval`(间隔)、`Data source`(数据源)等。
|
自定义变量支持多种类型,常见的类型包括 `Query`(查询)、`Constant`(常量)、`Interval`(间隔)、`Data source`(数据源)等。
|
||||||
自定义变量可以引用其他自定义变量,比如一个变量表示区域,另一个变量可以引用区域的值,来查询这个区域的设备。
|
自定义变量可以引用其他自定义变量,比如一个变量表示区域,另一个变量可以引用区域的值,来查询这个区域的设备。
|
||||||
|
|
||||||
#### 添加查询类型变量
|
##### 添加查询类型变量
|
||||||
|
|
||||||
在 Dashbord 的配置中,选择 【Variables】,然后点击 【New variable】:
|
在 Dashbord 的配置中,选择 【Variables】,然后点击 【New variable】:
|
||||||
1. 在 “Name” 字段中,输入你的变量名,此处我们设置变量名为 `selected_groups`。
|
1. 在 “Name” 字段中,输入你的变量名,此处我们设置变量名为 `selected_groups`。
|
||||||
|
@ -221,7 +234,7 @@ Grafana 内置了 `from`、`to` 和 `interval` 等变量,都取自于 Grafana
|
||||||
|
|
||||||
我们还可以再新增自定义变量来引用这个 `selected_groups` 变量,比如我们新增一个名为 `tbname_max_current` 的查询变量,其 SQL 为 `select tbname from power.meters where groupid = $selected_groups and ts > $from and ts < $to;`
|
我们还可以再新增自定义变量来引用这个 `selected_groups` 变量,比如我们新增一个名为 `tbname_max_current` 的查询变量,其 SQL 为 `select tbname from power.meters where groupid = $selected_groups and ts > $from and ts < $to;`
|
||||||
|
|
||||||
#### 添加间隔类型变量
|
##### 添加间隔类型变量
|
||||||
|
|
||||||
我们可以自定义时间窗口间隔,可以更加贴合业务需求。
|
我们可以自定义时间窗口间隔,可以更加贴合业务需求。
|
||||||
1. 在 “Name” 字段中,输入变量名为 `interval`。
|
1. 在 “Name” 字段中,输入变量名为 `interval`。
|
||||||
|
@ -237,7 +250,7 @@ Grafana 内置了 `from`、`to` 和 `interval` 等变量,都取自于 Grafana
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## TDengine 时间序列查询支持
|
### TDengine 时序查询支持
|
||||||
|
|
||||||
TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序业务场景需求的特色查询语法,这些语法能够为时序场景的应用的开发带来极大的便利。
|
TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序业务场景需求的特色查询语法,这些语法能够为时序场景的应用的开发带来极大的便利。
|
||||||
- `partition by` 子句可以按一定的维度对数据进行切分,然后在切分出的数据空间内再进行一系列的计算。绝大多数情况可以替代 `group by`。
|
- `partition by` 子句可以按一定的维度对数据进行切分,然后在切分出的数据空间内再进行一系列的计算。绝大多数情况可以替代 `group by`。
|
||||||
|
@ -247,15 +260,16 @@ TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序
|
||||||
|
|
||||||
上述特性详细介绍可以参考 [特色查询](../../../reference/taos-sql/distinguished/)。
|
上述特性详细介绍可以参考 [特色查询](../../../reference/taos-sql/distinguished/)。
|
||||||
|
|
||||||
## 创建 Dashboard
|
### 创建 Dashboard
|
||||||
|
|
||||||
回到主界面创建 Dashboard,点击【Add Query】进入面板查询页面:
|
有了前面的基础知识,我们可以配置基于 TDengine 数据源的时间序列数据展示 Dashbord。
|
||||||
|
在 Grafana 主界面创建 Dashboard,点击【Add Query】进入面板查询页面:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
如上图所示,在 “Query” 中选中 `TDengine` 数据源,在下方查询框可输入相应 SQL 进行查询。 我们继续用智能电表来举例,为了展示曲线美观,此处**用了虚拟数据**。
|
如上图所示,在 “Query” 中选中 `TDengine` 数据源,在下方查询框可输入相应 SQL 进行查询。 我们继续用智能电表来举例,为了展示曲线美观,此处**用了虚拟数据**。
|
||||||
|
|
||||||
## 时间序列数据展示
|
#### 时间序列数据展示
|
||||||
|
|
||||||
假设我们想查询一段时间内的平均电流大小,时间窗口按 `$interval` 切分,若某一时间窗口区间数据缺失,填充 null。
|
假设我们想查询一段时间内的平均电流大小,时间窗口按 `$interval` 切分,若某一时间窗口区间数据缺失,填充 null。
|
||||||
- “INPUT SQL”:输入要查询的语句(该 SQL 语句的结果集应为两列多行),此处输入:`select _wstart as ts, avg(current) as current from power.meters where groupid in ($selected_groups) and ts > $from and ts < $to interval($interval) fill(null)` ,其中,from、to 和 interval 为 Grafana 内置变量,selected_groups 为自定义变量。
|
- “INPUT SQL”:输入要查询的语句(该 SQL 语句的结果集应为两列多行),此处输入:`select _wstart as ts, avg(current) as current from power.meters where groupid in ($selected_groups) and ts > $from and ts < $to interval($interval) fill(null)` ,其中,from、to 和 interval 为 Grafana 内置变量,selected_groups 为自定义变量。
|
||||||
|
@ -272,7 +286,7 @@ TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 时间序列数据分组展示
|
#### 时间序列数据分组展示
|
||||||
|
|
||||||
假设我们想查询一段时间内的平均电流大小,按 `groupid` 分组展示,我们可以修改之前的 SQL 为 `select _wstart as ts, groupid, avg(current) as current from power.meters where ts > $from and ts < $to partition by groupid interval($interval) fill(null)`
|
假设我们想查询一段时间内的平均电流大小,按 `groupid` 分组展示,我们可以修改之前的 SQL 为 `select _wstart as ts, groupid, avg(current) as current from power.meters where ts > $from and ts < $to partition by groupid interval($interval) fill(null)`
|
||||||
|
|
||||||
|
@ -285,12 +299,12 @@ TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序
|
||||||
|
|
||||||
> 关于如何使用 Grafana 创建相应的监测界面以及更多有关使用 Grafana 的信息,请参考 Grafana 官方的[文档](https://grafana.com/docs/)。
|
> 关于如何使用 Grafana 创建相应的监测界面以及更多有关使用 Grafana 的信息,请参考 Grafana 官方的[文档](https://grafana.com/docs/)。
|
||||||
|
|
||||||
## 性能建议
|
### 性能优化建议
|
||||||
|
|
||||||
- **所有查询加上时间范围**,在时序数据库中,如果不加查询的时间范围,会扫表导致性能低下。常见的 SQL 写法是 `select column_name from db.table where ts > $from and ts < $to;`
|
- **所有查询加上时间范围**,在时序数据库中,如果不加查询的时间范围,会扫表导致性能低下。常见的 SQL 写法是 `select column_name from db.table where ts > $from and ts < $to;`
|
||||||
- 对于最新状态类型的查询,我们一般建议在**创建数据库的时候打开缓存**(`CACHEMODEL` 设置为 last_row 或者 both),常见的 SQL 写法是 `select last(column_name) from db.table where ts > $from and ts < $to;`
|
- 对于最新状态类型的查询,我们一般建议在**创建数据库的时候打开缓存**(`CACHEMODEL` 设置为 last_row 或者 both),常见的 SQL 写法是 `select last(column_name) from db.table where ts > $from and ts < $to;`
|
||||||
|
|
||||||
## 导入 Dashboard
|
### 导入 Dashboard
|
||||||
|
|
||||||
在数据源配置页面,您可以为该数据源导入 TDinsight 面板,作为 TDengine 集群的监控可视化工具。如果 TDengine 服务端为 3.0 版本请选择 `TDinsight for 3.x` 导入。注意 TDinsight for 3.x 需要运行和配置 taoskeeper。
|
在数据源配置页面,您可以为该数据源导入 TDinsight 面板,作为 TDengine 集群的监控可视化工具。如果 TDengine 服务端为 3.0 版本请选择 `TDinsight for 3.x` 导入。注意 TDinsight for 3.x 需要运行和配置 taoskeeper。
|
||||||
|
|
||||||
|
@ -317,7 +331,7 @@ TDengine Grafana 插件支持告警,如果要配置告警,需要以下几个
|
||||||
3.4 配置标签和告警通道
|
3.4 配置标签和告警通道
|
||||||
3.5 配置通知文案
|
3.5 配置通知文案
|
||||||
|
|
||||||
### 告警配置界面
|
### 告警配置界面介绍
|
||||||
|
|
||||||
在Grafana 11 告警界面一共有 6 个 Tab,分别是 “Alert rules”、“Contact points”、“Notification policies”、“Silences”、 “Groups” 和 “Settings”。
|
在Grafana 11 告警界面一共有 6 个 Tab,分别是 “Alert rules”、“Contact points”、“Notification policies”、“Silences”、 “Groups” 和 “Settings”。
|
||||||
- “Alert rules” 告警规则列表,用于展示和配置告警规则
|
- “Alert rules” 告警规则列表,用于展示和配置告警规则
|
||||||
|
@ -329,7 +343,7 @@ TDengine Grafana 插件支持告警,如果要配置告警,需要以下几个
|
||||||
|
|
||||||
### 配置联络点
|
### 配置联络点
|
||||||
|
|
||||||
以邮件和飞书为例配置联络点。
|
本节以邮件和飞书为例配置联络点。
|
||||||
|
|
||||||
#### 配置邮件联络点
|
#### 配置邮件联络点
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.taosdata.jdbc</groupId>
|
<groupId>com.taosdata.jdbc</groupId>
|
||||||
<artifactId>taos-jdbcdriver</artifactId>
|
<artifactId>taos-jdbcdriver</artifactId>
|
||||||
<version>3.0.0</version>
|
<version>3.3.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- druid -->
|
<!-- druid -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -22,7 +22,7 @@ public static void main(String[] args) throws Exception {
|
||||||
dataSource.setMinIdle(10);
|
dataSource.setMinIdle(10);
|
||||||
dataSource.setMaxActive(10);
|
dataSource.setMaxActive(10);
|
||||||
dataSource.setMaxWait(30000);
|
dataSource.setMaxWait(30000);
|
||||||
dataSource.setValidationQuery("SELECT SERVER_STATUS()");
|
dataSource.setValidationQuery("SELECT SERVER_VERSION()");
|
||||||
|
|
||||||
Connection connection = dataSource.getConnection(); // get connection
|
Connection connection = dataSource.getConnection(); // get connection
|
||||||
Statement statement = connection.createStatement(); // get statement
|
Statement statement = connection.createStatement(); // get statement
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class DruidPoolBuilder {
|
||||||
dataSource.setMinIdle(poolSize);
|
dataSource.setMinIdle(poolSize);
|
||||||
dataSource.setMaxActive(poolSize);
|
dataSource.setMaxActive(poolSize);
|
||||||
dataSource.setMaxWait(30000);
|
dataSource.setMaxWait(30000);
|
||||||
dataSource.setValidationQuery("select server_status()");
|
dataSource.setValidationQuery("select SERVER_VERSION()");
|
||||||
return dataSource;
|
return dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class HikariCpBuilder {
|
||||||
config.setConnectionTimeout(30000); //maximum wait milliseconds for get connection from pool
|
config.setConnectionTimeout(30000); //maximum wait milliseconds for get connection from pool
|
||||||
config.setMaxLifetime(0); // maximum life time for each connection
|
config.setMaxLifetime(0); // maximum life time for each connection
|
||||||
config.setIdleTimeout(0); // max idle time for recycle idle connection
|
config.setIdleTimeout(0); // max idle time for recycle idle connection
|
||||||
config.setConnectionTestQuery("select server_status()"); //validation query
|
config.setConnectionTestQuery("select SERVER_VERSION()"); //validation query
|
||||||
|
|
||||||
HikariDataSource ds = new HikariDataSource(config);
|
HikariDataSource ds = new HikariDataSource(config);
|
||||||
return ds;
|
return ds;
|
||||||
|
|
|
@ -22,6 +22,6 @@
|
||||||
<!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒-->
|
<!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒-->
|
||||||
<house-keeping-sleep-time>30000</house-keeping-sleep-time>
|
<house-keeping-sleep-time>30000</house-keeping-sleep-time>
|
||||||
<!--用于保持连接的测试语句 -->
|
<!--用于保持连接的测试语句 -->
|
||||||
<house-keeping-test-sql>select server_status()</house-keeping-test-sql>
|
<house-keeping-test-sql>select server_version()</house-keeping-test-sql>
|
||||||
</proxool>
|
</proxool>
|
||||||
</something-else-entirely>
|
</something-else-entirely>
|
Loading…
Reference in New Issue