百度天工笔记

百度天工笔记

参考资料:

简介

百度天工是融合了百度ABC(AI、Big Data、Cloud)的“一站式、全托管”智能物联网平台。 从端到云,从数据采集、传输、计算、存储、展现到分析,天工提供了全面的基础产品和服务。赋能物联网应用开发商和生态合作伙伴从”连接”、”理解”到”唤醒“的各项关键能力,从而轻松构建各类智能物联网应用,促进行业变革。

  • 连接:互联互通,让我们触达万物

    端计算与云计算一体,开放开源。十亿级并发连接,稳定安全无忧,支持主流操作系统和行业特色协议

  • 理解:建模重塑,让我们协同万物

    海量时序数据存储与秒级分析,定义数字设备、管理设备生命周期,数据可视化,实时洞察业务变化

  • 唤醒:万物梦醒,让我们赋予万物智能

    集成百度全栈AI服务,语音、图像、视频、人脸、知识图谱、自动驾驶等。赋能行业伙伴共推物联网解决方案

百度天工服务分为物接入IOT Hub、物解析IOT Parser、物管理IOT Device、时序数据库TSDB、规则引擎Rule Engine还有物可视IOT Visualization。其平台架构如下所示:

组件构成

  • 物联基础套件

    以物影子为核心的开发模型致力于成为云端描述真实世界的载体,提供设备管理、数据接入、协议解析等基础功能,更方便对接时序数据库、物可视等产品服务。

    [外链图片转存失败(img-8CTFydra-1564999392244)(物联基础套件.png)]

  • 物联数据存储

    物联网时序数据存储的最佳选择,基于时序数据做到超高性能读写和计算优化,并且可以与端上时序数据库无缝实时协同。

  • 物联边缘计算

    [外链图片转存失败(img-tRmi9dvQ-1564999392245)(物联边缘计算.png)]

  • 函谷物联安全系统

    沉淀百度在安全领域的最新成果,全面保护你的物联网设备。包含面向设备的密钥和证书管理服务,设备端与云端双向认证与传输加密,以及实时审查并获悉你的物联网设备的安全状况,确保设备遵循安全最佳实践。

一、物接入IOT Hub

1、概述

物接入IoT Hub 是全托管的云服务,通过主流的物联网协议(如MQTT)通讯,可以在智能设备与云端之间建立安全的双向连接,快速实现物联网项目。支持亿级并发连接和消息数,建立海量设备与云端安全可靠的双向连接,无缝对接天工平台和百度云的各项产品和服务。

物接入分为设备型(原物管理)和数据型两种项目类型。设备型适用于基于设备的物联网场景;数据型适用于基于数据流的物联网场景。

物接入资源分为两类:物接入、物接入(SIM版),本文主要讲解物接入方式,SIM版读者有兴趣可以试试。

MQTT概述

MQTT(Message Queuing Telemetry Transport)是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。

支持MQTT底层传输协议的相关设备有:

  • 客户端–使用它连接服务端。
  • 服务端–全托管的云服务,帮助建立设备与云端之间安全可靠的双向连接,以支撑海量设备的数据收集、监控、故障预测等各种物联网场景。

MQTT客户端

使用MQTT的程序或设备,推荐您使用MQTT.fx。客户端总是通过网络连接到服务端。它可以

  • 发布应用消息给其它相关的客户端。
  • 订阅以请求接受相关的应用消息
  • 取消订阅以移除接受应用消息的请求。
  • 从服务端断开连接。

MQTT服务端

全托管的云服务,帮助建立设备与云端之间安全可靠的双向连接,以支撑海量设备的数据收集、监控、故障预测等各种物联网场景。

  • 接受来自客户端的网络连接
  • 接受客户端发布的应用消息
  • 处理客户端的订阅和取消订阅请求。
  • 转发应用消息给符合条件的客户端订阅。

更详细的MQTT协议介绍请参考MQTT官网

