使用開源實時監控工具 HertzBeat 對 SpringBoot2 應用的監控告警實踐,5分鐘搞定!
HertzBeat 介紹
HertzBeat 是一款開源,易用友好的實時監控工具,無需Agent,擁有強大自定義監控能力。
- 集監控-告警-通知為一體,支援對應用服務,資料庫,作業系統,中介軟體,雲原生,網路等監控,閾值告警,告警通知(郵件微信釘釘飛書簡訊 Slack Discord Telegram)。
- 其將Http,Jmx,Ssh,Snmp,Jdbc等協議規範可配置化,只需配置YML就能使用這些協議去自定義採集任何您想要採集的指標。您相信只需配置YML就能立刻適配一個K8s或Docker等新的監控型別嗎?
- HertzBeat 的強大自定義,多型別支援,易擴充套件,低耦合,希望能幫助開發者和中小團隊快速搭建自有監控系統。
Github: https://github.com/dromara/hertzbeat
在 HertzBeat 5分鐘搞定對 SpringBoot2 應用的監控
操作前提,您已擁有 SpringBoot2 應用環境和 HertzBeat 環境。
- HertzBeat 安裝部署文件 https://hertzbeat.com/docs/start/docker-deploy
一. 在 SpringBoot2 應用端暴露出actuator
指標介面,它將提供 metrics 介面資料。
- 開啟 SpringBoot Actuator Endpoint 暴露出
metrics health env
指標介面
management:
endpoints:
web:
exposure:
include:
- 'metrics'
- 'health'
- 'env'
enabled-by-default: on
- 重啟後測試訪問指標介面
ip:port/actuator
是否有響應json資料如下:
{
"_links": {
"self": {
"href": "http://localhost:1157/actuator",
"templated": false
},
"health-path": {
"href": "http://localhost:1157/actuator/health/{*path}",
"templated": true
},
"health": {
"href": "http://localhost:1157/actuator/health",
"templated": false
},
"env": {
"href": "http://localhost:1157/actuator/env",
"templated": false
},
"env-toMatch": {
"href": "http://localhost:1157/actuator/env/{toMatch}",
"templated": true
},
"metrics-requiredMetricName": {
"href": "http://localhost:1157/actuator/metrics/{requiredMetricName}",
"templated": true
},
"metrics": {
"href": "http://localhost:1157/actuator/metrics",
"templated": false
}
}
}
在開源監控系統 HertzBeat 監控頁面新增對 SpringBoot2 應用監控
- 點選新增 SpringBoot2 監控
路徑:選單 -> 應用服務監控 -> SpringBoot2 -> 新增SpringBoot2監控
- 配置新增監控 SpringBoot2 所需引數
在監控頁面填寫 SpringBoot2應用 對端IP,服務埠(預設8080),賬戶密碼等,最後點選確定新增即可。
其他引數如採集間隔,超時時間等可以參考幫助文件 https://hertzbeat.com/docs/help/
- 完成✅,現在我們已經新增好對 SpringBoot2應用 的監控了,檢視監控列表即可看到我們的新增項。
- 點選監控列表項的操作->監控詳情圖示 即可瀏覽 SpringBoot2應用 的實時監控指標資料。
- 點選監控歷史詳情TAB 即可瀏覽 SpringBoot2應用 的歷史監控指標資料圖表?。
DONE!完成啦!不需要我們去部署agent或者各種繁瑣操作,是不是很簡單
- 只需一步在 HertzBeat 監控頁面配置IP埠新增 SpringBoot2應用 監控即可
透過上面我們就完成了對 SpringBoot2應用 的監控,我們可以在 HertzBeat 隨時檢視SpringBoot2應用的各種指標狀態和可用性。
當然不可能人工一直實時檢視指標,監控往往伴隨著告警閾值,當 SpringBoot2應用 的效能指標超出我們的閾值或SpringBoot2應用本身異常時,能及時的通知到我們對應的負責人,負責人收到通知處理,這樣才是一個完整的監控告警流程。
接下來我們就來一步一步演示如何配置 HertzBeat 系統裡的閾值告警通知,當 SpringBoot2應用 的指標異常時,及時通知給我們
三. 在 HertzBeat 系統新增 SpringBoot2應用 指標閾值告警
- 對某個重要指標配置告警閾值
路徑:選單 -> 閾值規則 -> 新增閾值
- 選擇配置的指標物件,SpringBoot2應用 監控主要是 堆疊記憶體 執行緒等相關指標,我們舉例對
狀態執行緒數
threads
->threads
這個指標進行閾值設定, 當runnable
狀態的執行緒數量大於300時發出告警。 - 這裡我們就配置當此指標
size
,state
的equals(state,"runnable"") && size>300
時發出告警,告警級別為警告告警,三次即觸發,具體如下圖。
- 新增訊息通知接收人
配置接收人,讓告警訊息知道要發給誰,用什麼方式發。
路徑:選單 -> 告警通知 -> 告警接收人 -> 新增接收人
訊息通知方式支援 郵件,釘釘,企業微信,飛書,WebHook,簡訊等,我們這裡以常用的釘釘為例。
- 參照此 幫助文件 https://hertzbeat.com/docs/help/alert_dingtalk 在釘釘端配置機器人,設定安全自定義關鍵詞
HertzBeat
,獲取對應access_token
值。 - 在 HertzBeat 配置接收人參數如下。
【告警通知】->【新增接收人】 ->【選擇釘釘機器人通知方式】->【設定釘釘機器人ACCESS_TOKEN】-> 【確定】
- 配置關聯的告警通知策略⚠️ 【新增通知策略】-> 【將剛設定的接收人關聯】-> 【確定】
配置告警通知策略,讓告警訊息與接收人繫結,這樣就能決定哪些告警發給哪個人。
完畢,現在坐等告警訊息過來啦。叮叮叮叮
[HertzBeat告警通知]
告警目標物件 : springboot2.threads.size
所屬監控ID : 483783444839322
所屬監控名稱 : SPRINGBOOT2_localhost
告警級別 : 警告告警
告警觸發時間 : 2023-03-22 21:13:44
內容詳情 : The springboot2 service's runnable state threads num is over 300, now is 444.
小結
:::tip
這篇實踐文章帶我們體驗瞭如何使用開源實時監控工具 HertzBeat 來監控 SpringBoot2應用 指標資料,可以發現集 監控-告警-通知
的 HertzBeat 在操作與使用方面更加的便捷,只需頁面上簡單點一點就能把 SpringBoot2應用 納入監控並告警通知,再也不需要部署多個元件編寫配置檔案那些繁瑣操作了。
:::
只需要一條docker命令即可安裝體驗heartbeat:
docker run -d -p 1157:1157 --name hertzbeat tancloud/hertzbeat
更強大
透過上面的簡單步驟我們實現了對SpringBoot2的監控,但裡面的內建指標固定不滿足需要,是否能自定義監控更多SpringBoot2的指標呢?答案當然是可以的,透過在頁面上的監控定義->SpringBoot2隨時透過編輯如下的YML配置檔案自定義新增修改想要監控的效能指標。
What is HertzBeat?
HertzBeat赫茲跳動 是一個擁有強大自定義監控能力,無需Agent的實時監控告警工具。應用服務,資料庫,作業系統,中介軟體,雲原生,網路等監控,閾值告警,告警通知(郵件微信釘釘飛書簡訊 Discord Slack Telegram)。
我們將
Http,Jmx,Ssh,Snmp,Jdbc
等協議規範可配置化,只需配置YML就能使用這些協議去自定義採集任何您想要採集的指標。
您相信只需配置YML就能立刻適配一個K8s或Docker等新的監控型別嗎?
HertzBeat
的強大自定義,多型別支援,易擴充套件,低耦合,希望能幫助開發者和中小團隊快速搭建自有監控系統。
Github: https://github.com/dromara/hertzbeat
Gitee: https://gitee.com/dromara/hertzbeat
⛄ Supported
- 網站監控, 埠可用性, Http Api, Ping連通性, Jvm, SiteMap全站, Ssl證書, SpringBoot, FTP伺服器
- Mysql, PostgreSQL, MariaDB, Redis, ElasticSearch, SqlServer, Oracle, MongoDB, 達夢, OpenGauss, ClickHouse, IoTDB
- Linux, Ubuntu, CentOS, Windows
- Tomcat, Nacos, Zookeeper, RabbitMQ, Flink, Kafka, ShenYu, DynamicTp, Jetty, ActiveMQ
- Kubernetes, Docker
- CiscoSwitch, HpeSwitch, HuaweiSwitch, TpLinkSwitch
- 和更多的自定義監控。
- 通知支援
Discord
Slack
Telegram
郵件
釘釘
微信
飛書
簡訊
Webhook
。