Apache HertzBeat 基于 Docker Compose 的 MySQL + TDengine 部署指南
2025-07-07 06:30:52作者:裴麒琰
概述
Apache HertzBeat 是一款开源的实时监控系统,本文详细介绍如何使用 Docker Compose 快速部署 HertzBeat 及其依赖的 MySQL 和 TDengine 数据库服务。
环境准备
在开始部署前,请确保您的系统已安装:
- Docker 19.03+
- Docker Compose 1.25+
架构解析
该部署方案采用三容器架构:
- MySQL 8:存储 HertzBeat 的元数据和配置信息
- TDengine 3.2.2:作为时序数据库存储监控指标数据
- HertzBeat:监控系统主服务
详细配置说明
网络配置
networks:
hertzbeat:
driver: bridge
创建名为 hertzbeat
的桥接网络,确保三个服务间可以相互通信。
MySQL 服务配置
mysql:
image: mysql:8
healthcheck:
test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 --silent']
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- ./dbdata/mysqldata:/var/lib/mysql/
- ./conf/sql:/docker-entrypoint-initdb.d/
关键特性:
- 使用官方 MySQL 8 镜像
- 设置健康检查确保服务可用性
- 数据持久化到本地
dbdata/mysqldata
目录 - 自动执行
conf/sql
目录下的初始化脚本
TDengine 服务配置
tdengine:
image: tdengine/tdengine:3.2.2.0
healthcheck:
test: ['CMD-SHELL', 'curl -u root:taosdata -d "show databases" tdengine:6041/rest/sql']
volumes:
- ./dbdata/taosdata:/var/lib/taos/
关键特性:
- 使用 TDengine 3.2.2 官方镜像
- 通过 REST API 进行健康检查
- 数据持久化到本地
dbdata/taosdata
目录
HertzBeat 主服务配置
hertzbeat:
image: apache/hertzbeat
depends_on:
mysql:
condition: service_healthy
tdengine:
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 和 TDengine 服务健康状态
- 挂载配置文件实现自定义配置
- 暴露 1157(Web) 和 1158(API) 端口
- 日志持久化到本地
logs
目录
部署步骤
-
创建项目目录结构:
hertzbeat-deploy/ ├── docker-compose.yaml ├── conf/ │ ├── application.yml │ ├── sureness.yml │ └── sql/ ├── dbdata/ │ ├── mysqldata/ │ └── taosdata/ ├── ext-lib/ └── logs/
-
将提供的 docker-compose.yaml 内容保存到对应文件
-
准备必要的配置文件:
application.yml
: HertzBeat 主配置文件sureness.yml
: 安全认证配置sql/
: 数据库初始化脚本
-
启动服务:
docker-compose up -d
-
验证服务:
- 访问
http://localhost:1157
进入 Web 界面 - 检查日志:
docker-compose logs -f hertzbeat
- 访问
常见问题解决
-
MySQL 启动失败:
- 检查
dbdata/mysqldata
目录权限 - 查看 MySQL 日志:
docker-compose logs mysql
- 检查
-
TDengine 连接问题:
- 确保健康检查通过
- 验证端口 6041 是否正常监听
-
HertzBeat 依赖服务等待超时:
- 增加
depends_on
的等待时间 - 检查各服务健康状态
- 增加
最佳实践建议
-
数据备份:
- 定期备份
dbdata
目录下的数据库文件 - 对重要配置进行版本控制
- 定期备份
-
性能调优:
- 根据监控规模调整 MySQL 和 TDengine 的内存配置
- 监控系统资源使用情况
-
安全加固:
- 修改默认密码
- 限制外部访问端口
- 定期更新镜像版本
通过本方案,您可以快速搭建一个生产可用的 HertzBeat 监控系统,具备完整的数据库持久化和服务高可用特性。