TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark

分类:14.生态 | 篇章:04 第三方工具
在这里插入图片描述
免费详情

TDengine 通过 InfluxDB 兼容协议、JDBC、连接器等方式与主流数据生态对接。本文汇总 Telegraf、Kafka Connect、Flink、Spark、Logstash 等工具的集成方式。

集成方式速查

工具集成方式用途
TelegrafInfluxDB output系统/IoT 采集
collectdcollectd protocol服务器监控
StatsDStatsD protocol应用指标
Prometheusremote_write长期存储
Kafka ConnectJDBC SinkKafka → TD
Apache FlinkJDBC Sink流处理结果存储
Apache SparkJDBC大数据分析
LogstashJDBC output日志数据
DBeaverJDBCSQL IDE
HiveJDBC数据仓库

详细解析

1. Telegraf 集成

# /etc/telegraf/telegraf.conf

# 输入插件(按需)
[[inputs.cpu]]
  percpu = true
  totalcpu = true

[[inputs.mem]]

[[inputs.system]]


# 输出到 TDengine(通过 InfluxDB Line 协议)
[[outputs.http]]
  url = "http://taosadapter:6041/influxdb/v1/write?db=telegraf"
  method = "POST"
  username = "root"
  password = "taosdata"
  data_format = "influx"


# 启动
systemctl start telegraf

2. collectd 集成

# /etc/collectd/collectd.conf

LoadPlugin network

<Plugin "network">
  Server "taosadapter" "6045"
</Plugin>

LoadPlugin "cpu"
LoadPlugin "memory"
LoadPlugin "disk"
LoadPlugin "interface"


# taosAdapter 配置开启 collectd
# /etc/taos/taosadapter.toml
[collectd]
enable = true
port = 6045
db = "collectd"
user = "root"
password = "taosdata"

3. StatsD 集成

# StatsD 协议(UDP)
echo "myapp.requests:1|c|@1.0" | nc -u -w0 taosadapter 6044


# taosAdapter 配置
# /etc/taos/taosadapter.toml
[statsd]
enable = true
port = 6044
db = "statsd"

4. Prometheus remote_write

# prometheus.yml
remote_write:
  - url: "http://taosadapter:6041/prometheus/v1/remote_write/prometheus_data"
    basic_auth:
      username: root
      password: taosdata


# 长期存储所有 Prometheus 指标
# 利用 TDengine 高压缩比


# 反向:从 TDengine 读 Prometheus 指标
remote_read:
  - url: "http://taosadapter:6041/prometheus/v1/remote_read/prometheus_data"

5. Kafka Connect JDBC Sink

// kafka-connect-jdbc-sink.json
{
  "name": "tdengine-sink",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "tasks.max": "4",
    "topics": "sensor_data",
    "connection.url": "jdbc:TAOS-RS://taosadapter:6041/iot",
    "connection.user": "root",
    "connection.password": "taosdata",
    "insert.mode": "insert",
    "auto.create": "true",
    "auto.evolve": "true",
    "pk.mode": "record_value",
    "pk.fields": "ts"
  }
}


# 部署到 Kafka Connect
curl -X POST http://kafka-connect:8083/connectors \
  -H "Content-Type: application/json" \
  -d @kafka-connect-jdbc-sink.json

6. Apache Flink 集成

// 用 JDBC Sink 写 TDengine
import org.apache.flink.connector.jdbc.*;

DataStream<MeterReading> stream = ...; // 你的数据流

stream.addSink(JdbcSink.sink(
  "INSERT INTO meters VALUES (?, ?, ?)",
  (ps, reading) -> {
    ps.setTimestamp(1, reading.ts);
    ps.setFloat(2, reading.current);
    ps.setInt(3, reading.voltage);
  },
  JdbcExecutionOptions.builder()
    .withBatchSize(1000)
    .withBatchIntervalMs(200)
    .build(),
  new JdbcConnectionOptions.JdbcConnectionOptionsBuilder()
    .withUrl("jdbc:TAOS-WS://taosadapter:6041/iot")
    .withDriverName("com.taosdata.jdbc.ws.WebSocketDriver")
    .withUsername("root")
    .withPassword("taosdata")
    .build()
));

7. Apache Spark 集成

// 读 TDengine
val df = spark.read
  .format("jdbc")
  .option("url", "jdbc:TAOS-WS://taosadapter:6041/iot")
  .option("driver", "com.taosdata.jdbc.ws.WebSocketDriver")
  .option("user", "root")
  .option("password", "taosdata")
  .option("dbtable", "(SELECT * FROM meters WHERE ts > NOW - 1d) tmp")
  .load()

df.show()


// 写 TDengine
processedDf.write
  .format("jdbc")
  .mode("append")
  .option("url", "jdbc:TAOS-WS://taosadapter:6041/iot")
  .option("driver", "com.taosdata.jdbc.ws.WebSocketDriver")
  .option("dbtable", "processed_meters")
  .save()

8. Logstash 集成

# logstash.conf
input {
  file {
    path => "/var/log/sensors/*.log"
    codec => json
  }
}

filter {
  date {
    match => ["ts", "ISO8601"]
  }
}

output {
  http {
    url => "http://taosadapter:6041/influxdb/v1/write?db=logstash"
    http_method => "post"
    user => "root"
    password => "taosdata"
    format => "message"
    message => "sensors,device=%{device} value=%{value} %{ts}"
  }
}

