HertzBeat 監(jiān)控 SpringBoot 使用案例(最新整理)
HertzBeat 監(jiān)控 SpringBoot 使用案例
在云原生時代,Spring Boot應(yīng)用的監(jiān)控與可視化已然成為運維體系的核心環(huán)節(jié),實時監(jiān)控應(yīng)用性能是保障系統(tǒng)穩(wěn)定性的關(guān)鍵。
這篇文章將結(jié)合 HertzBeat 實現(xiàn)從指標(biāo)采集、可視化到告警的一體化解決方案,并展示完整操作流程與監(jiān)控實踐。
HertzBeat 是什么
Apache HertzBeat (incubating) 一個擁有強大自定義監(jiān)控能力,無需Agent的實時監(jiān)控工具。網(wǎng)站監(jiān)測,PING連通性,端口可用性,數(shù)據(jù)庫,操作系統(tǒng),中間件,API監(jiān)控,閾值告警,告警通知(郵件微信釘釘飛書)。
github: https://github.com/apache/hertzbeat
安裝 HertzBeat
生產(chǎn)環(huán)境中推薦使用 PostgreSQL + VictoriaMetrics 服務(wù)的方式部署 HertzBeat。
1、部署 HertzBeat
- 下載安裝包
- 從 下載頁面 下載您系統(tǒng)環(huán)境對應(yīng)的安裝包版本
apache-hertzbeat-xxx-incubating-bin.tar.gz; - 解壓安裝包到主機,如:
/opt/hertzbeat
- tar zxvf apache-hertzbeat-xxx-incubating-bin.tar.gz
2、快速安裝 PostgreSQL + VictoriaMetrics 服務(wù)
- 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 的配置文件
- 切換元數(shù)據(jù)儲存數(shù)據(jù)源
- 修改位于
hertzbeat/config/application.yml的配置文件,替換為 PostgreSQL 服務(wù):
- spring:
datasource:
driver-class-name: org.postgresql.Driver
username: root
password: 123456
url: jdbc:postgresql://postgresql:5432/hertzbeat
hikari:
max-lifetime: 120000
jpa:
show-sql: false
database-platform: org.eclipse.persistence.platform.database.PostgreSQLPlatform
database: postgresql
properties:
eclipselink:
logging:
level: SEVERE- 配置時序數(shù)據(jù)庫服務(wù)
- 同理,修改
hertzbeat/config/application.yml的配置文件,開啟 VictoriaMetrics 服務(wù)用于存儲指標(biāo):
- warehouse:
store:
# 關(guān)閉默認(rèn)JPA
jpa:
enabled: false
# 啟用 victoria-metrics
victoria-metrics:
enabled: true
url: http://localhost:8428
username: root
password: root4、啟動
在上述解壓好的安裝目錄 bin 下的啟動腳本 startup.sh,windows 環(huán)境下為 startup.bat
./startup.sh
SpringBoot 應(yīng)用配置
- 開啟Actuator監(jiān)控
- 在
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: true
metrics:
export:
prometheus:
enabled: true注意:如果你的項目里還引入了認(rèn)證相關(guān)的依賴,比如 springboot-security ,那么 SpringBoot Actuator 暴露出的接口可能會被攔截,此時需要你手動放開這些接口,以 springboot-security 為例,需要在 SecurityConfig 配置類中加入以下代碼:
- public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception{
httpSecurity
// 配置要放開的接口
.antMatchers("/actuator/**").permitAll()
.antMatchers("/metrics/**").permitAll()
.antMatchers("/trace").permitAll()
.antMatchers("/heapdump").permitAll()
// ...
}
}- 驗證端點
- 請求URL:
http://<your-host>:<port>/actuator驗證已啟用的端點,http://<your-host>:<port>/actuator/prometheus應(yīng)返回指標(biāo)數(shù)據(jù)。
監(jiān)控 SpringBoot 應(yīng)用
新增 AUTO 監(jiān)控
系統(tǒng)導(dǎo)航至「監(jiān)控中心」→「新增監(jiān)控」→「AUTO」→「Prometheus任務(wù)」

填寫關(guān)鍵參數(shù)

