使用 HertzBeat 對 API 閘道器 Apache ShenYu 的監控實踐

語言: CN / TW / HK

使用 HertzBeat 對 API 閘道器 Apache ShenYu 進行監控實踐,5分鐘搞定!

Apache ShenYu 介紹

Apache ShenYu 一個非同步的,高效能的,跨語言的,響應式的 API 閘道器。

  • 代理:支援Apache Dubbo,Spring Cloud,gRPC,Motan,SOFA,TARS,WebSocket,MQTT

  • 安全性:簽名,OAuth 2.0,JSON Web令牌,WAF外掛

  • API治理:請求、響應、引數對映、Hystrix、RateLimiter外掛

  • 可觀測性:跟蹤、指標、日誌記錄外掛

  • 儀表板:動態流量控制,使用者選單許可權的視覺化後端

  • 擴充套件:外掛熱插拔,動態載入

  • 叢集:NGINX、Docker、Kubernetes

  • 語言:提供.NET,Python,Go,Java客戶端用於API註冊

HertzBeat 介紹

HertzBeat 是一款開源,易用友好的實時監控系統,無需Agent,擁有強大自定義監控能力。
支援對應用服務,資料庫,作業系統,中介軟體,雲原生等監控,閾值告警,告警通知(郵件微信釘釘飛書)。
HertzBeat 的強大自定義,多型別支援,易擴充套件,低耦合,希望能幫助開發者和中小團隊快速搭建自有監控系統。

在 HertzBeat 5分鐘搞定監控 Apache ShenYu

操作前提,您已擁有 ShenYu 環境和 HertzBeat 環境。

一. 在 ShenYu 端開啟metrics外掛,它將提供 metrics 介面資料。

外掛是 Apache ShenYu 閘道器的核心執行者,指標資料採集在 ShenYu 也是以外掛的形式整合的 - Metrics外掛
Metrics外掛是閘道器用來監控自身執行狀態(JVM相關),請求響應等相關指標進行監測。

  1. 在閘道器的 pom.xml 檔案中新增 metrics外掛 的依賴。

        <dependency>
            <groupId>org.apache.shenyu</groupId>
            <artifactId>shenyu-spring-boot-starter-plugin-metrics</artifactId>
            <version>${project.version}</version>
        </dependency>
  1. metric外掛 採集預設是關閉的, 在閘道器的配置yaml檔案中編輯如下內容:

shenyu:
  metrics:
    enabled: true  #設定為 true 表示開啟
    name : prometheus 
    host: 127.0.0.1 #暴露的ip
    port: 8090 #暴露的埠
    jmxConfig: #jmx配置
    props:
      jvm_enabled: true #開啟jvm的監控指標
  1. 重啟 ShenYu閘道器, 開啟瀏覽器或者用curl 訪問 http://ip:8090, 就能看到metric資料了。

二. 在 HertzBeat 監控頁面新增 ShenYu 監控

  1. 點選新增 ShenYu 監控

路徑:選單 -> 中介軟體監控 -> ShenYu監控 -> 新增ShenYu監控

  1. 配置監控 ShenYu 所需引數

在監控頁面填寫 ShenYu 服務IP監控埠(預設8090),最後點選確定新增即可。
其他引數如採集間隔超時時間等可以參考幫助文件 https://hertzbeat.com/docs/help/shenyu/

  1. 完成✅,現在我們已經新增好對 ShenYu 的監控了,檢視監控列表即可看到我們的新增項。

  1. 點選監控列表項的操作->監控詳情圖示 即可瀏覽 ShenYu 的實時監控指標資料。

  1. 點選監控歷史詳情TAB 即可瀏覽 ShenYu 的歷史監控指標資料圖表📈。

DONE!完成啦!通過上面幾步,總結起來其實也就只用兩步

  • 第一步開啟 ShenYu 端metrics外掛功能

  • 第二步在 HertzBeat 監控頁面配置IP埠新增監控即可

通過上面的兩步我們就完成了對 Apache ShenYu 的監控,我們可以在 HertzBeat 隨時檢視監控詳情指標資訊來觀測其服務狀態。 當然只是看肯定是不完美的,監控往往伴隨著告警閾值,當 ShenYu 的某些指標超出我們的期望值或異常時,能及時的通知到我們對應的負責人,負責人收到通知處理問題,這樣才是一個完整的監控告警流程。 

接下來我們就來一步一步演示如何配置 HertzBeat 系統裡的閾值告警通知,讓 ShenYu 的指標異常時,及時通知給我們

三. 在 HertzBeat 系統新增 ShenYu 指標閾值告警

  1. 對某個重要指標配置告警閾值

路徑:選單 -> 告警閾值 -> 新增閾值

  • 選擇配置的指標物件,ShenYu 監控有非常多的指標,我們舉例對 開啟的檔案描述符的數量 process_open_fds -> value 這個指標進行閾值設定, 當服務端開啟檔案描述符數量大於3000時發出告警。

  • 這裡我們就配置當此指標process_open_fdsvalue>3000 時發出告警,告警級別為警告告警,三次即觸發,具體如下圖。

  1. 新增訊息通知接收人

配置接收人,讓告警訊息知道要發給誰,用什麼方式發。

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

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

  • 參照此幫助文件 https://hertzbeat.com/docs/help/alert_dingtalk 在釘釘端配置機器人,設定安全自定義關鍵詞HertzBeat,獲取對應access_token值。

  • 在 HertzBeat 配置接收人蔘數如下。

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

  1. 配置關聯的告警通知策略⚠️ 【新增通知策略】-> 【將剛設定的接收人關聯】-> 【確定】

配置告警通知策略,讓告警訊息與接收人繫結,這樣就能決定哪些告警發給哪個人。

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

[HertzBeat告警通知]
告警目標物件 : shenyu.process_open_fds.value
所屬監控ID : 205540620349696
所屬監控名稱 : SHENYU_localhost
告警級別 : 警告告警
告警觸發時間 : 2023-01-08 22:17:06
內容詳情 : 請注意⚠️ ShenYu閘道器開啟的檔案描述符的數量為 3044 超過3000

小結

這篇實踐文章帶我們體驗瞭如何使用 HertzBeat 監控 Apache ShenYu 指標資料,可以發現將 監控-告警-通知 集一體的 HertzBeat 在操作與使用方面更加的便捷,在頁面上簡單點一點就能把 ShenYu 納入監控,再也不需要部署多個元件,寫多個有門檻的YML配置檔案了。

Apache ShenYu Github: https://github.com/apache/shenyu
HertzBeat Github: https://github.com/dromara/hertzbeat

歡迎瞭解使用Star支援哦!

只需要一條docker命令即可安裝體驗heartbeat :
docker run -d -p 1157:1157 --name hertzbeat tancloud/hertzbeat