依赖时序数据库服务 Doris 安装初始化(可选)
Apache HertzBeat™ 的历史数据存储依赖时序数据库,任选其一安装初始化即可,也可不安装(注意⚠️但强烈建议生产环境配置)。
我们推荐使用并长期支持 Greptime 作为存储。
Apache Doris 是一款面向实时分析场景的 MPP 数据库。在 HertzBeat 中,Doris 可用于同时存储:
- 指标历史数据(
hzb_history) - 日志数据(
hzb_log)
⚠️ 若不配置时序数据库,则只会保留最近一小时历史数据。
如果您已有 Doris 环境,可直接跳到 YML 配置步骤。
安装 Doris(可选)
你可以通过安装包或 Docker 部署 Doris。生产环境建议参考官方部署文档:
- Doris 官方文档:Quick Start
对 HertzBeat 接入来说,至少需要保证:
- FE MySQL 服务端口可访问(默认
9030) - FE HTTP 服务端口可访问(默认
8030)
注意,必须添加 MYSQL jdbc 驱动 jar
- 下载 MYSQL jdbc driver jar,例如 mysql-connector-java-8.1.0.jar。https://mvnrepository.com/artifact/com.mysql/mysql-connector-j/8.1.0
- 将此 jar 包拷贝放入 HertzBeat 的安装目录下的
ext-lib目录下。 - 重启 HertzBeat 服务。
前置检查
- Doris FE、BE 节点状态正常。
- HertzBeat 到 Doris 网络可达:
- FE MySQL 端口(默认
9030),用于建库建表、查询 - FE HTTP 端口(默认
8030),用于 Stream Load 写入
- FE MySQL 端口(默认
- 配置的 Doris 用户具有建库建表、写入、查询权限。
在 HertzBeat application.yml 中配置 Doris
-
修改
hertzbeat/config/application.yml。Docker 容器部署需将配置文 件挂载到主机本地,安装包部署直接修改解压目录下配置文件即可。
-
配置
warehouse.store.doris(生产环境推荐配置使用 Stream Load 模式):
warehouse:
store:
doris:
enabled: true
# Doris FE MySQL 连接地址
url: jdbc:mysql://127.0.0.1:9030
username: root
password:
table-config:
# 开启动态分区(用于自动过期)
enable-partition: true
# 支持 HOUR / DAY / MONTH
partition-time-unit: DAY
# 历史分区保留数量
partition-retention-days: 30
# 预创建未来分区数量
partition-future-days: 3
buckets: 8
replication-num: 3
pool-config:
minimum-idle: 5
maximum-pool-size: 20
connection-timeout: 30000
write-config:
# 生产环境强烈推荐使用 stream 模式以获得高吞吐性能
write-mode: stream
batch-size: 1000
flush-interval: 5
stream-load-config:
# Doris FE HTTP 端口
http-port: ":8030"
timeout: 60
max-bytes-per-batch: 10485760
# 复杂网络环境(K8s/跨域)需配置:direct / public / private
redirect-policy: ""
切换到 Stream Load 模式
生产环境推荐配置
在生产环境部署时,强烈推荐使用 Stream Load 模式 以保证大规模写入性能。Stream Load 直接写入 Doris 存储层,相比 JDBC 模式提供更高的吞吐量提升。
切换前的前置检查
-
网络可达性
- 确保 HertzBeat 能访问 Doris FE HTTP 端口(默认
8030) - 若无法直连,需在 Doris 侧配置 BE 公网/内网地址标签
- 确保 HertzBeat 能访问 Doris FE HTTP 端口(默认
-
复杂网络场景的特殊配置
在 K8s、跨域、负载均衡等环境下,Stream Load 的重定向机制需要特别注意:
- FE 会将请求重定向到某个可用的 BE,该 BE 地址必须对 HertzBeat 可达
- 通过配置
redirect-policy来控制 FE 返回的 BE 地址类型:direct:直连 BE IPpublic:使用公网地址(云环境)private:使用内网地址(私有网络)- 留空则使用 Doris 默认策略
参考官方文档:Doris Stream Load 复杂网络原理
切换步骤
-
修改配置文件
编辑
hertzbeat/config/application.yml,将write-mode改为stream:warehouse:
store:
doris:
write-config:
write-mode: stream # 改这里:从 jdbc 改为 stream
stream-load-config:
http-port: ":8030"
timeout: 60
max-bytes-per-batch: 10485760
redirect-policy: "" # 复杂网络需配置这里 -
重启 HertzBeat 服务
-
验证切换成功
查看 HertzBeat 日志,应出现 Stream Load 相关日志