首页
/ Apache HertzBeat 基于 Docker Compose 的 MySQL 与 VictoriaMetrics 集成部署指南

Apache HertzBeat 基于 Docker Compose 的 MySQL 与 VictoriaMetrics 集成部署指南

2025-07-07 06:32:31作者:魏献源Searcher

概述

Apache HertzBeat 是一款开源的实时监控系统,本文将详细介绍如何使用 Docker Compose 快速部署 HertzBeat 系统,并集成 MySQL 数据库和 VictoriaMetrics 时序数据库的完整方案。

环境准备

在开始部署前,请确保您的系统已安装以下组件:

  • Docker 18.06 或更高版本
  • Docker Compose 1.25.0 或更高版本

架构解析

本部署方案采用三组件架构:

  1. HertzBeat:核心监控系统
  2. MySQL 8:存储系统配置和元数据
  3. VictoriaMetrics:高性能时序数据库,存储监控指标数据

详细部署步骤

1. 网络配置

首先创建一个专用的 Docker 网络,确保各容器间可以相互通信:

networks:
  hertzbeat:
    driver: bridge

2. MySQL 服务配置

MySQL 作为 HertzBeat 的元数据存储,配置如下关键点:

services:
  mysql:
    image: mysql:8
    container_name: compose-mysql
    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/

关键配置说明

  • 数据持久化到本地 dbdata/mysqldata 目录
  • 初始化 SQL 脚本可放置在 conf/sql 目录
  • 健康检查确保服务完全启动后 HertzBeat 才连接

3. VictoriaMetrics 服务配置

VictoriaMetrics 作为高性能时序数据库,配置如下:

  victoria-metrics:
    image: victoriametrics/victoria-metrics:v1.95.1
    healthcheck:
      test: ["CMD", "wget", "-q", "-O", "-", "http://victoria-metrics:8428/-/healthy"]
    volumes:
      - ./dbdata/tsdbdata:/victoria-metrics-data

性能优化建议

  • 时序数据存储路径 dbdata/tsdbdata 应位于高性能存储设备
  • 最新版本 VictoriaMetrics 提供了更好的压缩率和查询性能

4. HertzBeat 主服务配置

核心监控服务配置要点:

  hertzbeat:
    image: apache/hertzbeat
    depends_on:
      mysql:
        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
    ports:
      - "1157:1157"  # Web 管理界面
      - "1158:1158"  # API 接口

关键目录说明

  • ext-lib:扩展库目录,可放置自定义插件
  • logs:日志目录,建议定期归档
  • conf:配置文件目录,可自定义 HertzBeat 各项参数

部署后操作

  1. 初始化访问

    • 通过浏览器访问 http://服务器IP:1157
    • 默认管理员账号:admin/hertzbeat
  2. 数据验证

    • 检查 MySQL 中是否创建了 HertzBeat 所需的表
    • 确认 VictoriaMetrics 是否接收并存储了监控指标
  3. 性能调优

    • 根据监控规模调整 VictoriaMetrics 的存储配置
    • 优化 MySQL 的连接池参数

常见问题解决方案

  1. 容器启动顺序问题

    • 确保使用 depends_oncondition: service_healthy 配置
    • 增加健康检查的重试次数和间隔
  2. 时区不一致

    • 所有容器统一配置 TZ: Asia/Shanghai
  3. 存储空间不足

    • 定期清理 VictoriaMetrics 的旧数据
    • 监控数据库增长情况

生产环境建议

  1. 高可用部署

    • 考虑 MySQL 主从复制
    • VictoriaMetrics 集群模式部署
  2. 备份策略

    • 定期备份 MySQL 数据库
    • 设置 VictoriaMetrics 的定期快照
  3. 监控系统自身

    • 为 HertzBeat 本身设置监控项
    • 监控数据库服务的资源使用情况

通过以上配置,您可以快速搭建一个功能完整的 HertzBeat 监控系统,具备元数据存储和时序数据存储能力,为后续的监控任务打下坚实基础。