名词解释
  • 项目: 物接入IoT Hub的项目,每一个项目代表一个完整的物接入 endpoint。项目有设备型和数据型两种类型。

  • 物影子:物影子反映物理世界中的一个物(设备),是物在云端的『影子』或『数字双胞胎』。运行时,物将监控值上报给物影子,物影子会用一个 json 文档存储设备的最后一次上报的状态,您可以直接通过MQTT或HTTP访问。同时,物影子也提供反控功能。

  • 物模型:物模型由一个或多个属性构成,您可以用他来表示一类(或同一型号的一批)设备。基于物模型可以创建物影子。

  • 物(thing):表示物接入IoT Hub设备,用户可以在每个endpoint项目中创建一个或多个thing。

  • 身份(principal):principal即身份,是一个抽象概念,表示连接物(thing)的身份,基于身份可以对thing进行权限管理。每个thing可以绑定一个身份principal,每个身份principal拥有一个策略policy。

  • 策略(policy):策略,表示每个身份对于对应thing所具备的权限,可以为身份principal设置对应的策略policy,一个principal对应一个policy。

  • 权限(permission):权限,表示对策略policy、主题topic所拥有的能力。为每一个policy设置一组权限permission,其中包括主题topic,和对该主题的操作权限operation。

  • 主题(topic):每一个策略policy都需要指定一个主题topic,在进行使用物接入服务之前,需要先为我们即将开展的订阅发布信息创建一个主题名称,该主题应用于MQTT客户端。topic规则允许字符串可以带一个通配符”#”,例如“temperature/#”就是匹配前缀是temperature的所有topic;单独的“#”表示匹配所有topic。

  • 操作权限(operation):对topic的操作权限。目前基于MQTT协议,IoT Hub 支持创建发布 Publish 和订阅 Subscribe 两种权限。

产品架构

物接入(设备型)产品使用架构如图:

图

2、快速接入IOT Hub

步骤一:创建计费套餐

创建实例之前应先创建计费套餐并设定每个月收发消息的额度,系统将根据额度自动计算每个月的服务费用。每个用户只能创建一个计费套餐,所有实例将共享该套餐的额度。

  1. 登录百度云官网,点击右上角的“管理控制台”,快速进入控制台界面。

  2. 选择“产品服务>物接入IoT Hub”,进入服务页面。

  3. 点击“实例列表”,选择一种计费方式,物接入或者物接入(SIM)版,关于产品的定价和费用计算方法,请参看产品定价

    完成配置后,点击“下一步”进入在线支付页面进行支付。支付成功后,用户可进入“实例列表”,创建物接入实例。

步骤二:创建实例

连接IoT Hub服务需要创建一个实例(endpoint),一个endpoint表示一个完整的IoT Hub服务。登录IoT Hub控制台页面,点击“创建实例”,填写需要创建IoT Hub服务的实例名称。

说明:

  • 目前每个账户能创建100个endpoint,且每个实例的名称是全局唯一的,不能重名。每个endpoint下可创建10000个thing、10000个policy和10000个principal。如果需要更多配额,请提交工单申请。

创建实例时,IoT Hub默认提供三种地址,选择不同的地址,意味着您可以通过不同的方式连接到百度云IoT Hub。

  • tcp://yourendpoint.mqtt.iot.gz.baiduce.com:1883,端口1883,不支持传输数据加密,可以通过MQTT.fx客户端连接。

  • ssl://yourendpoint.mqtt.iot.gz.baiduce.com:1884,端口1884,支持SSL/TLS加密传输,MQTT.fx客户端连接,参考配置MQTT客户端

  • wss://yourendpoint.mqtt.iot.gz.baidubce.com:8884,端口8884,支持Websockets浏览器方式连接,同样包含ssl加密,参考Websockets Client

步骤三:配置实例

成功创建IoT Hub实例后,点击实例名称,进入配置IoT Hub实例页面,创建设备、身份和策略。具体操作步骤如下:

1、创建设备:选择设备列表,点击“创建设备”,输入需要连接IoT Hub服务的设备名称。为了便于灵活连接IoT Hub服务,每一台设备thing都需要绑定相应的身份principal。

