Apache HertzBeat容器化部署最佳实践:Docker Compose篇
为什么选择Docker Compose部署方案
你是否还在为监控系统的复杂部署流程而烦恼?服务器配置、数据库安装、依赖管理,每一步都可能遇到意想不到的问题。Apache HertzBeat(incubating)作为一款优秀的实时监控系统,提供了无代理、高性能集群、Prometheus兼容等强大功能。本文将带你通过Docker Compose实现HertzBeat的一键式部署,无需复杂配置,几分钟即可完成监控系统的搭建。
读完本文后,你将能够:
- 理解HertzBeat容器化部署的架构设计
- 使用Docker Compose快速部署完整的HertzBeat监控系统
- 掌握常见问题的排查与配置优化方法
- 了解不同存储组合方案的选择策略
部署架构概览
HertzBeat的Docker Compose部署方案采用多容器架构,主要包含三个核心组件:
这种架构的优势在于:
- 各组件相互隔离,独立扩展与维护
- 数据持久化存储,确保服务重启后数据不丢失
- 统一的网络管理,容器间通信安全可靠
准备工作
环境要求
在开始部署前,请确保你的环境满足以下要求:
- Docker Engine 20.10.0+
- Docker Compose 2.0+
- 至少2GB可用内存
- 10GB以上磁盘空间
安装Docker与Docker Compose
- 安装Docker环境,请参考Docker官方文档
- 安装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驱动才能与数据库通信,需要手动添加:
- 下载MySQL JDBC驱动(如mysql-connector-java-8.0.25.jar)
- 复制驱动到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
验证服务状态
- 登录HertzBeat Web界面
- 导航到"系统管理" -> "服务状态"
- 确认所有核心服务都显示为"正常"
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配置:
-
Mysql+TDengine方案
-
Mysql+VictoriaMetrics方案
-
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),仅供参考



