首页
/ Apache HertzBeat 基于 Docker Compose 的 PostgreSQL 和 VictoriaMetrics 部署指南

Apache HertzBeat 基于 Docker Compose 的 PostgreSQL 和 VictoriaMetrics 部署指南

2025-07-07 06:33:42作者:傅爽业Veleda

概述

Apache HertzBeat 是一个开源的实时监控系统,本文将详细介绍如何使用 Docker Compose 快速部署 HertzBeat 及其依赖的 PostgreSQL 数据库和 VictoriaMetrics 时序数据库。这种部署方式特别适合开发测试环境和小型生产环境,能够快速搭建完整的监控系统。

部署架构

该 Docker Compose 文件定义了一个由三个服务组成的监控系统架构:

  1. PostgreSQL:作为 HertzBeat 的关系型数据库,存储配置信息和告警规则等
  2. VictoriaMetrics:高性能时序数据库,用于存储监控指标数据
  3. 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.ymlsureness.yml
  • 日志持久化到本地目录 ./logs
  • 暴露 1157 和 1158 端口,分别对应 Web 界面和 API 服务

部署步骤

  1. 创建项目目录并进入:

    mkdir hertzbeat-deploy && cd hertzbeat-deploy
    
  2. 创建必要的子目录:

    mkdir -p dbdata/pgdata/data dbdata/tsdbdata conf/sql logs
    
  3. 将提供的 docker-compose.yaml 文件保存到项目根目录

  4. 准备 HertzBeat 配置文件:

    • 创建 conf/application.ymlconf/sureness.yml
    • 创建 conf/sql 目录下的初始化 SQL 脚本
  5. 启动服务:

    docker-compose up -d
    
  6. 验证服务状态:

    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

常见问题处理

  1. 端口冲突:如果 5432、8428、1157 或 1158 端口已被占用,修改 docker-compose.yaml 中的端口映射

  2. 初始化失败:检查 conf/sql 目录下的 SQL 脚本是否正确

  3. 健康检查失败:适当延长健康检查的 start_period 时间

  4. 时区问题:确保所有服务的 TZ 环境变量一致

生产环境建议

  1. 修改默认的数据库密码
  2. 考虑使用更安全的网络配置
  3. 配置定期备份策略
  4. 监控容器资源使用情况
  5. 考虑使用 Docker Swarm 或 Kubernetes 进行集群部署

通过以上配置,您可以快速搭建一个功能完整的 HertzBeat 监控系统,为后续的监控配置和使用打下坚实基础。