2、创建身份:在身份输入框内点击“创建”,快速创建身份principal。输入principal名称,以及为每个身份授权的策略policy。

3、创建策略:在策略输入框内点击“创建”,快速创建策略policy。输入policy名称,主题topic,选择该身份拥有的权限:发布消息(publish)、订阅消息(subscribe)。

说明:

每个policy可以创建多个主题topic,在创建策略弹框右侧,点击“+”可以绑定更多的主题。

4、成功创建身份principal后,返回密钥,在配置客户端时会用到,需要复制保存,如下图所示:

5、至此,成功配置了 IoT Hub 实例中的相关参数。

步骤四:配置MQTT客户端

配置MQTT的应用客户端,可以快速验证是否可以实现与物接入服务交流发送或者接收消息。

前提条件:登录MQTT.fx官网,找到适合的版本下载并安装MQTT.fx客户端。

操作步骤

  1. 打开MQTT客户端的设置页面,点击“+”按键,创建一个新的配置文件。

    a. 填写Connection profile相关信息:

    参数名称说明
    profile name配置文件名称
    Broker Address创建endpoint后返回的hostname
    Broker Port1884
    Client ID客户端ID,支持“a-z”,“0-9”,“_”,“-”字符,且不能大于128bytes,UTF8编码

    b. 选择User Credential,输入创建 IoT Hub 服务返回的username/password,参考配置实例

    c. 配置SSL/TLS安全认证,勾选 Enable SSL/TLS,选择CA signed server certificate认证。

    d. 点击“Apply”按键,完成客户端配置。

  2. 返回MQTT客户端界面,选择新创建的配置文件,点击“connect”按键连接服务。

  3. 成功连接后,即可开始订阅消息。

    打开Subscribe标签,填写主题topic,创建设备时自己定义的主题,选择默认的QoS 0,点击“Subscribe”进行订阅操作。

  4. 发布消息。

    打开Publish标签,填写主题topic,创建设备时自己定义的主题,选择默认的QoS 0,点击“Publish”进行发布操作。

  5. 返回Subscribe界面,即可看到已接收的订阅消息。

二、规则引擎Rule Engine

1、概述

规则引擎就是通过灵活的设定规则,将设备传上云端的数据,送往不同的数据目的地(如时序数据库TSDB、Kafka、对象存储BOS等)以达到不同的业务目标。

优势:

  • 多种服务支持

    支持将消息转发到时序数据库、Kafka、对象存储,无缝对接MapReduce、机器学习、云推送等各种服务。

  • 灵活易用

    规则设置灵活简单,一键启停规则,支持各种事件和动作。

  • 多场景支持

    支持设备与云端之间的转发,设备与设备之间的转发,设备与第三方服务的转发。

  • 强大的API

    提供开放标准的API,可通过调用API实现控制台操作,方便第三方应用快速集成云端服务。

:城市路灯管理属于一个典型的物联网场景,该场景可以复制到很多其它的领域。

传统情况下,路灯管理基本上靠人力,例如:巡查、维护,甚至是靠人工控制路灯开关;而城市路灯数量巨大,分布复杂,对于管理部门来说可能已经投入了大量的人力成本,但仍然会出现故障发现和抢修不及时的情况。同时在传统情况下,由于缺少路灯的运行环境(例如:电压、温度),使用寿命等数据,很难有针对性改进使用方法,进而延长使用寿命,也很难指定准确的维护策略和备件策略。

路灯接入可以采用多种方式,例如:3G/4G,电力载波,LPWAN等,无论采用哪种方式,用户只需在接入设备中预装Edge SDK,都能轻松打通路灯和百度云之间的双向安全通道,实现将路灯接入百度云的物接入服务。路灯可以实时将设备状态、电压电流、环境温度、地理坐标等信息发送至物接入服务。同时在工程师的智能终端上预装APP对接百度云,可实时上报工程师的地理位置坐标。

物接入接收到路灯上送的消息后,可将消息分别转发至物管理和规则引擎服务。用户可在规则引擎上制定策略,实现以下操作:

  • 当路灯下线或电压电流超过阈值时,检索距离现场最近的维护工程师,并自动发送告警、路灯坐标等信息给指定的维护工程师。工程师的智能终端可对接百度地图服务,自动在地图上显示待维修路灯的位置。

  • 将电压电流、环境温度等信息转发至时序数据库,并对接天算大数据平台,用于后续的数据挖掘。

2、快速创建规则引擎

操作流程介绍:

2.1、创建数据源

规则引擎需要通过物接入获取设备端发往云端的消息,因此在配置规则引擎之前,需先配置物接入IoT Hub打通云端和设备端之间的双向通道。物接入主要用于在智能设备与云端之间建立安全的双向连接,实现从设备到云端以及从云端到设备的消息传输。

2.2、创建目的地

规则引擎可根据预先设置的规则将消息转发至百度云的其它服务,例如时序数据库、百度Kafka或物接入主题。在配置规则引擎前,建议您先创建好需要用到的其它服务。

  1. 百度Kafka

    百度Kafka是基于Apache Kafka的分布式、高可扩展、高通量、多分区和多副本的消息托管服务。百度Kafka封装了Kafka集群细节,并以托管服务形式提供,您可以直接使用百度Kafka创建主题来集成大规模分布式应用,而无需考虑集群运维,仅按照使用量支付处理数据的费用。

  2. 时序数据库TSDB

    TSDB是用于管理时间序列数据的专业化数据库。区别于传统的关系型数据库,TSDB针对时间序列数据的存储、查询和展现进行了专门的优化,从而获得极高的数据压缩能力、极优的查询性能,特别适用于物联网应用场景。

  3. 物接入主题

    物接入主题是物接入服务与前端设备进行消息传播的媒介。规则引擎支持将在一个主题中收到的信息,转发至另一个主题中。如将主题temperature订阅到的消息,筛选出大于阈值的消息,转发至主题alarm中,再用其他客户端订阅alarm客户端主题即可。

2.3 创建规则

设置筛选规则、消息来源主题、触发条件和数据目的地。

2.4 验证规则

构建Json格式的Payload,对已经创建的规则的筛选结果进行验证。

步骤一:创建规则

规则引擎需要通过物接入获取设备端发往云端的消息,因此在配置规则引擎之前,需先配置物接入打通云端和设备端之间的双向通道。有关物接入的配置操作,请参看物接入IoT Hub

规则引擎从物接入获取到的消息的payload应当是Json格式的,因此在创建规则时,需要使用Json表达式引用。在执行以下操作之前,用户应对Json表达式引用方法有所了解。有关Json表达式的介绍请参看附录-Json表达式

1、登录百度云官网,点击右上角的“管理控制台”,快速进入控制台界面。

2、选择“产品服务>规则引擎>规则列表”,进入“规则列表”页面。

3、点击“新建规则”,进入规则创建页面,填写以下配置信息:

查询字段:从消息中筛选出来用于后续操作(如:转发至TSDB或百度Kafka)的数据。如果填写“*”,则将原样转发payload中的所有数据至目的地。

如果将消息转发至TSDB,需要预先对消息格式进行调整,具体操作请查看将消息转发至TSDB

主题:消息来源的物接入主题。

约束条件:后续操作的触发条件。缺省情况下,转发每一条消息至目的地。

其中,查询字段和约束条件中支持的操作符如下:

