Apache HertzBeat 基于 Docker Compose 的 PostgreSQL 和 VictoriaMetrics 部署指南
2025-07-07 06:33:42作者:傅爽业Veleda
概述
Apache HertzBeat 是一个开源的实时监控系统,本文将详细介绍如何使用 Docker Compose 快速部署 HertzBeat 及其依赖的 PostgreSQL 数据库和 VictoriaMetrics 时序数据库。这种部署方式特别适合开发测试环境和小型生产环境,能够快速搭建完整的监控系统。
部署架构
该 Docker Compose 文件定义了一个由三个服务组成的监控系统架构:
- PostgreSQL:作为 HertzBeat 的关系型数据库,存储配置信息和告警规则等
- VictoriaMetrics:高性能时序数据库,用于存储监控指标数据
- HertzBeat:监控系统核心服务,提供数据采集、告警等功能
这三个服务通过 Docker 的 bridge 网络 hertzbeat
相互通信。
服务配置详解
PostgreSQL 服务配置
postgres:
image: postgres:15
container_name: compose-postgresql
hostname: postgresql
restart: always
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
ports:
- '5432:5432'
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: 123456
TZ: Asia/Shanghai
volumes:
- ./dbdata/pgdata/data:/var/lib/postgresql/data
- ./conf/sql:/docker-entrypoint-initdb.d/
- ./ext-lib:/opt/hertzbeat/ext-lib
关键配置说明:
- 使用 PostgreSQL 15 官方镜像
- 配置了健康检查,确保服务可用性
- 默认用户 root,密码 123456(生产环境应修改)
- 数据持久化到本地目录
./dbdata/pgdata/data
- 初始化脚本目录
./conf/sql
,可用于初始化 HertzBeat 所需的数据库表结构
VictoriaMetrics 服务配置
victoria-metrics:
image: victoriametrics/victoria-metrics:v1.95.1
container_name: compose-victoria-metrics
hostname: victoria-metrics
restart: always
healthcheck:
test: ["CMD", "wget", "-q", "-O", "-", "http://victoria-metrics:8428/-/healthy"]
interval: 10s
retries: 5
timeout: 5s
start_period: 30s
environment:
TZ: Asia/Shanghai
ports:
- "8428"
volumes:
- ./dbdata/tsdbdata:/victoria-metrics-data
关键配置说明:
- 使用 VictoriaMetrics v1.95.1 版本
- 同样配置了健康检查机制
- 时序数据持久化到本地目录
./dbdata/tsdbdata
- 暴露 8428 端口供 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:
postgres:
condition: service_healthy
victoria-metrics:
condition: service_healthy
volumes:
- ./conf/application.yml:/opt/hertzbeat/config/application.yml
- ./conf/sureness.yml:/opt/hertzbeat/config/sureness.yml
- ./logs:/opt/hertzbeat/logs
ports:
- "1157:1157"
- "1158:1158"
关键配置说明:
- 使用官方 HertzBeat 镜像
- 依赖 PostgreSQL 和 VictoriaMetrics 服务,并确保它们健康后才启动
- 挂载自定义配置文件
application.yml
和sureness.yml
- 日志持久化到本地目录
./logs
- 暴露 1157 和 1158 端口,分别对应 Web 界面和 API 服务
部署步骤
-
创建项目目录并进入:
mkdir hertzbeat-deploy && cd hertzbeat-deploy
-
创建必要的子目录:
mkdir -p dbdata/pgdata/data dbdata/tsdbdata conf/sql logs
-
将提供的
docker-compose.yaml
文件保存到项目根目录 -
准备 HertzBeat 配置文件:
- 创建
conf/application.yml
和conf/sureness.yml
- 创建
conf/sql
目录下的初始化 SQL 脚本
- 创建
-
启动服务:
docker-compose up -d
-
验证服务状态:
docker-compose ps
配置文件建议
对于 application.yml
,至少需要配置以下关键项:
spring:
datasource:
url: jdbc:postgresql://postgresql:5432/postgres
username: root
password: 123456
jpa:
show-sql: true
warehouse:
store:
enable: true
# VictoriaMetrics 配置
vm:
endpoint: http://victoria-metrics:8428
enabled: true
常见问题处理
-
端口冲突:如果 5432、8428、1157 或 1158 端口已被占用,修改
docker-compose.yaml
中的端口映射 -
初始化失败:检查
conf/sql
目录下的 SQL 脚本是否正确 -
健康检查失败:适当延长健康检查的
start_period
时间 -
时区问题:确保所有服务的 TZ 环境变量一致
生产环境建议
- 修改默认的数据库密码
- 考虑使用更安全的网络配置
- 配置定期备份策略
- 监控容器资源使用情况
- 考虑使用 Docker Swarm 或 Kubernetes 进行集群部署
通过以上配置,您可以快速搭建一个功能完整的 HertzBeat 监控系统,为后续的监控配置和使用打下坚实基础。