HertzBeat 监控 SpringBoot 使用案例

在云原生时代,Spring Boot应用的监控与可视化已然成为运维体系的核心环节,实时监控应用性能是保障系统稳定性的关键。

这篇文章将结合 HertzBeat 实现从指标采集、可视化到告警的一体化解决方案,并展示完整操作流程与监控实践。

HertzBeat 是什么

Apache HertzBeat (incubating) 一个拥有强大自定义监控能力,无需Agent的实时监控工具。网站监测,PING连通性,端口可用性,数据库,操作系统,中间件,API监控,阈值告警,告警通知(邮件微信钉钉飞书)。

github: https://github.com/apache/hertzbeat

安装 HertzBeat

生产环境中推荐使用 PostgreSQL + VictoriaMetrics 服务的方式部署 HertzBeat。

1、部署 HertzBeat

  • 下载安装包

    从 下载页面 下载您系统环境对应的安装包版本 apache-hertzbeat-xxx-incubating-bin.tar.gz

    解压安装包到主机,如: /opt/hertzbeat

- tar zxvf apache-hertzbeat-xxx-incubating-bin.tar.gz

2、快速安装 PostgreSQL + VictoriaMetrics 服务

  • Docker 安装 PostgreSQL
- docker run -d --name postgresql -p 5432:5432 -v "$PWD/data:/var/lib/postgresql/data" -e POSTGRES_USER=root -e     POSTGRES_PASSWORD=123456 -e TZ=Asia/Shanghai postgres:15      
  • Docker 安装 VictoriaMetrics
- docker run -d -p 8428:8428 -v "$PWD/victoria-metrics-data:/victoria-metrics-data" --name victoria-metrics victoriametrics/victoria-metrics:v1.95.1

3、修改 HertzBeat 的配置文件

  • 切换元数据储存数据源

    修改位于 hertzbeat/config/application.yml 的配置文件,替换为 PostgreSQL 服务:

- spring:datasource:driver-class-name: org.postgresql.Driverusername: rootpassword: 123456url: jdbc:postgresql://postgresql:5432/hertzbeathikari:max-lifetime: 120000jpa:show-sql: falsedatabase-platform: org.eclipse.persistence.platform.database.PostgreSQLPlatformdatabase: postgresqlproperties:eclipselink:logging:level: SEVERE
  • 配置时序数据库服务

    同理,修改 hertzbeat/config/application.yml 的配置文件,开启 VictoriaMetrics 服务用于存储指标:

- warehouse:store:# 关闭默认JPAjpa:enabled: false# 启用 victoria-metricsvictoria-metrics:enabled: trueurl: http://localhost:8428username: rootpassword: root

4、启动

在上述解压好的安装目录 bin 下的启动脚本 startup.sh,windows 环境下为 startup.bat

./startup.sh 

SpringBoot 应用配置

  1. 开启Actuator监控

    pom.xml添加依赖:

-  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency>

配置application.yml暴露端点:

-  management:endpoints:web:exposure:include: '*'enabled-by-default: truemetrics:export:prometheus:enabled: true

注意:如果你的项目里还引入了认证相关的依赖,比如 springboot-security ,那么 SpringBoot Actuator 暴露出的接口可能会被拦截,此时需要你手动放开这些接口,以 springboot-security 为例,需要在 SecurityConfig 配置类中加入以下代码:

-  public class SecurityConfig extends WebSecurityConfigurerAdapter{@Overrideprotected void configure(HttpSecurity httpSecurity) throws Exception{httpSecurity// 配置要放开的接口.antMatchers("/actuator/**").permitAll().antMatchers("/metrics/**").permitAll().antMatchers("/trace").permitAll().antMatchers("/heapdump").permitAll()// ...}}
  1. 验证端点

    请求URL: http://<your-host>:<port>/actuator 验证已启用的端点,http://<your-host>:<port>/actuator/prometheus 应返回指标数据。

监控 SpringBoot 应用

  1. 新增 AUTO 监控

    系统导航至「监控中心」→「新增监控」→「AUTO」→「Prometheus任务」

  2. 填写关键参数

    • 目标Host:SpringBoot 应用服务器地址(不带协议头,例如: https://, http:// )

    • 端口:应用服务端口(例如: 8080)

    • 端点路径/actuator/prometheus

    • 使用标签分类来管理任务,如添加env=test等业务相关标签

  3. 查看检测指标数据

    点击进入新建监控,可以查看指标数据详情及指标历史图表等。

Grafana可视化集成 (可选)

  1. Grafana 部署

    启用 Grafana 可嵌入功能, 并开启匿名访问:

    参考: https://grafana.com/blog/2023/10/10/how-to-embed-grafana-dashboards-into-web-applications/ 修改配置文件grafana.ini中的allow_embedding = true 修改配置文件grafana.ini中的[auth.anonymous]true 或者通过docker运行Grafana,使用以下命令:

-  docker run -d --name grafana -p 3000:3000 -v "$PWD/grafana:/var/lib/grafana" -e "GF_AUTH_PROXY_ENABLED=true" -e "GF_AUTH_ANONYMOUS_ENABLED=true" -e "GF_AUTH_ANONYMOUS_ORG_ROLE=Admin" -e "GF_USERS_VIEWERS_CAN_EDIT=true" -e "GF_SECURITY_ALLOW_EMBEDDING=true" grafana/grafana:10.4.18
-  [auth.proxy]enabled = true[auth.anonymous]enabled = trueorg_role = Admin[users]viewers_can_edit = true[security]allow_embedding = true
环境变量grafana.ini配置段配置键名功能说明
GF_AUTH_PROXY_ENABLED=true[auth.proxy]enabled启用反向代理认证模式,允许通过HTTP头传递用户身份
GF_AUTH_ANONYMOUS_ENABLED=true[auth.anonymous]enabled开启匿名访问,无需登录即可访问Grafana界面
GF_AUTH_ANONYMOUS_ORG_ROLE=Admin[auth.anonymous]org_role设置匿名用户的默认权限为管理员(Admin),赋予所有操作权限
GF_USERS_VIEWERS_CAN_EDIT=true[users]viewers_can_edit允许"Viewer"角色的用户编辑仪表盘(通常仅限"Editor"或"Admin"角色有此权限)
GF_SECURITY_ALLOW_EMBEDDING=true[security]allow_embedding允许通过iframe等方式将Grafana面板嵌入第三方页面
  1. 在HertzBeat中配置Grafana

    在 HertzBeat 的配置文件application.yml中,配置 Grafana 数据源:

-  grafana:enabled: trueurl: http://127.0.0.1:3000username: adminpassword: admin
  1. 在 HertzBeat 监控中嵌入 Grafana 仪表盘

    配置启用 Grafana 后,重启 HertzBeat 服务,在新增的 AUTO 监控中启用并上传 Grafana 模板。比如:Grafana 数据源选择hertzbeat-victoria-metrics,然后在仪表盘点击:「Share」→「Export」→「Save to file」下载模板并上传至 HertzBeat 监控中。

  2. 查看 Grafana 图表

    进入新增 AUTO 监控页面,点击 Grafana 图标按钮,即可查看 Grafana 图表。

告警与通知联动

  1. HertzBeat告警配置

    系统页面 -> 告警 -> 阈值规则 -> 新增 -> 新增阈值

  2. 填写关键参数

    HertzBeat 提供了 实时计算计划周期 两种类型的阈值规则设置,这里我们以 计划周期 阈值规则为例。

    • 阈值名称:阈值规则名称
    • 阈值规则:填写指标监测的规则(支持 PromQL
    • 执行周期:周期性执行阈值计算的时间间隔
    • 告警级别:触发阈值的告警级别,从低到高依次为: 警告-warning,严重-critical,紧急-emergency
    • 触发次数:设置触发阈值多少次之后才会发送告警
    • 告警内容:填写指标监测的告警内容
  3. 设置阈值规则

    比如监测 SpringBoot 应用程序的 CPU 占用,添加阈值规则:system_cpu_usage{job="Jolly_Vulture_43vT"} > 0.01,当然,可以设置的阈值规则有很多,用户可以根据自身需求设置更丰富的告警规则。

    最终可以在告警中心看到已触发的告警。

  4. 告警通知

    系统页面 -> 消息通知 -> 通知媒介 -> 新增接收对象

    消息通知 -> 通知策略 -> 新增告警通知策略 -> 将刚才配置的接收人启用通知

    OK 当阈值触发后我们就可以收到对应告警消息啦,如果没有配通知,也可以在告警中心查看告警信息。

小总结

通过简洁的配置,用户几分钟之内就可搭建完整的监控体系,这充分体现了 HertzBeat 的几点优势:

  • 无需部署 Exporter 和 Agent 即可监控 Spring Boot Actuator 端点,支持自定义指标采集与告警规则。

  • 轻量化:相比传统 Prometheus + AlertManager 组合,HertzBeat 简化了部署和维护流程。

  • 无缝集成 Grafana,HertzBeat 将采集的时序数据实时推送至 Grafana 构建可视化仪表盘。

  • 监控+告警+通知功能整合联动,全协议覆盖 + 实时/周期阈值检测 + 多通道通知(钉钉/飞书/Webhook等)。

监控springboot应用的实践就到这里,当然对hertzbeat来说这个功能只是冰山一角,如果您觉得hertzbeat这个开源项目不错的话,欢迎在 GitHub 上点亮小星星哦✨

github: https://github.com/apache/hertzbeat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89334.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89334.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89334.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

突破性量子芯片问世:电子与光子首次集成,开启量子技术规模化应用新篇章

文丨浪味仙 排版丨浪味仙行业动向&#xff1a;3000字丨8分钟阅读内容提要在量子技术迈向规模化应用的征程中&#xff0c;研究人员迎来了重要突破。近日&#xff0c;波士顿大学、加州大学伯克利分校以及西北大学的科学家在《Nature Electronics》上发表论文&#xff0c;报告实现…

day30——零基础学嵌入式之线程2.0

一、进程和线程的对比线程进程定义轻量级的进程。是进程中的执行单元&#xff0c;作为CPU调度的基本单位进程时程序的一次执行过程&#xff0c;作为CPU的资源分配的基本单位优势创建以及切换速度块-----效率高线程&#xff08;线程共享了进程的资源&#xff09;间共享资源方便创…

洛谷 P1395 会议

【题目链接】 洛谷 P1395 会议 【题目考点】 1. 树形动规&#xff1a;树的重心 本题为求树的重心模板题 【解题思路】 树的重心&#xff1a;相比于树中其它结点&#xff0c;其所有的子树中结点数最多的子树的结点数最少&#xff0c;该结点就是这棵树的重心。 另一种定义&…

Microsoft 365 Adoption Score功能深度解析:驱动企业数字化转型的利器

在数字化转型的浪潮中,Microsoft 365(原Office 365)凭借其强大的生产力工具和云服务生态,已成为全球企业和组织提升效率、协作和创新的核心平台。然而,仅仅部署Microsoft 365并不足以充分发挥其潜力,关键在于如何推动员工高效采用这些工具,并将其融入日常工作流程。为此…

尺寸标注识别5 实例分割 roboflow | result.boxes获取边界框 | yolov8n-seg架构 torchinfo | 对直线关系不敏感

https://gitee.com/njsgcs/yolo-local 单标注一个尺寸线 100轮就百分百了 Sign in to Roboflow 有混起来的问题 roboflow训练用的cocon-seg模型我网上找不到 上面这种比较麻烦 text的中心要在dt范围内 屏幕点以下等同于按下save&#xff08;enter&#xff09; 取最长线段作…

敏捷开发卡在需求分析?飞算 JavaAI 加速需求确认与功能迭代

在敏捷开发中&#xff0c;需求分析常成为团队推进的 “卡点”—— 模糊的需求描述、反复的需求变更、拆解落地难等问题&#xff0c;往往导致迭代周期延长。而飞算 JavaAI 作为专为 Java 开发设计的工具&#xff0c;正通过 “需求理解 - 接口设计 - 代码生成” 的全流程智能化&a…

QT跨平台应用程序开发框架(10)—— Qt窗口

目录 一&#xff0c;关于窗口 二&#xff0c;菜单栏 2.1 菜单介绍 2.2 添加菜单 2.3 添加快捷键 2.4 添加其子菜单 2.5 添加分割线和图标 三&#xff0c;工具栏 3.1 添加和使用工具栏 3.2 设置位置属性 四&#xff0c;状态栏 五&#xff0c;浮动窗口 六&#xff0c;对话框 6.1 …

git从本地仓库添加到远程仓库

先创建&#xff0c;然后配置 Git 的全局用户名和邮箱git config --global user.name "不吃糖o" git config --global user.email "1523944556qq.com" git config --global -l 查看设置的用户名和邮箱如何生成SSH公钥&#xff1f;ssh-keygen 生成sshkeyls ~…

锁步核,为什么叫锁步核?

“锁步核”&#xff08;Lockstep Cores&#xff09;这一名称源于其工作原理与军事队列行进中的“锁步”&#xff08;Lockstep&#xff09;动作的类比。以下是详细的说明整理&#xff1a;1. 军事起源&#xff1a;什么是“锁步”&#xff1f; 在传统军事训练中&#xff0c;“锁步…

python学智能算法(二十二)|SVM-点与超平面的距离

引言 前序学习进程中&#xff0c;了解了向量、向量点积运算、超平面、感知机等知识点。 SVM算法最核心的目标是通过规划租号的分割超平面&#xff0c;来使得超平面附近的点到超平面的距离和达到最大值。 那点和超平面的距离如何计算&#xff0c;就是今天学习的重点。 点与超平…

参会邀请!2025世界人工智能大会合合信息技术交流日报名启动!

2025世界人工智能大会即将开幕&#xff0c;合合信息邀请您一起参与KOL深度技术交流活动。本次活动不仅可以带您逛展2025世界人工智能大会&#xff0c;在合合信息展台体验AI黑科技&#xff0c;还可以与行业顶尖技术专家面对面交流&#xff0c;共同探讨当下热门AI安全话题。 详细…

零基础入门:用C++从零实现TCP Socket网络小工具

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 网络编程中的套接字&#xff08;Socket&#xff09;是通信的基本接口&#xff0c;允许不同计算机之间通过网络交换数据。套接字是计算机网络中通信的“端点”&#xff0c;通过它&#xff0c;应用程序可以与…

SOES:软实现EtherCAT从站协议栈项目介绍及从站开发案例

在现代工业自动化领域&#xff0c;EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;以其高速、实时和开放的特性&#xff0c;成为现场总线通信的主流协议之一。EtherCAT网络中&#xff0c;主站&#xff08;Master&#xff09;负责调度和管理&#…

[simdjson] 填充字符串 | `document` 对象 | on-demand 模式

第二章&#xff1a;填充字符串 在第一章解析器中&#xff0c;我们学习了simdjson::dom::parser和simdjson::ondemand::parser作为可复用内存的JSON解析工具。 本章将深入解析JSON数据输入的核心要求——“填充字符串”。 为何需要填充&#xff1f; simdjson通过SIMD&#x…

扭蛋机小程序开发:开启线上娱乐新风尚

在当今数字化浪潮席卷的时代&#xff0c;娱乐方式正经历着前所未有的变革。传统的扭蛋机&#xff0c;那充满惊喜与期待的实体装置&#xff0c;曾是无数人童年回忆中的欢乐源泉。如今&#xff0c;随着科技的飞速发展&#xff0c;扭蛋机小程序开发应运而生&#xff0c;将这份经典…

【React Native】布局和 Stack 、Slot

布局和Stack 点击链接后&#xff0c;页面切换时最好是有动画效果。页面一般都有头部&#xff0c;里面有页面的标题之类的东西。 在app目录里&#xff0c;新建一个_layout.js文件&#xff0c;这是项目的布局文件。 这个名字是固定的&#xff0c;前面必须有一个_ 。 布局的意…

3C电子产品蓝光三维扫描检测方案-中科米堆CASAIM

随着3C电子产品向轻薄化、精密化方向发展&#xff0c;传统的二维检测技术已难以满足现代制造业对产品精度的高标准要求。特别是在智能手机、平板电脑等消费电子领域&#xff0c;微小的结构偏差都可能导致产品组装困难或性能下降。当前行业内普遍面临检测效率低、数据采集不完整…

Docker 镜像原理

Union FS(联合文件系统) Union File System 是一种分层、轻量级并且高性能的文件系统&#xff0c;它支持对文件系统的修改作为一次提交来一层层的叠加&#xff0c;同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFS 是一种为 Linux&#xff0c;FreeBSD 和 NetBSD 操作系统…

为什么IoTDB成为物联网场景的技术优选?

在物联网、工业监控等领域&#xff0c;时序数据的高效管理成为技术架构设计的关键环节。时序数据库作为专门处理带时间戳数据的系统&#xff0c;其选型需兼顾性能、兼容性与场景适配性。本文将从技术角度解析 IoTDB 的设计理念与实践方法&#xff0c;为时序数据库选型提供参考。…

js中的微任务和宏任务的理解

在JavaScript中&#xff0c;微任务&#xff08;Microtask&#xff09;和宏任务&#xff08;Macrotask&#xff09;是异步任务执行机制的重要组成部分&#xff0c;它们共同构成了JavaScript事件循环&#xff08;Event Loop&#xff09;的核心逻辑。理解这两个概念对于编写高性能…