运算符语义示例
JSON扩展表达式JSON的属性访问info.contact.tel,关于Json表达式的更多内容,请参看附录
=相等比较age = 9
<>不等name <> ‘abc’
AND逻辑与age = 9 AND name <> ‘abc’
OR逻辑或age = 9 OR name <> ‘abc’
()括号age =9 AND (name <> ‘abc’ OR score > 60.0)
+,-,*,/数值的加减乘除2+3, age - 1, score * 100.0, age / 3
<, <=, >, >=比较操作符age < 10, age <= 9, score > 60.0, score >= 60.0
in集合操作WHERE name in (‘jack’, ‘jim’)
SQL函数标准的SQL函数如:ceil, floor等,常见SQL函数,请参看附录
CURRENT_TIMESTAMP返回当前时间戳(毫秒),即UTC时间SELECT CURRENT_TIMESTAMP AS TS
LOCALTIMESTAMP()返回本地时间戳(毫秒),即UTC+8SELECT LOCALTIMESTAMP AS localTS
NEWID()返回一个guid(global unique identifier,全球唯一标识),规则引擎会为每一条消息新增一个guidSELECT NEWID() AS id from t
clientid()返回消息的发送者idSELECT clientid() FROM…
clientip()返回消息发送者的IPSELECT clientip() FROM…
topic()返回消息所在的主题SELECT topic() FROM…
qos()返回消息发送所用的QoSSELECT qos() FROM…

4、点击“添加数据目的地”,新增一个数据目的地,此处可添加多个。

规则引擎支持将数据转发至“时序数据库TSDB”、“百度Kafka”或“其它物接入主题”。

将数据转发至“其它物接入主题”是,支持将数据转发至同一个endpoint(即消息来源的物接入主题所在的endpoint)下的其它主题,不支持转发至其它endpoint。

如果将数据转发至TSDB,需要对数据格式进行调整,具体操作请参看将消息转发至TSDB

返回“规则列表”页面,查看已经创建的规则。

步骤二:验证规则

用户可以自己构建Json格式的Payload,对已经创建的规则的筛选结果进行验证。在执行以下操作前,用户应先创建规则。

1、选择“产品服务>规则引擎>规则列表”,进入“规则列表”页面,查看已经创建的规则。

2、找到指定的规则,点击规则名称,进入规则详情页面;点击“规则验证”,验证已经创建的规则。

3、在“输入数据”中构建Json格式的原始数据,选择数据目的地并点击“验证”,此时系统将根据已经创建的规则自动输出筛选后的数据。

步骤三:将消息转发至数据目的地

1、存入TSDB数据库
通过简单规则调整数据格式

以下方法仅针对value存放在消息中,如果value存放在数组中,请看下面的通过"_TSDB_META"调整数据格式。

TSDB数据库要求数据必须包含metric、value和timestamp三个字段,以及额外一个或多个数据作为tag。如果原始消息中不包含这些字段,在将数据转发至TSDB前,需要对数据格式进行调整,如下所示:

原始数据:

{     
    "time": 1465376157007,     
    "name": "cpu_idle",     
    "score": 51,    
    "host": "server1",     
    "rack": "rack1",     
    "other": "something"
}

原始数据中的"score": 51为整型,数据没有放在引号""中。如果原始数据为"score": "51",此时该数据为字符串类型。字符串类型数据写入TSDB后将无法在查看面板中生成图表。

规则引擎设置

查询字段:name AS metric, score AS _value,timeAS _timestamp, host, rack

由于time为SQL的关键字,使用时需要加反单引号(重音符)。

主题:消息来源的物接入主题。

约束条件:score > 50

输出数据:

{     
    "metric":"cpu_idle",    
    "_value":51,     
    "_timestamp":1465376157007,     
    "host":"server1",     
    "rack":"rack1" 
}
2、转发到MQTT主题

规则引擎可以从接收到的消息中自动提取MQTT主题,并将消息转发至该主题,具体操作如下所示:

原始数据:

{     
    "msg": "hello",     
    "info": {         
        "name": "chiller-2016"     
    } 
}

下图是规则调试的结果

以下是规则编辑界面,查询字段和查询主题是必填项,查询主题代表需要处理的是哪个主题的消息,也可以写通配符“#”,代表所有主题消息

添加数据目的地:

以上是两个数据库和一个转发的主题,共3个数据目的地。

三、时序数据库TSDB

1、概述

在物联网时代,企业需要处理各种设备产生的带有时间标签的数据,即时间序列数据。时间序列数据主要由各类型实时监测、检查与分析设备所采集或产生,涉及电力行业、化工等行业。这些工业数据的典型特点是:产生频率快、严重依赖于采集时间、测点多信息量大等。普通关系型数据库无法高效地处理此类数据。

