Apache HertzBeat 基于 Docker Compose 的 MySQL 与 IoTDB 集成部署指南
2025-07-07 06:29:52作者:吴年前Myrtle
概述
Apache HertzBeat 是一个开源的实时监控系统,本文详细介绍如何使用 Docker Compose 快速部署 HertzBeat 系统,并集成 MySQL 数据库和 Apache IoTDB 时序数据库。
部署架构
该部署方案包含三个核心组件:
- MySQL 8:作为 HertzBeat 的关系型数据库存储
- Apache IoTDB 1.2.2:作为时序数据存储
- Apache HertzBeat:监控系统主体
准备工作
在开始部署前,请确保:
- 已安装 Docker 和 Docker Compose
- 服务器有足够资源(建议至少 4GB 内存)
- 了解基本的 Docker 操作
详细配置解析
网络配置
networks:
hertzbeat:
driver: bridge
创建了一个名为 hertzbeat
的桥接网络,确保三个服务可以在同一网络内通信。
MySQL 服务配置
mysql:
image: mysql:8
container_name: compose-mysql
healthcheck:
test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 --silent']
interval: 3s
retries: 5
start_period: 3m
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
volumes:
- ./dbdata/mysqldata:/var/lib/mysql/
- ./conf/sql:/docker-entrypoint-initdb.d/
关键配置说明:
- 使用官方 MySQL 8 镜像
- 设置了健康检查,确保服务可用性
- 数据持久化到本地
dbdata/mysqldata
目录 - 初始化 SQL 脚本可放置在
conf/sql
目录 - 时区设置为 Asia/Shanghai
IoTDB 服务配置
iotdb:
image: apache/iotdb:1.2.2-standalone
healthcheck:
test: ["CMD", "ls", "/iotdb/data"]
interval: 10s
retries: 5
environment:
TZ: Asia/Shanghai
volumes:
- ./dbdata/iotdbdata:/iotdb/data
关键配置说明:
- 使用 Apache IoTDB 1.2.2 单机版镜像
- 数据目录挂载到本地
dbdata/iotdbdata
- 同样设置了健康检查机制
- 暴露 8181(REST API) 和 6667(JDBC) 端口
HertzBeat 主服务配置
hertzbeat:
image: apache/hertzbeat
depends_on:
mysql:
condition: service_healthy
iotdb:
condition: service_healthy
volumes:
- ./conf/application.yml:/opt/hertzbeat/config/application.yml
- ./conf/sureness.yml:/opt/hertzbeat/config/sureness.yml
- ./ext-lib:/opt/hertzbeat/ext-lib
- ./logs:/opt/hertzbeat/logs
ports:
- "1157:1157" # web端口
- "1158:1158" # api端口
关键配置说明:
- 依赖 MySQL 和 IoTDB 服务,且要求它们健康状态
- 挂载了多个关键目录:
- 配置文件目录
- 扩展库目录
- 日志目录
- 暴露 1157(Web) 和 1158(API) 端口
部署步骤
-
创建项目目录结构:
hertzbeat-deploy/ ├── docker-compose.yaml ├── conf/ │ ├── application.yml │ ├── sureness.yml │ └── sql/ ├── dbdata/ │ ├── mysqldata/ │ └── iotdbdata/ ├── ext-lib/ └── logs/
-
将提供的 docker-compose.yaml 文件放入项目根目录
-
准备必要的配置文件:
application.yml
: HertzBeat 主配置文件sureness.yml
: 安全认证配置文件sql/
: 初始化 SQL 脚本
-
启动服务:
docker-compose up -d
-
验证服务:
- 检查容器状态:
docker-compose ps
- 访问 HertzBeat Web 界面:http://localhost:1157
- 检查容器状态:
常见问题解决
-
MySQL 启动失败:
- 检查
dbdata/mysqldata
目录权限 - 查看 MySQL 日志:
docker logs compose-mysql
- 检查
-
IoTDB 连接问题:
- 确保 6667 和 8181 端口未被占用
- 检查数据目录权限
-
HertzBeat 依赖服务未就绪:
- 使用
docker-compose logs
查看详细日志 - 检查依赖服务的健康状态
- 使用
维护建议
-
定期备份:
- MySQL 数据:
dbdata/mysqldata
- IoTDB 数据:
dbdata/iotdbdata
- HertzBeat 配置和日志
- MySQL 数据:
-
升级注意事项:
- 先备份数据
- 按顺序升级:数据库 → HertzBeat
- 检查版本兼容性
-
性能调优:
- 根据监控规模调整 MySQL 和 IoTDB 资源配置
- 监控系统资源使用情况
总结
本文详细介绍了使用 Docker Compose 部署 Apache HertzBeat 并集成 MySQL 和 IoTDB 的完整方案。这种部署方式具有以下优势:
- 一键式部署,简化安装过程
- 服务隔离,互不干扰
- 方便扩展和维护
- 数据持久化,避免容器重启导致数据丢失
通过这种部署方式,用户可以快速搭建一个功能完善的监控系统环境,为后续的监控配置和使用打下坚实基础。