Merge pull request #27141 from taosdata/docs/sheyj-3.0

fix doc issue
This commit is contained in:
wade zhang 2024-08-09 18:27:31 +08:00 committed by GitHub
commit 64a3ff569f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 208 additions and 174 deletions

View File

@ -8,31 +8,33 @@ import java.sql.SQLException;
import java.util.Properties; import java.util.Properties;
public class WSConnectExample { 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"; // String jdbcUrl =
// if you want to connect a specified database named "dbName". // "jdbc:TAOS-RS://localhost:6041/dbName?user=root&password=taosdata&batchfetch=true";
String jdbcUrl = "jdbc:TAOS-RS://localhost:6041?user=root&password=taosdata"; // if you want to connect a specified database named "dbName".
Properties connProps = new Properties(); String jdbcUrl = "jdbc:TAOS-RS://localhost:6041?user=root&password=taosdata&batchfetch=true";
connProps.setProperty(TSDBDriver.PROPERTY_KEY_BATCH_LOAD, "true"); Properties connProps = new Properties();
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");
try (Connection conn = DriverManager.getConnection(jdbcUrl, connProps)){ try (Connection conn = DriverManager.getConnection(jdbcUrl, connProps)) {
System.out.println("Connected to " + jdbcUrl + " successfully."); System.out.println("Connected to " + jdbcUrl + " successfully.");
// 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
throw ex; System.out.println("Failed to connect to " + jdbcUrl + "; ErrCode:" + ex.getErrorCode() + "; ErrMessage: "
} catch (Exception ex){ + ex.getMessage());
System.out.println("Failed to connect to " + jdbcUrl + "; ErrMessage: " + ex.getMessage()); throw ex;
throw ex; } catch (Exception ex) {
System.out.println("Failed to connect to " + jdbcUrl + "; ErrMessage: " + ex.getMessage());
throw ex;
}
} }
} // ANCHOR_END: main
// ANCHOR_END: main
} }

View File