为了更好的处理时间序列数据,时序数据库(Time Series Database,下简称TSDB)应运而生。TSDB是用于管理时间序列数据的专业化数据库。区别于传统的关系型数据库,TSDB针对时间序列数据的存储、查询和展现进行了专门的优化,从而获得极高的数据压缩能力、极优的查询性能,特别适用于物联网应用场景。

典型的物联网场景下,数据从端侧到云端的数据流如下所示。

产品功能:
  • 数据写入

    支持通过REST API方式高并发写入时间序列数据,可线性扩展。

  • 极速查询

    支持海量时序数据的极速查询,每秒可返回1亿数据点的聚合查询结果。

  • 丰富的函数

    提供丰富的数据处理能力,提供AVG、SUM、MAX等15种聚合函数,可以将数据降精度聚合,并支持嵌套聚合。

  • Web图表

    查询的结果可以通过Web图表方式生动、灵活的展现。

  • 数据时效

    可以开启数据时效,系统可以自动清除不在有效期内的数据。

  • 压缩存储

    采用高效压缩算法,可达10-20倍压缩率,大大降低存储成本。

  • 数据库管理

    实时监控,提供对数据库的写入、读取状态进行实时监控

产品优势
  1. 高性能读写

    每秒千万级数据点写入,亿级数据点聚合结果秒级返回

  2. 低成本存储

    高效压缩算法,大大节省存储空间

  3. 强计算能力

    提供插值、预处理等多种计算方式;支持15种聚合函数

  4. 多生态支持

    支持SQL查询、主流Hadoop/spark等大数据分析平台、多种可视化工具

  5. 高可靠服务

    三副本、分布式部署,保证数据可靠性

名词解释:

TSDB(Time Series Database):时序数据库,用于保存时间序列(按时间顺序变化)的海量数据。

度量(metric):数据指标的类别,如发动机的温度、发动机转速、模拟量等。

域(field):在指定度量下数据的子类别。即一个metric支持多个field,如metric为wind,该metric可以有两个field:direction和speed。

时间戳(timestamp):数据产生的时间点。

数值(value):度量(metric)对应的数值,如56°C、1000r/s等(实际中不带单位)。如果有多个field,每个field都有相应的value。不同的field支持不同的数据类型写入。对于同一个field,如果写入了某个数据类型的value之后,相同的field不允许写入其他数据类型。

标签(tag):一个标签是一个key-value对,用于提供额外的信息,如"设备号=95D8-7913"、“型号=ABC123”、“出厂编号=1234567890”等。

数据点(data point):“1个metric + 1个field(可选) + 1个timestamp + n个tag(n>=1)”唯一定义了一个数据点。当写入的metric、field、timestamp、n个tag都相同时,后写入的value会覆盖先写入的value。

时间序列: “1个metric +1个field + n个tag(n>=1)”定义了一个时间序列。如 metric为wind,field为speed,tag为“型号=ABC123”、“出厂编号=1234567890"的数据点都属于同一个时间序列。

  • tag的key值和value值都相同才算过同一个tag,即deviceid=1和deviceid=2是两个标签。

  • 请不要将时间戳作为tag,否则会导致时间序列超过限制,关于时间序列的限制请参考费率表

分组(group):可以按标签(tag)对数据点进行分组。

聚合函数(aggregator):可以对一段时间的数据点做聚合,如每10分钟的和值、平均值、最大值、最小值等。

数据库(database):一个用户可以有多个数据库,一个数据库可以写入多个“度量”的“数据点”。

例子

单域

监测温度的值,把温度(temperature)作为一个度量(metric),用标签(tag)来标识每一个数据的额外信息,比如每个数据点都有3个tag,tag是一个key-value对,tag的key分别是deivceID、floor、room。

如图所示,表示对温度的时间序列监测值,共4个数据点。在该图中的4个数据点使用的metric、tag是相同的,所以是同一个时间序列。

多域

