首页
/ Apache HertzBeat 基于 Docker Compose 的 MySQL + TDengine 部署指南

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+

架构解析

该部署方案采用三容器架构:

  1. MySQL 8:存储 HertzBeat 的元数据和配置信息
  2. TDengine 3.2.2:作为时序数据库存储监控指标数据
  3. 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 目录

部署步骤

  1. 创建项目目录结构:

    hertzbeat-deploy/
    ├── docker-compose.yaml
    ├── conf/
    │   ├── application.yml
    │   ├── sureness.yml
    │   └── sql/
    ├── dbdata/
    │   ├── mysqldata/
    │   └── taosdata/
    ├── ext-lib/
    └── logs/
    
  2. 将提供的 docker-compose.yaml 内容保存到对应文件

  3. 准备必要的配置文件:

    • application.yml: HertzBeat 主配置文件
    • sureness.yml: 安全认证配置
    • sql/: 数据库初始化脚本
  4. 启动服务:

    docker-compose up -d
    
  5. 验证服务:

    • 访问 http://localhost:1157 进入 Web 界面
    • 检查日志:docker-compose logs -f hertzbeat

常见问题解决

  1. MySQL 启动失败

    • 检查 dbdata/mysqldata 目录权限
    • 查看 MySQL 日志:docker-compose logs mysql
  2. TDengine 连接问题

    • 确保健康检查通过
    • 验证端口 6041 是否正常监听
  3. HertzBeat 依赖服务等待超时

    • 增加 depends_on 的等待时间
    • 检查各服务健康状态

最佳实践建议

  1. 数据备份

    • 定期备份 dbdata 目录下的数据库文件
    • 对重要配置进行版本控制
  2. 性能调优

    • 根据监控规模调整 MySQL 和 TDengine 的内存配置
    • 监控系统资源使用情况
  3. 安全加固

    • 修改默认密码
    • 限制外部访问端口
    • 定期更新镜像版本

通过本方案,您可以快速搭建一个生产可用的 HertzBeat 监控系统,具备完整的数据库持久化和服务高可用特性。