docs(datain): parser plugin content append in component taosx
This commit is contained in:
parent
c54a89b47a
commit
69a5b9e656
|
@ -421,7 +421,6 @@ taosX 会将监控指标上报给 taosKeeper,这些监控指标会被 taosKeep
|
|||
| write_raw_fails | 本次运行写入 raw meta 失败的次数 |
|
||||
| success_blocks | 本次写入成功的数据块数 |
|
||||
|
||||
|
||||
### taosX 其他数据源 任务
|
||||
|
||||
这些数据源包括: InfluxDB,OpenTSDB,OPC UA,OPC DA,PI,CSV,MQTT,AVEVA Historian 和 Kafka。
|
||||
|
@ -452,3 +451,93 @@ taosX 会将监控指标上报给 taosKeeper,这些监控指标会被 taosKeep
|
|||
| written_blocks | 本次运行此任务写人成功的 raw block 数 |
|
||||
| failed_blocks | 本次运行此任务写入失败的 raw block 数 |
|
||||
|
||||
## taosX 数据解析插件
|
||||
|
||||
接入 kafka / mqtt 消息时,需要对原始数据进行解析,如果使用 json/regex 等模式解析器无法满足解析需求,同时 UDT 也无法满足性能要求时,可以自定义数据解析插件。
|
||||
|
||||
### 插件概述
|
||||
|
||||
taosX Parser 插件是一个要求用 C/Rust 语言开发的 C ABI 兼容动态库,该动态库要实现约定的 API 并编译为在 taosX 所在运行环境中能够正确运行的动态库,然后复制到约定位置由 taosX 在运行时加载,并在处理数据的 Parsing 阶段调用。
|
||||
|
||||
### 插件部署
|
||||
|
||||
完成插件开发后,编译环境需要和目标运行环境兼容,将编译好的插件动态库复制到插件目录下,taosX 启动后,系统首次使用插件时初始化加载插件。可以在 explorer 的 kafka 或者 mqtt 数据接入配置页面中,检查是否加载成功。如下图,如果加载成功,则在解析器选择列表中展示出来。
|
||||
|
||||

|
||||
|
||||
插件目录在 `taosx.toml` 配置文件中复用 plugins 配置,追加`/parsers`作为插件安装路径,默认值在 UNIX 环境下为 `/usr/local/taos/plugins/parsers`,在 Windows 下为 `C:\TDengine\plugins\parsers`。
|
||||
|
||||
### 插件 api 说明
|
||||
|
||||
#### 1. 获取插件名称
|
||||
|
||||
获取插件名,用于前端显示。
|
||||
|
||||
**函数签名**:const char* parser_name()
|
||||
|
||||
**返回值**:字符串。
|
||||
|
||||
#### 2. 获取插件版本
|
||||
|
||||
插件版本,方便问题定位。
|
||||
|
||||
**函数签名**:const char* parser_version()
|
||||
|
||||
**返回值**:字符串。
|
||||
|
||||
#### 3. 配置解析器
|
||||
|
||||
将一个字符串参数解析为一个配置对象,仅插件内部使用。
|
||||
|
||||
**函数签名**:parser_resp_t parser_new(char* ctx, uint32_t len);
|
||||
|
||||
char* ctx: 用户自定义配置字符串。
|
||||
|
||||
uint32_t len: 该字符串的二进制长度(不含 `\0`)。
|
||||
|
||||
**返回值**:
|
||||
|
||||
``` c
|
||||
struct parser_resp_t {
|
||||
int e; // 0 if success.
|
||||
void* p; // Success if contains.
|
||||
}
|
||||
```
|
||||
|
||||
当创建对象失败时,e 不为 0。
|
||||
|
||||
当创建成功时,e = 0,p 为解析器对象。
|
||||
|
||||
#### 4. 解析数据
|
||||
|
||||
**函数签名**:
|
||||
|
||||
对输入 payload 进行解析,返回结果为 JSON 格式 [u8] 。返回的 JSON 将使用默认的 JSON 解析器进行完全解码(展开根数组和所有的对象)。
|
||||
|
||||
``` c
|
||||
const char* parser_mutate(
|
||||
void* parser,
|
||||
const uint8_t* in_ptr, uint32_t in_len,
|
||||
const void* uint8_t* out_ptr, uint32_t* out_len
|
||||
);
|
||||
```
|
||||
|
||||
`void* parser`: parser_new 生成的对象指针;
|
||||
|
||||
`const uint8_t* in_ptr`:输入 Payload 的指针;
|
||||
|
||||
`uint32_t in_len`: 输入 Payload 的 bytes 长度(不含 `\0`);
|
||||
|
||||
`const void* uint8_t* out_ptr`:输出 JSON 字符串的指针(不含 \0)。当 out_ptr 指向为空时,表示输出为空。
|
||||
|
||||
`uint32_t * out_len`:输出 JSON 字符串长度。
|
||||
|
||||
**返回值**: 当调用成功时,返回值为 NULL。
|
||||
|
||||
#### 5. 释放解析器
|
||||
|
||||
释放解析器对象内存。
|
||||
|
||||
**函数签名**: void parser_free(void* parser);
|
||||
|
||||
void* parser: parser_new 生成的对象指针。
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
Loading…
Reference in New Issue