监测风力的值,把风力(wind)作为一个度量(metric),风力(wind)分为两个域:风向(direction)和速度(speed)。这些监测数据是从不同的传感器传输到云端的,用标签(tag)来标识每一个数据的额外信息,比如每个数据点有三个tag,tag是一个key-value对;tag的key分别是sensor、city、province。

为了表示在广东省深圳市传感器编号95D8-7913上传风向(direction)数据,可以将这个数据点的tag标记为sensor=95D8-7913、city=深圳、province=广东。

如图,展示了metric为wind的两个域(speed和direction)的监测数据。当使用的是metric、field和tag是相同的时,是同一个时间序列。即图中有2个时间序列,8个数据点。

将数据采用metric+field的方式存储的优势在于,可以在同一个时间序列下联合查询。以上图为例,要查询1467627246000-1467627249000时间内风力(wind)的情况,可以联合查询多个field的值,得到下图的数据。

如果写入时没有数据,在查询时,可以采用插值方案将值补充完整,插值的使用说明见数据库操作相关文档。

系统限制

2、快速使用TSDB

  1. 创建数据库:创建TSDB数据库。

  2. 连接数据库:配置TSDB从百度智能云的其它产品或第三方服务获取数据,目前仅支持通过restful API写入数据。

  3. 生成图表:查看数据库信息,可生成基于时间范围、度量的图表。

  4. (可选)备份数据库:通过导出功能可以将当前数据导出至BOS Bucket,用于数据分析或备份用途。

步骤一:创建数据库

1、登录百度云,点击右上角的“管理控制台”,快速进入控制台界面。

2、选择“产品服务>时序数据库TSDB”,进入“数据库列表”页面。

3、点击“创建数据库”,进入创建数据库页面,填写配置信息,包括:

  • 数据库名称:设置数据库名称,由小写字母和数字组成,6~40个字符。
  • 写入额度:目前支持1~100000百万点/月。
  • 购买时长:TSDB为预付费产品,最少每次购买1个月。

4、完成配置后点击“确认订单”,完成TSDB数据库的创建

步骤二:连接数据库

注意: 不允许写入或导入未来5天后的数据,即新写入数据的时间戳必须小于“当前时间戳+432000秒”。

TSDB支持通过restful API,Java SDKNode SDK写入数据。

步骤三:生成图表

注意: 若单次查询时间超过50s,系统将自动终止本次查询。如果出现查询超时,可以采取以下措施优化查询:

  1. 减少单次请求中query个数
  2. 缩短单个query中起止时间的间隔
  3. 减少单个query涉及到的时间序列数目
  4. 对数据进行预处理

通过查询面板,用户可以对当前数据进行筛选并生成图表,具体操作步骤如下:

  1. 选择“产品服务>时序数据库TSDB”,进入“数据库列表”页面。

  2. 在数据库列表中找到对应的数据库,点击“查询面板”,进入操作界面。

  3. 在查询面板点击“添加查询项”,可以配置要查询的参数

    生成图表时,系统对数据处理逻辑如下:

    • 时间范围设置:支持“绝对时间”和“相对时间”两种设置方式、

    • 名称:从下拉列表中选择当前数据库中已有的Metrics名称,用户可点击“添加”,新增多个Metrics进行数据对比。

    • 标签过滤:指定标签对数据进行过滤。

    • 值过滤:根据指定的数值范围对数据点进行过滤,仅显示出指定的数据点。

    • 分组:可以通过“标签”维度进行分组,将携带指定标签的数据分为一组,可输入多个标签。
      可将数据分成多组,系统将为每组数据生成图表。

    • 聚合函数:通过内置函数对数据进行处理,可添加多个函数,系统将按顺序对每个分组应用函数。当前支持的聚合函数包括:

      • Avg:以每个采样时间范围内的value的平均值作为结果
      • Count:以每个采样时间范围内的点的数目作为结果
      • Dev:以每个采样时间范围内的value的标准差作为结果
      • Diff:以每两个相邻的value的差值作为结果
      • Div:以每个value除以一个除数作为结果
      • First:以每个采样时间范围内的第一个value作为结果
      • Last:以每个采样时间范围内的最后一个value作为结果
      • LeastSquares:对每个采样时间范围内的value进行最小二乘法的拟合
      • Max:以每个采样时间范围内的value的最大值作为结果
      • Min:以每个采样时间范围内的value的最小值作为结果
      • Percentile:每个采样时间范围内的value的第p百分位数作为结果。
      • Sum:以每个采样时间范围内的value的总和作为结果
      • Scale:以每个value乘以一个倍数作为结果
      • Rate:以每两个相邻的value在单位时间(见参数timeUnit)的变化率作为结果
    • 返回限制:系统将返回指定数量的数据点生成图表,最大值10000。

  4. 点击“确定”,系统将根据配置筛选数据并生成图表。可以通过图表右上角在“图”和“表”之间进行切换,具体示例请参看生成示范数据库图表