目標(biāo)Host:SpringBoot 應(yīng)用服務(wù)器地址(不帶協(xié)議頭,例如: https://, http:// )
端口:應(yīng)用服務(wù)端口(例如: 8080)
端點路徑:/actuator/prometheus
使用標(biāo)簽分類來管理任務(wù),如添加env=test等業(yè)務(wù)相關(guān)標(biāo)簽
查看檢測指標(biāo)數(shù)據(jù)
點擊進入新建監(jiān)控,可以查看指標(biāo)數(shù)據(jù)詳情及指標(biāo)歷史圖表等。


Grafana可視化集成 (可選)
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 = true org_role = Admin [users] viewers_can_edit = true [security] allow_embedding = true
| 環(huán)境變量 | grafana.ini配置段 | 配置鍵名 | 功能說明 |
|---|---|---|---|
GF_AUTH_PROXY_ENABLED=true | [auth.proxy] | enabled | 啟用反向代理認(rèn)證模式,允許通過HTTP頭傳遞用戶身份 |
GF_AUTH_ANONYMOUS_ENABLED=true | [auth.anonymous] | enabled | 開啟匿名訪問,無需登錄即可訪問Grafana界面 |
GF_AUTH_ANONYMOUS_ORG_ROLE=Admin | [auth.anonymous] | org_role | 設(shè)置匿名用戶的默認(rèn)權(quán)限為管理員(Admin),賦予所有操作權(quán)限 |
GF_USERS_VIEWERS_CAN_EDIT=true | [users] | viewers_can_edit | 允許"Viewer"角色的用戶編輯儀表盤(通常僅限"Editor"或"Admin"角色有此權(quán)限) |
GF_SECURITY_ALLOW_EMBEDDING=true | [security] | allow_embedding | 允許通過iframe等方式將Grafana面板嵌入第三方頁面 |
在HertzBeat中配置Grafana
在 HertzBeat 的配置文件application.yml中,配置 Grafana 數(shù)據(jù)源:
- grafana:
enabled: true
url: http://127.0.0.1:3000
username: admin
password: admin在 HertzBeat 監(jiān)控中嵌入 Grafana 儀表盤
配置啟用 Grafana 后,重啟 HertzBeat 服務(wù),在新增的 AUTO 監(jiān)控中啟用并上傳 Grafana 模板。比如:Grafana 數(shù)據(jù)源選擇hertzbeat-victoria-metrics,然后在儀表盤點擊:「Share」→「Export」→「Save to file」下載模板并上傳至 HertzBeat 監(jiān)控中。

查看 Grafana 圖表
進入新增 AUTO 監(jiān)控頁面,點擊 Grafana 圖標(biāo)按鈕,即可查看 Grafana 圖表。

告警與通知聯(lián)動
HertzBeat告警配置
系統(tǒng)頁面 -> 告警 -> 閾值規(guī)則 -> 新增 -> 新增閾值

填寫關(guān)鍵參數(shù)
HertzBeat 提供了 實時計算 和 計劃周期 兩種類型的閾值規(guī)則設(shè)置,這里我們以 計劃周期 閾值規(guī)則為例。
- 閾值名稱:閾值規(guī)則名稱
- 閾值規(guī)則:填寫指標(biāo)監(jiān)測的規(guī)則(支持
PromQL) - 執(zhí)行周期:周期性執(zhí)行閾值計算的時間間隔
- 告警級別:觸發(fā)閾值的告警級別,從低到高依次為: 警告-warning,嚴(yán)重-critical,緊急-emergency
- 觸發(fā)次數(shù):設(shè)置觸發(fā)閾值多少次之后才會發(fā)送告警
- 告警內(nèi)容:填寫指標(biāo)監(jiān)測的告警內(nèi)容
設(shè)置閾值規(guī)則
- 比如監(jiān)測 SpringBoot 應(yīng)用程序的 CPU 占用,添加閾值規(guī)則:
system_cpu_usage{job="Jolly_Vulture_43vT"} > 0.01,當(dāng)然,可以設(shè)置的閾值規(guī)則有很多,用戶可以根據(jù)自身需求設(shè)置更豐富的告警規(guī)則。

最終可以在告警中心看到已觸發(fā)的告警。

告警通知
系統(tǒng)頁面 -> 消息通知 -> 通知媒介 -> 新增接收對象

消息通知 -> 通知策略 -> 新增告警通知策略 -> 將剛才配置的接收人啟用通知

OK 當(dāng)閾值觸發(fā)后我們就可以收到對應(yīng)告警消息啦,如果沒有配通知,也可以在告警中心查看告警信息。
小總結(jié)
通過簡潔的配置,用戶幾分鐘之內(nèi)就可搭建完整的監(jiān)控體系,這充分體現(xiàn)了 HertzBeat 的幾點優(yōu)勢:
- 無需部署 Exporter 和 Agent 即可監(jiān)控 Spring Boot Actuator 端點,支持自定義指標(biāo)采集與告警規(guī)則。
- 輕量化:相比傳統(tǒng) Prometheus + AlertManager 組合,HertzBeat 簡化了部署和維護流程。
- 無縫集成 Grafana,HertzBeat 將采集的時序數(shù)據(jù)實時推送至 Grafana 構(gòu)建可視化儀表盤。
- 監(jiān)控+告警+通知功能整合聯(lián)動,全協(xié)議覆蓋 + 實時/周期閾值檢測 + 多通道通知(釘釘/飛書/Webhook等)。
監(jiān)控springboot應(yīng)用的實踐就到這里,當(dāng)然對hertzbeat來說這個功能只是冰山一角,如果您覺得hertzbeat這個開源項目不錯的話,歡迎在 GitHub 上點亮小星星哦?
github: https://github.com/apache/hertzbeat
到此這篇關(guān)于HertzBeat 監(jiān)控 SpringBoot 使用案例(最新整理)的文章就介紹到這了,更多相關(guān)HertzBeat SpringBoot使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis resultmap 如何為對象賦值的調(diào)用順序
這篇文章主要介紹了mybatis resultmap 如何為對象賦值的調(diào)用順序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Java實現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例
駝峰和下劃線互轉(zhuǎn)場景是在不同命名規(guī)范的情況下,需要進行字段名稱的轉(zhuǎn)換,本文就來介紹一下Java實現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例,感興趣的可以了解一下2023-12-12