DBeaver SQL IDE

连接配置:

Driver:
  下载 taos-jdbcdriver-3.x.x.jar
  
连接:
  URL: jdbc:TAOS-WS://localhost:6041/test
  User: root
  Password: taosdata


功能:
  - 表浏览
  - SQL 编辑
  - 数据导出
  - 可视化查询

Hive 集成

-- 用 Hive 查 TDengine(通过 JDBC StorageHandler)
CREATE EXTERNAL TABLE hive_meters (
  ts TIMESTAMP,
  current FLOAT,
  voltage INT,
  location STRING
)
STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
TBLPROPERTIES (
  "hive.sql.database.type" = "MYSQL",  -- 借用 MySQL Driver
  "hive.sql.jdbc.driver" = "com.taosdata.jdbc.TSDBDriver",
  "hive.sql.jdbc.url" = "jdbc:TAOS://taosd:6030/iot",
  "hive.sql.dbcp.username" = "root",
  "hive.sql.dbcp.password" = "taosdata",
  "hive.sql.table" = "meters"
);

SELECT * FROM hive_meters LIMIT 10;

代码示例

Telegraf 监控 + Grafana 完整链路

# docker-compose.yml
services:
  taosd:
    image: tdengine/tdengine:3.x.x
  
  adapter:
    image: tdengine/tdengine:3.x.x
    command: taosadapter
    ports: ["6041:6041", "6045:6045"]
  
  telegraf:
    image: telegraf:latest
    volumes:
      - ./telegraf.conf:/etc/telegraf/telegraf.conf
    depends_on:
      - adapter
  
  grafana:
    image: grafana/grafana:latest
    ports: ["3000:3000"]
    environment:
      - GF_INSTALL_PLUGINS=tdengine-datasource

一站式系统监控部署

#!/bin/bash
# install_monitoring.sh

# 1. Telegraf 安装
apt install -y telegraf

# 2. 配置 Telegraf → TDengine
cat > /etc/telegraf/telegraf.conf <<EOF
[[inputs.cpu]]
[[inputs.mem]]
[[inputs.disk]]
[[inputs.net]]

[[outputs.http]]
  url = "http://taosadapter:6041/influxdb/v1/write?db=monitoring"
  username = "root"
  password = "taosdata"
  data_format = "influx"
EOF

# 3. 启动
systemctl start telegraf

# 4. 验证数据
sleep 30
taos -s "USE monitoring; SHOW TABLES;"

性能考量

集成性能对比

集成单实例吞吐
Telegraf几万指标/秒
collectd几万指标/秒
Prometheus remote_write几十万样本/秒
Kafka Connect几十万行/秒
Flink JDBC Sink几十万行/秒
Spark JDBC视分区

选型建议

场景推荐
系统监控Telegraf
应用指标StatsD / Prometheus
Kafka 消息Kafka Connect / taosX
流处理Flink
批分析Spark
日志Logstash + Schemaless

FAQ

Q1: 用 InfluxDB 兼容协议有何限制?

  • 通用写入功能完整
  • 不支持 InfluxQL(用 TDengine SQL)
  • 部分 Flux 函数无对应

Q2: Kafka Connect 推荐 taosX 还是 JDBC Sink?

  • 简单场景:JDBC Sink 即可
  • 复杂转换/高吞吐:taosX

Q3: Flink CDC 接 TDengine?

通过 JDBC Sink 写 TDengine。或用 Flink CDC 源 + 自定义 Sink。

Q4: Spark Streaming 写 TDengine?

可用 foreachBatch 调用 JDBC:

stream.foreachBatch { (df, _) =>
  df.write.format("jdbc")...
}

Q5: 国产生态怎么对接?

  • DolphinScheduler:JDBC
  • Apache SeaTunnel:连接器支持
  • DataX:插件
  • 海豚调度等:JDBC 标准接口

参考

系统构架篇

数据模型

存储引擎

查询引擎

数据写入

数据订阅

预聚合

索引

SQL 语句

客户端与连接器

运维

安全

生态

关于 TDengine

TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

内容概要:本文研究了在通信资源受限与恶意攻击干扰下的孤岛微电网分布式二次控制策略,提出了一种兼具通信效率与攻击弹性的动态事件触发控制方案,旨在实现电压频率的精确恢复与有功无功功率的均衡共享。通过Simulink仿真与Matlab代码实现,系统验证了该策略在显著降低通信频次的同时,能够有效抵御拒绝服务(DoS)等网络攻击,保障微电网在复杂环境下的稳定运行。研究深入探讨了动态事件触发机制的设计、分布式控制算法的弹性优化,并确保系统具备排除芝诺行为的能力,从而全面提升微电网在极端条件下的鲁棒性、可靠性与运行效率。; 适合人群:具备电力系统、自动化或相关领域基础知识,从事微电网、分布式控制、能源系统安全方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于孤岛微电网在遭受通信限制和网络攻击时的二次电压与频率调节;②为高比例新能源接入场景下的微电网提供具备攻击容忍能力的弹性控制解决方案;③支持科研仿真验证与教学演示,推动分布式能源系统安全控制技术的发展。; 阅读建议:建议结合提供的Simulink模型与Matlab代码进行仿真实践,深入理解控制策略的实现细节,并可通过修改攻击模型、通信参数或网络拓扑进行拓展性研究,以全面掌握其弹性机制与优化潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TDengine (老段)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值