数据预处理

新建预处理规则

当TSDB中存储的数据量较大时,将数据按照用户指定的规则筛选出来需要较长的等待时间,有可能请求导致超时,造成查询失败。

针对这种情况,用户可以配置数据预处理,提前将相关数据过滤、聚合好,实现快速返回查询结果。

注意:

  • 免费数据库无法创建预处理规则。
  • 每个付费数据库只能创建2个预处理规则。
  • 预处理规则标签个数上限5个。
  • 预处理规则多选metric上限10个。
  • 预处理规则聚合函数上限3个。
  • 预处理规则支持修改重置,重置的间隔时间必须要大于1个小时。
  1. 选择“产品服务>时序数据库TSDB>数据库名称”,进入数据库详情页面。

  2. 点击数据库名称,进入数据库详情页。点击“预处理”页签,进入配置页面。

  3. 点击“新建规则”,在弹出窗口中配置预处理规则。

    具体包括以下配置项:

    • 规则名称:设置规则名称,用来标识具体规则。

    • 度量:从下拉列表中选择当前数据库中已有的Metrics名称,或者选择全部Metrics。

    • 开始时间:预处理操作计算原始数据的起始基准时间。在上图配置中,预处理规则原始数据的起始基准时间为 2000-01-01 00:10:00,会以此作为开始时间,先对 2000-01-01 00:10:00 至今的所有数据点进行聚合(对齐到5小时)。如下图所示:

      在规则初始化过程中,此时预处理规则尚未生效,查询请求不会命中预处理数据点。规则初始化结束后,预处理规则会进入生效状态,此时匹配的查询请求会命中预处理数据点。规则修改之后,会进入重置状态,重置结束之后,查询请求才会命中。

    • 标签索引:指定标签对数据进行过滤,预处理规则标签个数上限5个。

    • 聚合函数:通过内置函数对数据进行处理,预处理规则聚合函数上限3个。

查看预处理详情

新建预处理规则后,可以在规则详情中查看数据预处理情况。

  1. 选择“产品服务>时序数据库TSDB>数据库名称”,进入数据库详情页面。

  2. 点击数据库名称,进入数据库详情页。点击“预处理”页签,进入配置页面。

  3. 找到已经创建的预处理规则,点击“查看详情”,可以获得以下配置信息,如下图所示:

    • 累计命中次数:通过查询面板或者API/SDK查看数据点时,命中该规则的次数。
    • 累计原始点数:根据预处理规则中的度量值和标签,从数据库中筛选出的原始数据点数。
    • 累计规则点数:对“累计原始点数”进行聚合后获得的数据点数。
查看预处理结果

用户可以通过查询面板、SDK或API查看预处理后的数据。为了确保查询时能够命中预处理后的数据,需要满足以下条件:

  1. 查询规则的度量值必须是预处理规则的子集(预处理规则中可指定全部度量值或某一个独立的度量值)。

  2. 查询规则中标签过滤加上分组标签指定的tags必须和预处理规则中的标签索引相等。

  3. 查询规则中的聚合函数设置必须与预处理规则一致。

通过查询面板生成图标的具体操作请参看生成图表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值