Apache HertzBeat容器化部署最佳实践:Docker Compose篇

Apache HertzBeat容器化部署最佳实践:Docker Compose篇

为什么选择Docker Compose部署方案

你是否还在为监控系统的复杂部署流程而烦恼?服务器配置、数据库安装、依赖管理,每一步都可能遇到意想不到的问题。Apache HertzBeat(incubating)作为一款优秀的实时监控系统,提供了无代理、高性能集群、Prometheus兼容等强大功能。本文将带你通过Docker Compose实现HertzBeat的一键式部署,无需复杂配置,几分钟即可完成监控系统的搭建。

读完本文后,你将能够:

  • 理解HertzBeat容器化部署的架构设计
  • 使用Docker Compose快速部署完整的HertzBeat监控系统
  • 掌握常见问题的排查与配置优化方法
  • 了解不同存储组合方案的选择策略

部署架构概览

HertzBeat的Docker Compose部署方案采用多容器架构,主要包含三个核心组件:

mermaid

这种架构的优势在于:

  • 各组件相互隔离,独立扩展与维护
  • 数据持久化存储,确保服务重启后数据不丢失
  • 统一的网络管理,容器间通信安全可靠

准备工作

环境要求

在开始部署前,请确保你的环境满足以下要求:

  • Docker Engine 20.10.0+
  • Docker Compose 2.0+
  • 至少2GB可用内存
  • 10GB以上磁盘空间

安装Docker与Docker Compose

  1. 安装Docker环境,请参考Docker官方文档
  2. 安装Docker Compose,请参考Compose安装指南

验证安装是否成功:

docker -v
docker compose version

部署步骤

获取部署脚本

首先,克隆HertzBeat代码仓库:

git clone https://gitcode.com/GitHub_Trending/her/hertzbeat
cd hertzbeat/script/docker-compose/hertzbeat-mysql-iotdb

部署脚本目录结构如下:

hertzbeat-mysql-iotdb/
├── README.md
├── README_CN.md
├── conf/                  # 配置文件目录
├── dbdata/                # 数据持久化目录
│   ├── mysqldata/
│   └── iotdbdata/
├── docker-compose.yaml    # Docker Compose配置文件
└── ext-lib/               # 外部依赖库目录

配置JDBC驱动

HertzBeat需要MySQL JDBC驱动才能与数据库通信,需要手动添加:

  1. 下载MySQL JDBC驱动(如mysql-connector-java-8.0.25.jar)
  2. 复制驱动到ext-lib目录:
mkdir -p ext-lib
cp /path/to/mysql-connector-java-8.0.25.jar ext-lib/

配置文件说明

核心配置文件为docker-compose.yaml,主要包含三个服务定义:

MySQL服务配置
mysql:
  image: mysql:8
  container_name: compose-mysql
  hostname: mysql
  restart: always
  healthcheck:
    test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 --silent']
    interval: 3s
    retries: 5
    start_period: 3m
  ports:
    - "3306"
  environment:
    TZ: Asia/Shanghai
    MYSQL_ROOT_PASSWORD: 123456
  volumes:
    - ./dbdata/mysqldata:/var/lib/mysql/
    - ./conf/sql:/docker-entrypoint-initdb.d/
  networks:
    - hertzbeat
IoTDB服务配置
iotdb:
  image: apache/iotdb:1.2.2-standalone
  container_name: compose-iotdb
  hostname: iotdb
  restart: always
  healthcheck:
    test: ["CMD", "ls", "/iotdb/data"]
    interval: 10s
    retries: 5
    timeout: 5s
    start_period: 30s
  environment:
    TZ: Asia/Shanghai
  ports:
    - "8181"
    - "6667"
  volumes:
    - ./dbdata/iotdbdata:/iotdb/data
  networks:
    - hertzbeat
HertzBeat服务配置
hertzbeat:
  image: apache/hertzbeat
  container_name: compose-hertzbeat
  hostname: hertzbeat
  restart: always
  environment:
    TZ: Asia/Shanghai
    LANG: zh_CN.UTF-8
  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"
    - "1158:1158"
  networks:
    - hertzbeat

启动服务

在部署目录下执行以下命令启动所有服务:

docker compose up -d

首次启动需要拉取镜像并初始化数据库,可能需要几分钟时间。可以使用以下命令查看服务状态:

docker compose ps

当所有服务状态都显示为"Up"时,说明部署成功。

访问与验证

访问Web界面

打开浏览器,访问以下地址:

  • Web UI: http://localhost:1157
  • 默认用户名: admin
  • 默认密码: hertzbeat

验证服务状态

  1. 登录HertzBeat Web界面
  2. 导航到"系统管理" -> "服务状态"
  3. 确认所有核心服务都显示为"正常"

HertzBeat服务状态监控界面

配置优化

资源限制配置

为避免容器占用过多系统资源,可以在docker-compose.yaml中添加资源限制:

services:
  hertzbeat:
    # ... 其他配置 ...
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
        reservations:
          cpus: '1'
          memory: 1G
  # 为其他服务添加类似配置...

日志配置优化

HertzBeat的日志配置位于conf/application.yml,可以根据需要调整日志级别和滚动策略:

logging:
  level:
    root: INFO
    org.apache.hertzbeat: DEBUG
  file:
    name: logs/hertzbeat.log
    max-size: 100MB
    max-history: 15

其他存储方案

除了Mysql+IoTDB组合外,HertzBeat还提供了其他存储方案的Docker Compose配置:

  1. Mysql+TDengine方案

  2. Mysql+VictoriaMetrics方案

  3. PostgreSQL+VictoriaMetrics方案

选择建议:

  • 中小规模监控:Mysql+IoTDB(默认方案)
  • 大规模时序数据:Mysql+VictoriaMetrics
  • 已有TDengine环境:Mysql+TDengine

常见问题排查

服务启动失败

查看服务日志以定位问题:

# 查看HertzBeat日志
docker compose logs hertzbeat

# 查看Mysql日志
docker compose logs mysql

# 查看IoTDB日志
docker compose logs iotdb

端口冲突

如果遇到端口冲突问题,可以修改docker-compose.yaml中的端口映射:

services:
  hertzbeat:
    ports:
      - "1157:1157"  # 左侧为宿主机端口,可修改
      - "1158:1158"

数据备份与迁移

定期备份数据目录:

# 创建备份
tar -czvf hertzbeat_data_backup.tar.gz ./dbdata

# 恢复备份(需先停止服务)
docker compose down
rm -rf ./dbdata
tar -xzvf hertzbeat_data_backup.tar.gz
docker compose up -d

总结与展望

通过Docker Compose部署HertzBeat可以极大简化部署流程,提高系统可维护性。本文介绍的部署方案适用于中小规模监控场景,对于大规模部署,可以考虑结合Kubernetes使用Helm Charts进行编排管理。

后续版本中,HertzBeat将进一步优化容器化部署体验,包括:

  • 提供更多存储组合方案
  • 简化初始化配置流程
  • 增强监控告警能力

如果你在部署过程中遇到任何问题,欢迎查阅官方文档或参与社区讨论

附录:常用命令参考

# 启动服务
docker compose up -d

# 停止服务
docker compose down

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs -f

# 重启服务
docker compose restart

# 升级镜像
docker compose pull && docker compose up -d

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值