亿琪软件-开源博客 - InfluxDB
type: channel
link: https://www.yiqisoft.cn/blogs/tag/InfluxDB/
items: 开源｜EdgeX 边缘计算数据持久化之 InfluxDB

开源｜EdgeX 边缘计算数据持久化之 InfluxDB
type: item
date: 2023-10-23T06:33:00+00:00
description: 目录 背景介绍 EdgeX 简介 InfluxDB 简介 开发过程 架构设计 EdgeX application service 前提条件 Application Service Docker 容器 InfluxDB 环境搭建 Telegraf 配置 Docker 容器 实验结果 MQTT broker 内容查看 InfluxDB Graph 开源代码 关于亿琪软件 欢迎关注 EdgeX Foundry 中文社区公众号，及时获取最新资料和分享。 日常情况下，在边缘计算端侧，一般不需要数据持久化到本地磁盘或数据库，但是，某些特殊应用下，需要做本地数据保存和分析时，这项功能就非常有必要。本文将介绍 EdgeX 边缘计算框架在本地保存 telemetry 数据到 InfluxDB 的具体方法和结果。 背景介绍 EdgeX 简介 EdgeX Foundry 边缘计算框架的分层和服务为边缘设备/节点和云/企业应用之间提供了一个双向转换引擎。EdgeX 作为边缘计算平台是非常不错的选择。 本文需要采用自定义开发的 EdgeX Application service 来完成数据持久化的工作。 InfluxDB 简介 InfluxDB 是一个由 InfluxData 公司开发的开源时序型数据库。它由Go写成，着力于高性能地查询与存储时序型数据。InfluxDB 被广泛应用于存储系统的监控数据，IoT行业的实时数据等场景。 EdgeX 数据写入（存入）InfluxDB 是非常适合且有必要的，本文使用 MQTT 和 Telegraf 作为 InfluxDB plugin 来实现具体功能。 开发过程 架构设计 EdgeX 应用程序服务(app-influxdb-export)通过 MQTT 将读数导出到 InfluxDB。此服务示例是使用 EdgeX v2.3.0 版本创建的，如需其他版本，请与我们联系或自行开发。 这个管道服务，有两部分组成： 将 EdgeX 事件/读取对象转换为 Influx line 协议； 将结果导出到 MQTT Broker，这是 Telegraf / Influx 用来监听并从中获取数据的 MQTT 主题； InfluxDB 实现数据持久化入库工作； EdgeX application service 前提条件 需要启动 EdgeX 框架； 启动 MQTT Broker 容器； Application Service 目录结构很简单，文件不多； ├── Dockerfile // docker 文件 ├── LICENSE ├── Makefile // make build ├── README.md ├── app-service-influx.png ├── go.mod // gomod 配置 ├── go.sum ├── main.go // 主程序 ├── pkg │ └── transforms │ └── conversions.go // 转换器 └── res └── configuration.toml // 配置文件 主程序，不复杂，遵循 SDK 原则即可； 这里省略源文件，请到github下载。 尝试编译，能成功生成二进制文件； make build Docker 容器 Dockerfile 描述文件； 这里省略源文件，请到github下载。 创建 docker image; docker build . -t edgexfoundry/app-influxdb:2.3.0 docker compose 片段，加入到你的 docker-compose.yml ; app-service-influxdb-export: image: edgexfoundry/app-influxdb:2.3.0 ports: - 127.0.0.1:59780:59780/tcp container_name: edgex-app-influxdb-export hostname: edgex-app-influxdb-export depends_on: - consul - data environment: CLIENTS_CORE_COMMAND_HOST: edgex-core-command CLIENTS_CORE_DATA_HOST: edgex-core-data CLIENTS_CORE_METADATA_HOST: edgex-core-metadata CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler…