使用 Telegraf 发送数据到阿里云 Lindorm 时序引擎
Lindorm 是阿里云提供的“云原生多模数据库”,其中包括了时序引擎,可用于存储和分析工业设备和IoT设备的数据。尽管 Telegraf 没有针对 Lindorm 的插件,但 Lindorm 提供了支持行协议的 HTTP 接口。那么可使用 Telegraf 的 HTTP 插件以“行协议” 将数据写入 Lindorm 时序引擎。
配置步骤 🔗
在 Lindorm 时序引擎中创建数据库 🔗
按照数据建模文档设计和操作即可。可按需设置冷热数据的转换。
自动建表 🔗
当使用行协议写入数据时,Schema的约束默认是“弱约束”。其文档解释如下:
- 写入数据的表不存在时,时序引擎不会报错,而是会自动创建对应的表。
- 写入数据的新增一个标签(Tag)或量测值(Field)时,时序引擎不会报错,而是会在对应的时序数据表中自动添加一个标签(Tag)字段或量测值(Field)字段。
- 写入数据的相同字段的数据类型发生变化时,时序引擎会检测到字段的数据类型不匹配而写入失败。此时,请您执行ALTER TABLE语句手动修改字段的数据类型。
因此,一般情况下无需手动建表。
Telegraf 配置 🔗
核心配置如下,注意 databaseName
是数据库的名字(此处的接口地址是 Lindorm 的 VPC 地址):
[[outputs.http]]
url = "http://ld-xxxx-proxy-tsdb.lindorm.rds.aliyuncs.com:8242/api/v2/write?precision=ns&db=databaseName"
username = "xxxx"
password = "xxxx"
data_format = "influx"
此处没有配置数据表的名字。这是因为每条数据的 measurement
即度量的名字,会被作为表的名字。
注意在上面的例子中,使用的是 Lindorm 的 VPC 地址。这个地址是 HTTP 协议,而不是 HTTPS 协议。
【疯狂吐槽】在我有限的人生阅历和粗浅的认知中,以为 HTTPS 已经是云服务器的标配了。但阿里云却在使用 HTTP 的接口地址,安全实践很脆弱,作为中国的几朵知名云之一,这怕是给行业带了个坏头。
结尾 🔗
使用 Telegraf 的 HTTP 输出插件,只需要简单的几行的配置,就可以通过行协议(即 influx
格式)将数据写入 Lindorm。但是有一点儿让人不安的是,Lindorm 的地址使用的是 HTTP 而不是 HTTPS。尽管这是 VPC 中的地址,但是不加密着实让人不解。
加载中...