@ -259,17 +259,19 @@ dotnet add package TDengine.Connector
## 建立连接 ## 建立连接
在执行这一步之前,请确保有一个正在运行的,且可以访问到的 TDengine而且服务端的 FQDN 配置正确。以下示例代码,都假设 TDengine 安装在本机,且 FQDN默认 localhost 和 serverPort默认 6030 都使用默认配置。 在执行这一步之前,请确保有一个正在运行的,且可以访问到的 TDengine而且服务端的 FQDN 配置正确。以下示例代码,都假设 TDengine 安装在本机,且 FQDN默认 localhost 和 serverPort默认 6030 都使用默认配置。
### 连接参数 ### 连接参数
连接的配置项较多,因此在建立连接之前,我们能先介绍一下各语言连接器建立连接使用的参数。 连接的配置项较多,因此在建立连接之前,我们能先介绍一下各语言连接器建立连接使用的参数。
<Tabs defaultValue="java" groupId="lang"> <Tabs defaultValue="java" groupId="lang">
<TabItem label="Java" value="java"> <TabItem label="Java" value="java">
Java 连接器建立连接的参数有 URL 和 Properties。
TDengine 的 JDBC URL 规范格式为:
`jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}|&batchfetch={batchfetch}]`
Java 连接器建立连接的参数有 URL 和 Properties。 URL 和 Properties 的详细参数说明和如何使用详见 [url 规范](../../reference/connector/java/#url-规范)
TDengine 的 JDBC URL 规范格式为:
`jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]`
URL 和 Properties 的详细参数说明和如何使用详见 [url 规范](../../reference/connector/java/#url-规范) **注**REST 连接中增加 `batchfetch` 参数并设置为 true将开启 WebSocket 连接。
</TabItem> </TabItem>
<TabItem label="Python" value="python"> <TabItem label="Python" value="python">
@ -343,7 +345,7 @@ DSN 的详细说明和如何使用详见 [连接功能](../../reference/connecto
- **database**: 数据库名称。 - **database**: 数据库名称。
- **params**: 其他参数。 例如token。 - **params**: 其他参数。 例如token。
- 完整 D 示例: - 完整 DSN 示例:
```js ```js
ws://root:taosdata@localhost:6041 ws://root:taosdata@localhost:6041

View File

@ -90,7 +90,7 @@ curl --location -uroot:taosdata 'http://127.0.0.1:6041/rest/sql/power' \
</TabItem> </TabItem>
</Tabs> </Tabs>
> **注意**如果不使用 `USE power` 指定数据库,则后续对表的操作都需要增加数据库名称作为前缀,如 `power.meters` > **注意**建议采用 `<dbName>.<tableName>` 的格式构造SQL语句不推荐在应用中采用 `USE DBName` 方式访问
## 插入数据 ## 插入数据
下面以智能电表为例,展示如何使用连接器执行 SQL 来插入数据到 `power` 数据库的 `meters` 超级表。样例使用 TDengine 自动建表 SQL 语法,写入 d1001 子表中 3 条数据,写入 d1002 子表中 1 条数据,然后打印出实际插入数据条数。 下面以智能电表为例,展示如何使用连接器执行 SQL 来插入数据到 `power` 数据库的 `meters` 超级表。样例使用 TDengine 自动建表 SQL 语法,写入 d1001 子表中 3 条数据,写入 d1002 子表中 1 条数据,然后打印出实际插入数据条数。

View File

@ -169,7 +169,7 @@ st,t1=3,t2=4,t3=t3 c1=3i64,c6="passit" 1626006833640000000
``` ```
执行带有 reqId 的无模式写入, reqId 可用于请求链路追踪。 执行带有 reqId 的无模式写入,最后一个参数 reqId 可用于请求链路追踪。
```java ```java
writer.write(lineDemo, SchemalessProtocolType.LINE, SchemalessTimestampType.NANO_SECONDS, 1L); writer.write(lineDemo, SchemalessProtocolType.LINE, SchemalessTimestampType.NANO_SECONDS, 1L);
@ -213,7 +213,7 @@ writer.write(lineDemo, SchemalessProtocolType.LINE, SchemalessTimestampType.NANO
{{#include examples/JDBC/JDBCDemo/src/main/java/com/taosdata/example/SchemalessJniTest.java:schemaless}} {{#include examples/JDBC/JDBCDemo/src/main/java/com/taosdata/example/SchemalessJniTest.java:schemaless}}
``` ```
执行带有 reqId 的无模式写入, reqId 可用于请求链路追踪。 执行带有 reqId 的无模式写入,最后一个参数 reqId 可用于请求链路追踪。
```java ```java
writer.write(lineDemo, SchemalessProtocolType.LINE, SchemalessTimestampType.NANO_SECONDS, 1L); writer.write(lineDemo, SchemalessProtocolType.LINE, SchemalessTimestampType.NANO_SECONDS, 1L);

View File

@ -17,6 +17,12 @@ TDengine 通过 taosKeeper 将服务器的 CPU、内存、硬盘空间、带宽
- TDengine 已经安装并正常运行,此仪表盘需要 TDengine 3.0.0.0 及以上,并开启监控上报配置,具体配置请参考:[TDengine 监控配置](../taosd/#监控相关)。 - TDengine 已经安装并正常运行,此仪表盘需要 TDengine 3.0.0.0 及以上,并开启监控上报配置,具体配置请参考:[TDengine 监控配置](../taosd/#监控相关)。
- taosAdapter 已经安装并正常运行。具体细节请参考:[taosAdapter 参考手册](../taosadapter) - taosAdapter 已经安装并正常运行。具体细节请参考:[taosAdapter 参考手册](../taosadapter)
- taosKeeper 已安装并正常运行。具体细节请参考:[taosKeeper 参考手册](../taoskeeper) - taosKeeper 已安装并正常运行。具体细节请参考:[taosKeeper 参考手册](../taoskeeper)
- Grafana 服务已安装并正常运行。我们建议您使用最新的 Grafana 版本TDInsight 支持 Grafana 7.5 及以上版本。
:::info
下文介绍中,都以 Grafana v11.0.0 版本为例,其他版本功能可能有差异,请参考 [Grafana 官网](https://grafana.com/docs/grafana/latest/)。
:::
然后记录以下信息: 然后记录以下信息:
@ -24,22 +30,11 @@ TDengine 通过 taosKeeper 将服务器的 CPU、内存、硬盘空间、带宽
- taosAdapter 集群认证信息,可使用用户名及密码。 - taosAdapter 集群认证信息,可使用用户名及密码。
- taosKeeper 记录监控指标的数据库名称。 - taosKeeper 记录监控指标的数据库名称。
## 安装和启动 Grafana
我们建议您使用最新的 Grafana 版本TDInsight 支持 Grafana 7.5 及以上版本。您可以在任何[支持的操作系统](https://grafana.com/docs/grafana/latest/installation/requirements/#supported-operating-systems)中,按照 [Grafana 官方文档安装说明](https://grafana.com/docs/grafana/latest/installation/) 安装 Grafana。
安装后请参考 [启动 Grafana](https://grafana.com/docs/grafana/latest/setup-grafana/start-restart-grafana/) 启动 Grafana 服务。
安装完成后就可以在 Web 浏览器中打开 Grafana 网址,默认是:`http://localhost:3000`。 默认用户名/密码都是 `admin`。Grafana 会要求在首次登录后更改密码。
:::info
下文介绍中,都以 Grafana v11.0.0 版本为例,其他版本功能可能有差异,请参考 [Grafana 官网](https://grafana.com/docs/grafana/latest/)。
:::
## 安装 TDengine 数据源插件 ## 安装 TDengine 数据源插件
TDInsight 支持图形界面安装、手动安装和脚本安装三种安装方式,一般建议图形界面安装。对于 Grafana 8.5 以下版本可以使用手动安装和脚本安装方式。 TDengine 数据源插件支持图形界面安装、手动安装和脚本安装三种安装方式,一般建议图形界面安装。对于 Grafana 8.5 以下版本可以使用手动安装和脚本安装方式。
<Tabs defaultValue="manual" groupId="deploy"> <Tabs defaultValue="manual" groupId="deploy">
<TabItem value="gui" label="图形界面安装"> <TabItem value="gui" label="图形界面安装">
@ -108,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 监控信息。下面我们分别详细介绍。

View File

@ -199,7 +199,7 @@ Websocket 和 REST 连接使用驱动类 `com.taosdata.jdbc.rs.RestfulDriver`。
#### URL 规范 #### URL 规范
TDengine 的 JDBC URL 规范格式为: TDengine 的 JDBC URL 规范格式为:
`jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]` `jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}|&batchfetch={batchfetch}]`
对于建立连接,原生连接与 REST 连接有细微不同。 Websocket 和 REST 连接使用驱动类 `com.taosdata.jdbc.rs.RestfulDriver`。原生连接使用驱动类 `com.taosdata.jdbc.TSDBDriver`。 对于建立连接,原生连接与 REST 连接有细微不同。 Websocket 和 REST 连接使用驱动类 `com.taosdata.jdbc.rs.RestfulDriver`。原生连接使用驱动类 `com.taosdata.jdbc.TSDBDriver`。

View File

@ -28,14 +28,14 @@ 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.2.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 | 当前版本 |
| **2.4.0.4 - 2.4.0.13** | 2.0.37 | 当前版本 | develop 分支 | 1.0.2 - 1.0.6 | 2.0.10 - 2.0.12 | 当前版本 | | **2.4.0.4 - 2.4.0.13** | 2.0.37 | 当前版本 | develop 分支 | 1.0.2 - 1.0.6 | 2.0.10 - 2.0.12 | 当前版本 |
| **2.2.x.x ** | 2.0.36 | 当前版本 | master 分支 | n/a | 2.0.7 - 2.0.9 | 当前版本 | | **2.2.x.x ** | 2.0.36 | 当前版本 | master 分支 | n/a | 2.0.7 - 2.0.9 | 当前版本 |
| **2.0.x.x ** | 2.0.34 | 当前版本 | master 分支 | n/a | 2.0.1 - 2.0.6 | 当前版本 | | **2.0.x.x ** | 2.0.34 | 当前版本 | master 分支 | n/a | 2.0.1 - 2.0.6 | 当前版本 |
## 功能特性 ## 功能特性
@ -43,31 +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#** | **Node.js** | **Rust** | | **功能特性** | **Java** | **Python** | **Go** | **C#** |
| ------------------------------ | -------- | ---------- | ------ | ------ | ----------- | -------- | | ------------ | -------- | ---------- | ------ | ------ |
| **连接管理** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | | **连接管理** | 支持 | 支持 | 支持 | 支持 |
| **普通查询** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | | **普通查询** | 支持 | 支持 | 支持 | 支持 |
| **参数绑定** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **数据订阅TMQ** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | ### 使用 Websocket 接口
| **Schemaless** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **批量拉取(基于 WebSocket** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | | **功能特性** | **Java** | **Python** | **Go** | **C#** | **Node.js** | **Rust** |
| ------------------- | -------- | ---------- | ------ | ------ | ----------- | -------- |
| **连接管理** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **普通查询** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **参数绑定** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **数据订阅TMQ** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **Schemaless** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
:::warning :::warning
- 无论选用何种编程语言的连接器2.0 及以上版本的 TDengine 推荐数据库应用的每个线程都建立一个独立的连接或基于线程建立连接池以避免连接内的“USE statement”状态量在线程之间相互干扰但连接的查询和写入操作都是线程安全的 - 无论选用何种编程语言的连接器2.0 及以上版本的 TDengine 推荐数据库应用的每个线程都建立一个独立的连接或基于线程建立连接池以避免连接内的“USE statement”状态量在线程之间相互干扰但连接的查询和写入操作都是线程安全的
::: :::

View File

@ -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 的账号有其安装目录的写权限,否则可能后面无法安装插件。
@ -22,8 +27,6 @@ TDengine 能够与开源数据可视化系统 [Grafana](https://www.grafana.com/
- TDengine 集群已经部署并正常运行。 - TDengine 集群已经部署并正常运行。
- taosAdapter 已经安装并正常运行。具体细节请参考 [taosAdapter 的使用手册](../../../reference/components/taosadapter) - taosAdapter 已经安装并正常运行。具体细节请参考 [taosAdapter 的使用手册](../../../reference/components/taosadapter)
记录以下信息: 记录以下信息:
- TDengine 集群 REST API 地址,如:`http://tdengine.local:6041`。 - TDengine 集群 REST API 地址,如:`http://tdengine.local:6041`。
@ -173,14 +176,22 @@ docker run -d \
</TabItem> </TabItem>
</Tabs> </Tabs>
:::info :::info
下文介绍中,都以 Grafana v11.0.0 版本为例,其他版本功能可能有差异,请参考 [Grafana 官网](https://grafana.com/docs/grafana/latest/)。 下文介绍中,都以 Grafana v11.0.0 版本为例,其他版本功能可能有差异,请参考 [Grafana 官网](https://grafana.com/docs/grafana/latest/)。
::: :::
## 内置变量和自定义变量 ## 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,26 +202,30 @@ 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` 查询范围的起始时间
- `to` 查询范围的结束时间 - `to` 查询范围的结束时间
- `interval` 窗口切分间隔 - `interval` 窗口切分间隔
对于每个查询都建议设置查询范围的起始时间和结束时间,可以有效的减少 TDengine 服务端执行查询扫描的数据量。`interval` 是窗口切分的大小,在 Grafana 11 版本中,其大小为时间间隔和返回点数计算而得。 对于每个查询都建议设置查询范围的起始时间和结束时间,可以有效的减少 TDengine 服务端执行查询扫描的数据量。`interval` 是窗口切分的大小,在 Grafana 11 版本中,其大小为时间间隔和返回点数计算而得。
除了上述三个常用变量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`。
2. 在 【Select variable type】下拉菜单中选择 ”Query“(查询)。 2. 在 【Select variable type】下拉菜单中选择 “Query”(查询)。
根据选择的变量类型,配置相应的选项。例如,如果选择了 “Query” 类型,你需要指定数据源和用于获取变量值的查询语句。此处我们还以智能电表为例,设置查询类型,选择数据源后,配置 SQL 为 `select distinct(groupid) from power.meters where groupid < 3 and ts > $from and ts < $to;` 根据选择的变量类型,配置相应的选项。例如,如果选择了 “Query” 类型,你需要指定数据源和用于获取变量值的查询语句。此处我们还以智能电表为例,设置查询类型,选择数据源后,配置 SQL 为 `select distinct(groupid) from power.meters where groupid < 3 and ts > $from and ts < $to;`
3. 点击底部的【Run Query】后可以在 “Preview of values”值预览部分查看到根据你的配置生成的变量值。 3. 点击底部的【Run Query】后可以在 “Preview of values”值预览部分查看到根据你的配置生成的变量值。
4. 还有其他配置不再赘述完成配置后点击页面底部的【Apply】应用按钮然后点击右上角的【Save dashboard】保存。 4. 还有其他配置不再赘述完成配置后点击页面底部的【Apply】应用按钮然后点击右上角的【Save dashboard】保存。
@ -219,9 +234,10 @@ 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`。
2. 在 【Select variable type】下拉菜单中选择 “Interval”间隔 2. 在 【Select variable type】下拉菜单中选择 “Interval”间隔
3. 在 【Interval options】选项中输入 `1s,2s,5s,10s,15s,30s,1m`。 3. 在 【Interval options】选项中输入 `1s,2s,5s,10s,15s,30s,1m`。
4. 还有其他配置不再赘述完成配置后点击页面底部的【Apply】应用按钮然后点击右上角的【Save dashboard】保存。 4. 还有其他配置不再赘述完成配置后点击页面底部的【Apply】应用按钮然后点击右上角的【Save dashboard】保存。
@ -234,7 +250,8 @@ Grafana 内置了 `from`、`to` 和 `interval` 等变量,都取自于 Grafana
::: :::
## TDengine 时间序列查询支持 ### TDengine 时序查询支持
TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序业务场景需求的特色查询语法,这些语法能够为时序场景的应用的开发带来极大的便利。 TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序业务场景需求的特色查询语法,这些语法能够为时序场景的应用的开发带来极大的便利。
- `partition by` 子句可以按一定的维度对数据进行切分,然后在切分出的数据空间内再进行一系列的计算。绝大多数情况可以替代 `group by`。 - `partition by` 子句可以按一定的维度对数据进行切分,然后在切分出的数据空间内再进行一系列的计算。绝大多数情况可以替代 `group by`。
- `interval` 子句用于产生相等时间周期的窗口 - `interval` 子句用于产生相等时间周期的窗口
@ -243,19 +260,21 @@ TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序
上述特性详细介绍可以参考 [特色查询](../../../reference/taos-sql/distinguished/)。 上述特性详细介绍可以参考 [特色查询](../../../reference/taos-sql/distinguished/)。
## 创建 Dashboard ### 创建 Dashboard
回到主界面创建 Dashboard点击【Add Query】进入面板查询页面 有了前面的基础知识,我们可以配置基于 TDengine 数据源的时间序列数据展示 Dashbord。
在 Grafana 主界面创建 Dashboard点击【Add Query】进入面板查询页面
![TDengine Database Grafana plugin create dashboard](./create_dashboard1.webp) ![TDengine Database Grafana plugin create dashboard](./create_dashboard1.webp)
如上图所示,在 ”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 为自定义变量。
- “ALIAS BY:可设置当前查询别名。 - “ALIAS BY:可设置当前查询别名。
- “GENERATE SQL 点击该按钮会自动替换相应变量,并生成最终执行的语句。 - “GENERATE SQL 点击该按钮会自动替换相应变量,并生成最终执行的语句。
在顶部的自定义变量中,若选择 `selected_groups` 的值为 1则查询 `meters` 超级表中 `groupid` 为 1 的所有设备电流平均值变化如下图: 在顶部的自定义变量中,若选择 `selected_groups` 的值为 1则查询 `meters` 超级表中 `groupid` 为 1 的所有设备电流平均值变化如下图:
@ -267,11 +286,12 @@ 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)`
- “Group by column(s) **半角**逗号分隔的 `group by` 或 `partition by` 列名。如果是 `group by` 或 `partition by` 查询语句,设置 “Group by“ 列,可以展示多维数据。此处设置 “Group by“ 列名为 `groupid`,可以按 `groupid` 分组展示数据。 - “Group by column(s) **半角**逗号分隔的 `group by` 或 `partition by` 列名。如果是 `group by` 或 `partition by` 查询语句,设置 “Group by” 列,可以展示多维数据。此处设置 “Group by” 列名为 `groupid`,可以按 `groupid` 分组展示数据。
- “Group By Format `Group by` 或 `Partition by` 场景下多维数据 legend 格式化格式。例如上述 INPUT SQL将 “Group By Format 设置为 `groupid-{{groupid}}`,展示的 legend 名字为格式化的分组名。 - “Group By Format `Group by` 或 `Partition by` 场景下多维数据 legend 格式化格式。例如上述 INPUT SQL将 “Group By Format 设置为 `groupid-{{groupid}}`,展示的 legend 名字为格式化的分组名。
完成设置后,按照 `groupid` 分组展示如下图: 完成设置后,按照 `groupid` 分组展示如下图:
@ -279,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。
@ -299,30 +319,36 @@ TDengine 在支持标准 SQL 的基础之上,还提供了一系列满足时序
- [15167](https://grafana.com/grafana/dashboards/15167) TDinsight - [15167](https://grafana.com/grafana/dashboards/15167) TDinsight
- [16388](https://grafana.com/grafana/dashboards/16388) Telegraf 采集节点信息的数据展示 - [16388](https://grafana.com/grafana/dashboards/16388) Telegraf 采集节点信息的数据展示
## 告警配置简介 ## 告警配置
### 告警配置流程
TDengine Grafana 插件支持告警,如果要配置告警,需要以下几个步骤: TDengine Grafana 插件支持告警,如果要配置告警,需要以下几个步骤:
1. 配置联络点“Contact points):配置通知渠道,包括 DingDing、Email、Slack、WebHook、Prometheus Alertmanager 等 1. 配置联络点“Contact points):配置通知渠道,包括 DingDing、Email、Slack、WebHook、Prometheus Alertmanager 等
2. 配置告警通知策略“Notification policies):配置告警发送到哪个通道的路由,以及发送通知的时间和重复频率 2. 配置告警通知策略“Notification policies):配置告警发送到哪个通道的路由,以及发送通知的时间和重复频率
3. 配置 “Alert rules“配置详细的告警规则 3. 配置告警规则“Alert rules”配置详细的告警规则
3.1 配置告警名称 3.1 配置告警名称
3.2 配置查询告警触发条件 3.2 配置查询告警触发条件
3.3 配置规则评估策略 3.3 配置规则评估策略
3.4 配置标签和告警通道 3.4 配置标签和告警通道
3.5 配置通知文案 3.5 配置通知文案
### 告警配置界面 ### 告警配置界面介绍
在Grafana 11 告警界面一共有 6 个 Tab分别是 “Alert rules“、“Contact points“、“Notification policies“、“Silences“、 “Groups“ 和 “Settings“。
- “Alert rules“ 告警规则列表,用于展示和配置告警规则 在Grafana 11 告警界面一共有 6 个 Tab分别是 “Alert rules”、“Contact points”、“Notification policies”、“Silences”、 “Groups” 和 “Settings”。
- “Contact points“ 通知渠道,包括 DingDing、Email、Slack、WebHook、Prometheus Alertmanager 等 - “Alert rules” 告警规则列表,用于展示和配置告警规则
- “Notification policies“ 配置告警发送到哪个通道的路由,以及发送通知的时间和重复频率 - “Contact points” 通知渠道,包括 DingDing、Email、Slack、WebHook、Prometheus Alertmanager 等
- “Silences“ 配置告警静默时间段 - “Notification policies” 配置告警发送到哪个通道的路由,以及发送通知的时间和重复频率
- “Groups“ 告警组,配置的告警触发后会在这里分组显示 - “Silences” 配置告警静默时间段
- “Settings“ 提供通过 JSON 方式修改告警配置 - “Groups” 告警组,配置的告警触发后会在这里分组显示
- “Settings” 提供通过 JSON 方式修改告警配置
### 配置联络点
本节以邮件和飞书为例配置联络点。
#### 配置邮件联络点
在 Grafana 服务的配置文件中添加 SMTP/Emailing 和 Alerting 模块。(以 Linux 系统为例,其配置文件一般位于 `/etc/grafana/grafana.ini`
## 配置邮件联络点
### Grafana Server 配置文件修改
在 Grafana 服务的配置文件中添加 SMTP/Emailing 和 Alerting 模块,以 Linux 系统为例,其配置文件一般位于 `/etc/grafana/grafana.ini`
在配置文件中增加下面内容: 在配置文件中增加下面内容:
```ini ```ini
@ -336,106 +362,110 @@ skip_verify = true
from_address = sender@foxmail.com from_address = sender@foxmail.com
``` ```
然后重启 Grafana 服务即可, 以 Linux 系统为例,执行 `systemctl restart grafana-server.service` 然后重启 Grafana 服务以 Linux 系统为例,执行 `systemctl restart grafana-server.service`)即可添加完成
### Grafana 页面创建新联络点 在 Grafana 页面找到 “Home” -> “Alerting” -> “Contact points”创建新联络点
“Name” Email Contact Point
在 Grafana 页面找到 “Home“ -> “Alerting“ -> “Contact points“创建新联络点 “Integration”选择联络类型这里选择 Email填写邮件接收地址完成后保存联络点
”Name“ Email Contact Point
“Integration“选择联络类型这里选择 Email填写邮件接收地址完成后保存联络点
![TDengine Database Grafana plugin alert email](./alert-email.webp) ![TDengine Database Grafana plugin alert email](./alert-email.webp)
## 配置飞书联络点 #### 配置飞书联络点
### 飞书机器人配置 按照以下步骤配置飞书机器人:
1. “飞书工作台“ -> “获取应用“ -> “搜索飞书机器人助手“ -> “新建指令“
1. “飞书工作台” -> “获取应用” -> “搜索飞书机器人助手” -> “新建指令”
2. 选择触发器Grafana 2. 选择触发器Grafana
3. 选择操作:通过官方机器人发送消息,填写发送对象和发送内容 3. 选择操作:通过官方机器人发送消息,填写发送对象和发送内容
![TDengine Database Grafana plugin feishu robot](./alert-feishu1.webp) ![TDengine Database Grafana plugin feishu robot](./alert-feishu1.webp)
### Grafana 配置飞书联络点 在 Grafana 页面找到 “Home” -> “Alerting” -> “Contact points” 创建新联络点
“Name”Feishu Contact Point
在 Grafana 页面找到 “Home“ -> “Alerting“ -> “Contact points“ 创建新联络点 “Integration”选择联络类型这里选择 Webhook并填写 URL (在飞书机器人助手的 Grafana 触发器 Webhook 地址),完成后保存联络点
“Name“Feishu Contact Point
“Integration“选择联络类型这里选择 Webhook并填写 URL (在飞书机器人助手的 Grafana 触发器 Webhook 地址),完成后保存联络点
![TDengine Database Grafana plugin feishu contact point](./alert-feishu2.webp) ![TDengine Database Grafana plugin feishu contact point](./alert-feishu2.webp)
## 通知策略 ### 配置告警通知策略
配置好联络点后可以看到已有一个Default Policy 配置好联络点后可以看到已有一个Default Policy
![TDengine Database Grafana plugin Notification default policy](./alert-notification1.webp) ![TDengine Database Grafana plugin Notification default policy](./alert-notification1.webp)
点击右侧 ”...“ -> ”Edit“,然后编辑默认通知策略,弹出配置窗口: 点击右侧 “...” -> ”Edit”,然后编辑默认通知策略,弹出配置窗口:
![TDengine Database Grafana plugin Notification](./alert-notification2.webp) ![TDengine Database Grafana plugin Notification](./alert-notification2.webp)
然后配置下列参数: 然后配置下列参数:
- “Group wait 发送首次告警之前的等待时间。 - “Group wait 发送首次告警之前的等待时间。
- “Group interval 发送第一个告警后,为该组发送下一批新告警的等待时间。 - “Group interval 发送第一个告警后,为该组发送下一批新告警的等待时间。
- “Repeat interval 成功发送告警后再次重复发送告警的等待时间。 - “Repeat interval 成功发送告警后再次重复发送告警的等待时间。
## 配置告警规则 ### 配置告警规则
### 配置查询和告警触发条件 以配置智能电表告警为例,告警规则的配置主要包括告警名称、查询和告警触发条件、规则评估策略、标签和告警通道、通知文案。
在需要配置告警的面板中选择 “Edit“ -> “Alert“ -> “New alert rule“。 #### 配置告警名称
在需要配置告警的面板中选择 “Edit” -> “Alert” -> “New alert rule”。
“Enter alert rule name“ (输入告警规则名称):此处以智能电表为例输入 `power meters alert`
#### 配置查询和告警触发条件
在 “Define query and alert condition” (定义查询和告警触发条件) 中配置告警规则。
1. 选择数据源:`TDengine Datasource`
2. 查询语句:
1. “Enter alert rule name“ (输入告警规则名称):此处以智能电表为例输入 `power meters alert`
2. “Define query and alert condition“ (定义查询和告警触发条件)
2.1 选择数据源:`TDengine Datasource`
2.2 查询语句:
```sql ```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) 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)
``` ```
2.3 设置 ”Expression“表达式`Threshold is above 100`
2.4 点击【Set as alert condition】 3. 设置 “Expression”表达式`Threshold is above 100`
2.5 “Preview“查看设置的规则的结果 4. 点击【Set as alert condition】
5. “Preview”查看设置的规则的结果
完成设置后可以看到下面图片展示: 完成设置后可以看到下面图片展示:
![TDengine Database Grafana plugin Alert Rules](./alert-rules1.webp) ![TDengine Database Grafana plugin Alert Rules](./alert-rules1.webp)
### 配置表达式和计算规则 Grafana 的 “Expression”表达式支持对数据做各种操作和计算其类型分为
1. “Reduce”将所选时间范围内的时间序列值聚合为单个值
Grafana 的 “Expression“表达式支持对数据做各种操作和计算其类型分为 1.1 “Function” 用来设置聚合方法,支持 Min、Max、Last、Mean、Sum 和 Count。
1. “Reduce“将所选时间范围内的时间序列值聚合为单个值 1.2 “Mode” 支持下面三种:
1.1 “Function“ 用来设置聚合方法,支持 Min、Max、Last、Mean、Sum 和 Count。 - “Strict”如果查询不到数据数据会赋值为 NaN。
1.2 “Mode“ 支持下面三种: - “Drop Non-numeric Value”去掉非法数据结果。
- “Strict“如果查询不到数据数据会赋值为 NaN。 - “Replace Non-numeric Value”如果是非法数据使用固定值进行替换。
- “Drop Non-numeric Value“去掉非法数据结果。 2. “Threshold”检查时间序列数据是否符合阈值判断条件。当条件为假时返回 0为真则返回1。支持下列方式
- “Replace Non-numeric Value“如果是非法数据使用固定值进行替换。
2. “Threshold“检查时间序列数据是否符合阈值判断条件。当条件为假时返回 0为真则返回1。支持下列方式
- Is above (x > y) - Is above (x > y)
- Is below (x < y) - Is below (x < y)
- Is within range (x > y1 AND x < y2) - Is within range (x > y1 AND x < y2)
- Is outside range (x < y1 AND x > y2) - Is outside range (x < y1 AND x > y2)
3. “Math:对时间序列的数据进行数学运算。 3. “Math:对时间序列的数据进行数学运算。
4. “Resample:更改每个时间序列中的时间戳使其具有一致的时间间隔,以便在它们之间执行数学运算。 4. “Resample:更改每个时间序列中的时间戳使其具有一致的时间间隔,以便在它们之间执行数学运算。
5. “Classic condition (legacy) 可配置多个逻辑条件,判断是否触发告警。 5. “Classic condition (legacy) 可配置多个逻辑条件,判断是否触发告警。
如上节截图显示,此处我们设置最大值超过 100 触发告警。 如上节截图显示,此处我们设置最大值超过 100 触发告警。
### 配置评估策略 #### 配置规则评估策略
![TDengine Database Grafana plugin Alert Evaluation Behavior](./alert-evaluation.webp) ![TDengine Database Grafana plugin Alert Evaluation Behavior](./alert-evaluation.webp)
完成下面配置: 完成下面配置:
- “Folder“设置告警规则所属目录。 - “Folder”设置告警规则所属目录。
- “Evaluation group“设置告警规则评估组。“Evaluation group“ 可以选择已有组或者新建组,新建组可以设置组名和评估时间间隔。 - “Evaluation group”设置告警规则评估组。“Evaluation group” 可以选择已有组或者新建组,新建组可以设置组名和评估时间间隔。
- “Pending period“在告警规则的阈值被触发后异常值持续多长时间可以触发告警合理设置可以避免误报。 - “Pending period”在告警规则的阈值被触发后异常值持续多长时间可以触发告警合理设置可以避免误报。
#### 配置标签和告警通道
### 配置标签和告警通道
![TDengine Database Grafana plugin Alert Labels and Notifications](./alert-labels.webp) ![TDengine Database Grafana plugin Alert Labels and Notifications](./alert-labels.webp)
完成下面配置: 完成下面配置:
- “Labels 将标签添加到规则中,以便进行搜索、静默或路由到通知策略。 - “Labels 将标签添加到规则中,以便进行搜索、静默或路由到通知策略。
- “Contact point 选择联络点,当告警发生时通过设置的联络点进行通知。 - “Contact point 选择联络点,当告警发生时通过设置的联络点进行通知。
### 配置通知文案 #### 配置通知文案
![TDengine Database Grafana plugin Alert Labels and Notifications](./alert-annotations.webp) ![TDengine Database Grafana plugin Alert Labels and Notifications](./alert-annotations.webp)
设置 “Summary” 和 Description” 后,若告警触发,将会收到告警通知。 设置 “Summary” 和 Description” 后,若告警触发,将会收到告警通知。

View File

@ -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>

View File

@ -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

View File

@ -21,7 +21,7 @@ public static void main(String[] args) throws SQLException {
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); //create datasource HikariDataSource ds = new HikariDataSource(config); //create datasource

View File

@ -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;
} }

View File

@ -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;

View File

@ -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>