天天看點

使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警

作者:馬士兵教育CTO
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警

使用開源實時監控工具 HertzBeat 對 SpringBoot2 應用的監控告警實踐,5分鐘搞定!

HertzBeat 介紹

HertzBeat 是一款開源,易用友好的實時監控工具,無需Agent,擁有強大自定義監控能力。
  • 集監控-告警-通知為一體,支援對應用服務,資料庫,作業系統,中間件,雲原生,網絡等監控,門檻值告警,告警通知(郵件微信釘釘飛書短信 Slack Discord Telegram)。
  • 其将Http,Jmx,Ssh,Snmp,Jdbc等協定規範可配置化,隻需配置YML就能使用這些協定去自定義采集任何您想要采集的名額。您相信隻需配置YML就能立刻适配一個K8s或Docker等新的監控類型嗎?
  • HertzBeat 的強大自定義,多類型支援,易擴充,低耦合,希望能幫助開發者和中小團隊快速搭建自有監控系統。

在 HertzBeat 5分鐘搞定對 SpringBoot2 應用的監控

操作前提,您已擁有 SpringBoot2 應用環境和 HertzBeat 環境。

  • HertzBeat 安裝部署文檔 hertzbeat.com/docs/start/…

一. 在 SpringBoot2 應用端暴露出actuator名額接口,它将提供 metrics 接口資料。

  1. 開啟 SpringBoot Actuator Endpoint 暴露出metrics health env名額接口
management:
  endpoints:
    web:
      exposure:
        include:
          - 'metrics'
          - 'health'
          - 'env'
    enabled-by-default: on
複制代碼           
  1. 重新開機後測試通路名額接口 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 應用監控

  1. 點選新增 SpringBoot2 監控

路徑:菜單 -> 應用服務監控 -> SpringBoot2 -> 新增SpringBoot2監控

使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
  1. 配置新增監控 SpringBoot2 所需參數

在監控頁面填寫 SpringBoot2應用 對端IP,服務端口(預設8080),賬戶密碼等,最後點選确定添加即可。

其他參數如采集間隔,逾時時間等可以參考幫助文檔 hertzbeat.com/docs/help/

使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
  1. 完成✅,現在我們已經添加好對 SpringBoot2應用 的監控了,檢視監控清單即可看到我們的添加項。
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
  1. 點選監控清單項的操作->監控詳情圖示 即可浏覽 SpringBoot2應用 的實時監控名額資料。
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
  1. 點選監控曆史詳情TAB 即可浏覽 SpringBoot2應用 的曆史監控名額資料圖表。
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警

DONE!完成啦!不需要我們去部署agent或者各種繁瑣操作,是不是很簡單

  • 隻需一步在 HertzBeat 監控頁面配置IP端口添加 SpringBoot2應用 監控即可

通過上面我們就完成了對 SpringBoot2應用 的監控,我們可以在 HertzBeat 随時檢視SpringBoot2應用的各種名額狀态和可用性。

當然不可能人工一直實時檢視名額,監控往往伴随着告警門檻值,當 SpringBoot2應用 的性能名額超出我們的門檻值或SpringBoot2應用本身異常時,能及時的通知到我們對應的負責人,負責人收到通知處理,這樣才是一個完整的監控告警流程。

接下來我們就來一步一步示範如何配置 HertzBeat 系統裡的門檻值告警通知,當 SpringBoot2應用 的名額異常時,及時通知給我們

三. 在 HertzBeat 系統添加 SpringBoot2應用 名額門檻值告警

  1. 對某個重要名額配置告警門檻值

路徑:菜單 -> 門檻值規則 -> 新增門檻值

  • 選擇配置的名額對象,SpringBoot2應用 監控主要是 堆棧記憶體 線程等相關名額,我們舉例對 狀态線程數 threads -> threads 這個名額進行門檻值設定, 當runnable狀态的線程數量大于300時發出告警。
  • 這裡我們就配置當此名額size,state 的 equals(state,"runnable"") && size>300 時發出告警,告警級别為警告告警,三次即觸發,具體如下圖。
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
  1. 新增消息通知接收人
配置接收人,讓告警消息知道要發給誰,用什麼方式發。

路徑:菜單 -> 告警通知 -> 告警接收人 -> 新增接收人

消息通知方式支援 郵件,釘釘,企業微信,飛書,WebHook,短信等,我們這裡以常用的釘釘為例。

  • 參照此 幫助文檔 hertzbeat.com/docs/help/a… 在釘釘端配置機器人,設定安全自定義關鍵詞HertzBeat,擷取對應access_token值。
  • 在 HertzBeat 配置接收人參數如下。

【告警通知】->【新增接收人】 ->【選擇釘釘機器人通知方式】->【設定釘釘機器人ACCESS_TOKEN】-> 【确定】

使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
  1. 配置關聯的告警通知政策⚠️ 【新增通知政策】-> 【将剛設定的接收人關聯】-> 【确定】
配置告警通知政策,讓告警消息與接收人綁定,這樣就能決定哪些告警發給哪個人。
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警

完畢,現在坐等告警消息過來啦。叮叮叮叮

[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配置檔案自定義添加修改想要監控的性能名額。
使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警