精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

徹底搞懂Spring Boot的系統監控機制

開發 架構
今天我們主要介紹了基于 Spring 產生的 Spring Boot 框架。其中,Spring Boot 內置的 Actuator 組件為開發人員管理應用程序的運行時狀態提供了更加直接且高效的手段。

在 Java 世界中,Spring 框架已經是最主流的開發框架了。但傳統 Spring 框架存在一個明顯的問題,那就是 缺少系統監控功能。如果想要獲取一個 Spring 應用程序的線程工作狀態以及 JVM 性能指標等各種運行時數據,我們就不得不借助一些第三方工具,這在云原生時代無疑加重了系統運維管理的成本。

好在,Spring Boot 框架誕生了,它不僅繼承了 Spring 框架原有的優良特性,而且又引入了一個創新型的技術組件,即 Spring Boot Actuator,該組件可以用來實現內嵌的系統監控功能,完美地解決了原有 Spring 框架缺少系統監控功能的問題。讓我們一起來看一下吧!

Spring Boot Actuator

Actuator 組件是 Spring Boot 中承載系統監控功能的組件,該組件通過一系列 HTTP 端點提供監控能力。Spring Boot 的強大之處就在于為開發人員內置了一組非常簡單而實用的原生監控端點。在接下來的內容中,我們先介紹一些常用的 Actuator 端點。

原生 Actuator 端點

說到監控端點,你可能會覺得這個概念有點兒抽象。實際上,所謂的監控端點,就是一個普通的 HTTP 請求地址。當我們啟動一個 Spring Boot 應用程序,可以訪問 http://localhost:8080/actuator 這個 HTTP 地址來獲取所有可用的端點信息。

{
     "_links":{
         "self":{
             "href":"http://localhost:8080/actuator",
             "templated":false
         },
         "health-path":{
             "href":"http://localhost:8080/actuator/health/{*path}",
             "templated":true
         },
         "health":{
             "href":"http://localhost:8080/actuator/health",
             "templated":false
         },
         "info":{
             "href":"http://localhost:8080/actuator/info",
             "templated":false
         }
     }
 }

可以看到,這些都是 HATEOAS 風格的 HTTP 端點信息。我們在這里找到了兩個非常常用的端點,即 health 端點和 info 端點。以 health 端點為例,我們可以通過該端點進一步獲取系統的健康狀態信息。

{
     "status":"UP",
     "components":{
         "diskSpace":{
             "status":"UP",
             "details":{
                 "total":201649549312,
                 "free":3434250240,
                 "threshold":10485760
             }
         },
         "ping":{
             "status":"UP"
         }
     }
 }

可以看到,這里展示了當前系統的磁盤空間系統以及網絡連接信息。事實上,在 Spring Boot Actuator 中包含了一組類似 health 端點的監控端點。我們可以把這些端點按照各自提供的功能進行分類,包括應用配置、度量指標和操作控制這三大類。

圖 1 Spring Boot Actuator 的三大類原生端點圖 1 Spring Boot Actuator 的三大類原生端點

其中,應用配置類端點的作用就是提供各種 Spring Boot 應用程序相關的配置信息,典型的包括/beans、/env、/info 等端點。通過這些端點,開發人員可以獲取應用程序中所包含的 JavaBean 信息、環境變量信息以及各種自定義的配置信息等。

圖 2 常見的應用配置類端點圖 2 常見的應用配置類端點

顧名思義,度量指標類的監控端點一方面用來獲取內存信息、線程信息等各種重要的度量指標,同時也可以正確反映應用程序的健康指標信息,這部分的常見端點有/metrics、/threaddump 和/health 端點等。

圖 3 常見的度量指標類端點圖 3 常見的度量指標類端點

相比這兩類端點,操作控制類的端點則數量較少,常見的只有用來對應用程序執行關閉操作的/shutdown 端點。

如果 Spring Boot Actuator 默認提供的端點信息不能滿足需求,我們還可以對其進行修改和擴展。常見實現方案有兩種,一種是擴展現有的監控端點,另一種是自定義新的監控端點。

擴展 Actuator 端點

接下來,我們來關注一下如何在現有的監控端點上添加定制化功能。我們同樣以前面已經介紹的/health 端點為例展開討論。

在 Spring Boot 中,Health 端點用于檢查正在運行的應用程序健康狀態。Health 端點信息的豐富程度取決于當下應用程序所處的環境,一個現實環境下的 Health 端點信息如下所示。通過這些信息,我們可以判斷該環境中包含了 MySQL 數據庫。

{
     "status":"UP",
     "components":{
         "db":{
             "status":"UP",
             "details":{
                 "database":"MySQL",
                 "result":1,
                 "validationQuery":"/* ping */ SELECT 1"
             }
         },
         "diskSpace":{
             "status":"UP",
             "details":{
                 "total":201649549312,
                 "free":3491287040,
                 "threshold":10485760
             }
         },
         "ping":{
             "status":"UP"
         }
 }
}

現在,我們希望在 Health 端點中暴露某個應用程序的當前運行時狀態。這時候就可以自定義一個 CustomHealthIndicator 端點。我們明確,健康狀態信息是由 HealthIndicator 接口從 Spring 的 ApplicationContext 中進行獲取的,所以這個 CustomHealthIndicator 需要實現 HealthIndicator 接口。

@Component
publicclass CustomHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        try {
        URL url = new URL("http://localhost:8083/health/");
        HttpURLConnection conn = (HttpURLConnection)
        url.openConnection();
           int statusCode = conn.getResponseCode();
           if (statusCode >= 200 && statusCode < 300) {
               return Health.up().build();
           } else {
               return Health.down().withDetail("HTTP Status Code", statusCode).build();
           }
        } catch (IOException e) {
           return Health.down(e).build();
        }
    }
}

我們需要提供 health() 方法的具體實現并返回一個 Health 結果對象。該結果對象應該包括一個狀態,并且可以根據需要添加任何細節信息。

以上代碼用一種簡單而直接的方式判斷某個服務是否正在運行。我們構建一個 HTTP 請求,然后根據 HTTP 響應得出健康診斷的結論。如果 HTTP 響應的狀態碼處于 200~300 之間,我們就認為該服務正在運行,Health.up().build() 方法將返回一種 UP 響應,如下所示。

{
    "status": "UP",
    "details": {
        "custom":{
            "status": "UP"
        }
        …
    }
}

如果狀態碼不是處于這個區間(例如返回的是 404 代表服務不可用)就返回一個 DOWN 響應并給出具體的狀態碼,如下所示。

{
    "status": "DOWN",
    "details": {
        "custom":{
            "status": "DOWN",
            "details": {
                "HTTP Status Code": "404"
            }
        },
        …
    }
}

如果 HTTP 請求直接拋出了異常,我們同樣返回一個 Down 響應,同時把異常信息一起返回,效果如下所示:

{
    "status": "DOWN",
    "details": {
        "custom":{
            "status": "DOWN",
            "details": {
                "error": "java.net.ConnectException: Connection refused: connect"
            }
        },
        …
    }
}

顯然,通過擴展 Health 端點為我們實時監控系統中各個服務的正常運行狀態提供了很好的支持,你可以根據需要構建一系列有用的 HealthIndicator 實現類并添加報警等監控手段。

自定義 Actuator 端點

除了對現有的監控端點進行動態擴展,有時候我們還可以根據業務場景的需要創建新的監控端點。這里舉一個簡單的例子?,F在,假設我們的需求是獲取當前操作系統的計算機名稱,那么就可以實現這樣一個新的 CustomEndpoint。

@Configuration
@Endpoint(id = "computername", enableByDefault=true)
public class CustomEndpoint {
    @ReadOperation
    public Map<String, Object> getMySystemInfo() {
        Map<String,Object> result= new HashMap<>();
        Map<String, String> map = System.getenv();
        result.put("computername",map.get("COMPUTERNAME"));
        return result;
    }
}

可以看到,CustomEndpoint 通過 System.getenv() 方法獲取了系統的環境變量,然后再通過環境變量獲取了計算機名稱?,F在,讓我們執行這個 CustomEndpoint 端點,得到的結果是這樣的。

{
    "computername":"LAPTOP-EQB59J5P"
}

Spring Boot Admin

Spring Boot 還基于 Actuator 組件為開發人員提供了可視化的系統監控組件,這就是 Spring Boot Admin。通過 Admin 組件,我們可以獲取系統運行時的各項關鍵指標,并通過友好的交互界面進行動態管理。

Spring Boot Admin 會消費前面介紹到的各種 Actuator 的端點信息并將這些信息進行統計和聚合,它的基本原理是這樣的。

圖 4 Spring Boot Admin 基本原理圖圖 4 Spring Boot Admin 基本原理圖

從上圖中,我們首先需要明確存在一個服務器組件 Admin Server,它負責從各個 Admin Client 所暴露的 Actuator 端點中收集各種監控信息。注意,這里的 Admin Server 和 Admin Client 本質上都是一個個 Spring Boot 應用程序。然后,Admin Server 會對這些監控信息進行加工處理,并最終通過 Web UI 以可視化的效果展示給開發人員。

Spring Boot Admin 的功能非常強大,包括顯示健康狀態、JVM、內存等度量明細信息,以及線程、HTTP 跟蹤等監控信息?;?Admin Server,這些功能都通過可視化的 UI 界面進行展示。這里,我截取了幾張效果圖。這是 Admin Server 監控信息的主界面。

圖 5 Admin Server 監控信息主界面圖 5 Admin Server 監控信息主界面

在這里,我們看到了熟悉的“Health”信息。然后,我們注意到在界面的左下角有一個“JVM”選項,點擊該選項可以獲取與 JVM 相關的監控信息。

圖 6 Admin Server 中的 JVM 監控信息圖 6 Admin Server 中的 JVM 監控信息

最后,我們來看一下非常有用的“Thread Dump”可視化功能。Admin Server 通過這一功能提供了一個連續性的可視化 Dump 快照信息監控界面。

圖 7 Admin Server 中的 Thread Dump 信息圖 7 Admin Server 中的 Thread Dump 信息

總結

好了,以上就是我這節課想要和你分享的內容,最后我們來對今天的內容進行一個簡單的梳理吧!

今天我們主要介紹了基于 Spring 產生的 Spring Boot 框架。其中,Spring Boot 內置的 Actuator 組件為開發人員管理應用程序的運行時狀態提供了更加直接且高效的手段。

在今天的內容中,我們引入了 Actuator 組件并介紹了該組件所提供的一系列核心端點。更為重要的是,我們還重點分析了如何對 Actuator 端點進行擴展以及創建自定義 Actuator 端點的實現方法。這些實現方法都可以直接應用到日常開發過程中。而作為延伸,在今天內容的最后,我們還分析了 Spring Boot Admin 這一組件提供的強大可視化監控效果。

圖片圖片

責任編輯:武曉燕 來源: 程序員技術充電站
相關推薦

2023-09-28 08:15:05

SpringBean加載

2025-03-17 00:21:00

2020-11-02 11:40:24

Node.jsRequire前端

2020-12-07 06:19:50

監控前端用戶

2023-07-27 08:53:44

2025-04-21 04:00:00

2023-10-07 08:35:07

依賴注入Spring

2021-12-29 17:29:07

KubernetesEvents集群

2023-05-29 08:12:38

2017-07-20 16:55:56

Android事件響應View源碼分析

2021-02-01 11:30:13

React前端調度

2024-05-11 08:31:20

中斷機制插隊機制React

2024-01-03 13:39:00

JS,Javascrip算法

2025-01-13 16:00:00

服務網關分布式系統架構

2025-04-11 05:55:00

2023-10-18 10:55:55

HashMap

2025-06-30 00:32:43

策略模式算法MyBatis

2017-12-05 17:44:31

機器學習CNN卷積層

2020-10-14 08:50:38

搞懂 Netty 線程

2025-05-06 01:14:00

系統編程響應式
點贊
收藏

51CTO技術棧公眾號

少妇久久久久久被弄高潮| 日韩在线第三页| 免费成人在线看| 久久在线精品| 久久人人爽亚洲精品天堂| 日本少妇一级片| 亚洲mmav| 亚洲成人激情综合网| 日韩在线导航| 免费观看黄一级视频| 日韩av午夜在线观看| 欧美放荡办公室videos4k| 国产熟妇久久777777| 日韩一级淫片| 欧美专区亚洲专区| www精品久久| 在线毛片网站| 久久这里只有精品视频网| 51国产成人精品午夜福中文下载| 男人日女人网站| 欧美黄色一级视频| 中日韩美女免费视频网址在线观看| 一级黄色免费视频| 天堂久久一区| 欧美私模裸体表演在线观看| 国产无限制自拍| 黄在线免费看| 国产蜜臀av在线一区二区三区| 粉嫩高清一区二区三区精品视频| 中文字幕在线视频第一页| 亚洲三级网站| 欧美激情视频一区二区三区不卡 | 99国产精品久| 91久久国产综合久久蜜月精品 | 99爱在线观看| 伊人婷婷欧美激情| 97超碰人人爱| 九色porny在线| 国产精品三级视频| 欧美亚洲另类久久综合| 四虎永久在线观看| 成人va在线观看| 成人3d动漫一区二区三区91| 国产精品无码久久av| 老司机精品视频在线| 国产精品678| 波多野结衣一区二区在线| 香蕉久久a毛片| 欧洲日韩成人av| 免费看一级视频| 欧美一级网站| 国产精品成人国产乱一区| 国产成人无码一区二区在线播放| 国产日韩欧美一区在线| 57pao成人国产永久免费| 日韩污视频在线观看| 日韩一级不卡| 欧美在线亚洲一区| 国产农村妇女aaaaa视频| 免费欧美日韩| 国产精品欧美风情| 在线免费观看视频网站| 精品一二三四区| 亚洲自拍av在线| 国内爆初菊对白视频| 99久久精品免费看| 久久综合九色欧美狠狠| 黄色在线视频观看网站| 国产日韩欧美一区二区三区乱码 | 91老司机精品视频| 精品人妻无码一区二区三区蜜桃一| 国产一区二区h| 成人综合电影| 欧美精品少妇| 国产精品成人一区二区艾草 | 免费在线观看视频一区| 国产玖玖精品视频| www.看毛片| 99久久精品免费看国产| 日韩欧美精品一区二区| 求av网址在线观看| 亚洲综合区在线| 自慰无码一区二区三区| 国产电影一区二区三区爱妃记| 欧美日韩国产另类一区| 成人做爰www看视频软件| 亚洲精品推荐| 久久艳片www.17c.com| 日本五十路女优| 日韩中文字幕91| 亚洲综合在线做性| 理论视频在线| 一区二区高清免费观看影视大全| 日韩欧美一区二| 亚洲免费看片| 亚洲欧美中文另类| 青青青在线免费观看| 久久国产精品毛片| 99国精产品一二二线| 男男电影完整版在线观看| 亚洲欧洲精品一区二区三区| 男人日女人下面视频| 亚洲国产伊人| 国产视频精品一区二区三区| 污污的视频在线免费观看| 亚洲人人精品| 亚洲最大av在线| 91精品专区| 欧美性xxxxhd| 国产在线观看免费播放| 久久一区二区三区喷水| 日本久久中文字幕| 亚洲欧美国产高清va在线播放| 欧美国产精品一区二区三区| 男人天堂av片| 国产精品一区二区三区四区在线观看 | 国产精品福利一区二区三区| 国产午夜福利在线播放| 视频一区视频二区欧美| 主播福利视频一区| 99超碰在线观看| 高清国产一区二区| 天天爱天天做天天操| 色综合一本到久久亚洲91| 亚洲福利视频网站| 欧美黄色一级网站| 久久99国产精品久久99果冻传媒| 人偷久久久久久久偷女厕| 国产美女高潮在线| 亚洲国产小视频| 久久99久久久| 国产成人免费在线观看不卡| 综合国产精品久久久| 成人在线免费av| 中文字幕日韩欧美在线| 亚洲av无码不卡| 国产亚洲欧美激情| 国产成人久久婷婷精品流白浆| 久久夜色精品国产噜噜av小说| 久久99青青精品免费观看| 91久久精品无码一区二区| 国产精品无圣光一区二区| 日日摸天天爽天天爽视频| 亚欧日韩另类中文欧美| 97av在线播放| 天堂av网在线| 91福利视频网站| www久久久久久久| 日本视频免费一区| 亚洲美女搞黄| 91精品福利观看| 久久精品99国产精品酒店日本| 亚洲怡红院av| 亚洲免费观看高清完整| 8x8x成人免费视频| 午夜欧美精品久久久久久久| 国产91精品一区二区绿帽| www.综合网.com| 亚洲精品电影在线| 无码人妻av免费一区二区三区| 久久久久久麻豆| 欧美精品久久久久久久久25p| 日韩系列欧美系列| 91超碰在线电影| а√天堂资源官网在线资源| 亚洲免费av网址| 中文字幕人妻一区二区在线视频 | 轻点好疼好大好爽视频| 精品久久97| 欧美在线性爱视频| 日本中文字幕电影在线免费观看| 欧美一二三在线| 久久精品国产亚洲AV无码麻豆| 91亚洲男人天堂| 激情五月婷婷久久| 91精品精品| 国外成人免费视频| 99久久婷婷国产综合精品首页| 精品国产欧美成人夜夜嗨| 亚洲精品成人电影| 色婷婷久久99综合精品jk白丝| 欧美性生交大片| 成人午夜大片免费观看| 日韩无套无码精品| 婷婷久久一区| 久久99九九| 日韩毛片免费看| 97在线免费视频| 91短视频版在线观看www免费| 日韩欧美国产精品| 亚洲av无码精品一区二区| 亚洲欧美日韩系列| 成人精品在线观看视频| 国产在线视频一区二区三区| 毛片在线播放视频| 天天射成人网| 麻豆传媒一区二区| 精品一区二区三区四区五区| 538国产精品视频一区二区| 超碰免费在线播放| 亚洲欧美在线一区| 欧美综合视频在线| 欧美日韩不卡一区二区| 国产精品久久久久久久妇| 亚洲欧美日韩一区二区| 国产伦精品一区二区三区视频女| 成人自拍视频在线| 91pony九色| 日本在线观看不卡视频| 激情深爱综合网| 中文字幕日韩一区二区不卡| 日韩av影视| 亚洲婷婷丁香| 国产原创精品| 欧美午夜网站| 国产自摸综合网| 欧美亚洲大片| 欧美最顶级的aⅴ艳星| 色黄网站在线观看| 久久亚洲精品国产亚洲老地址| 黄色片视频在线观看| 亚洲精品理论电影| 亚洲国产精品国自产拍久久| 欧美三级在线看| 波多野结衣一区二区三区在线| 欧美日韩免费在线观看| 久久精品亚洲无码| 亚洲综合丝袜美腿| 欧美成人三级视频| 亚洲欧美激情插| 欧美特黄一级片| 国产精品麻豆一区二区| 免费一级黄色录像| 中文字幕av在线一区二区三区| 黄色正能量网站| 99精品欧美一区二区蜜桃免费 | 国产欧美精品一区aⅴ影院| 成年人在线观看av| 99久久精品国产毛片| 人妻无码中文久久久久专区| 成年人网站91| 西西大胆午夜视频| 久久人人97超碰com| 少妇大叫太粗太大爽一区二区| 91碰在线视频| 国产男男chinese网站| 国产亚洲精品精华液| 三上悠亚影音先锋| 国产午夜精品一区二区三区嫩草 | 黄色免费成人| www污在线观看| 最新成人av网站| 女人和拘做爰正片视频| 亚洲欧美视频一区二区三区| 国产精品wwwww| 日本欧美一区二区三区乱码| 韩国中文字幕av| 久久国产精品免费| 永久免费黄色片| 岛国精品在线播放| 成人手机在线免费视频| 国产亚洲欧洲一区高清在线观看| 五月婷六月丁香| 亚洲另类一区二区| 日韩av一区二区在线播放| 欧美性xxxxxxxxx| 中文字幕第三页| 91精品国产aⅴ一区二区| 高潮一区二区三区乱码| 亚洲欧美国产一区二区三区 | 亚洲欧美另类久久久精品2019| 久草视频免费播放| 日韩欧美大尺度| 中文字字幕在线观看| 日韩免费成人网| 嫩草研究院在线| 久久久精品在线观看| h片视频在线观看| 国产精品日本精品| jizz久久精品永久免费| 欧美一区二区在线| 一本到12不卡视频在线dvd| 国产老熟妇精品观看| 免费不卡在线观看| 欧美熟妇精品一区二区蜜桃视频| 久久久久国产一区二区三区四区| 国产精品免费在线视频| 亚洲成人精品在线观看| 又污又黄的网站| 亚洲国产精品电影| 三区四区电影在线观看| 国自产精品手机在线观看视频| 97久久网站| 精品欧美国产一区二区三区不卡| 波多野结衣的一区二区三区| 隔壁人妻偷人bd中字| 久久国产精品99久久人人澡| 中国极品少妇videossexhd| 亚洲欧洲日本在线| 麻豆成人免费视频| 精品久久国产97色综合| 日本在线观看免费| 欧洲精品在线视频| www国产精品| av动漫免费观看| 日日骚欧美日韩| 午夜视频在线观看国产| 日韩理论片网站| www.欧美色| 亚洲精品久久在线| 男插女视频久久久| 国产日韩在线亚洲字幕中文| 日韩深夜影院| 毛片在线视频观看| 国产一区二区美女| 九九热免费在线| 色综合久久久网| 日韩在线免费看| 久久久久国产精品免费| 国产不卡精品在线| 伊人狠狠色丁香综合尤物| 日韩在线观看一区二区| 一本色道久久综合亚洲精品图片| 亚洲国产精品影院| 成人精品在线播放| 久久夜色精品国产欧美乱| 欧美一级在线| 亚洲欧洲一区二区福利| 日韩va亚洲va欧美va久久| 久久偷拍免费视频| 亚洲成人精品一区| 特黄视频在线观看| 久久久亚洲欧洲日产国码aⅴ| 欧美日韩黄网站| 国产在线视频在线| 国产精品一品二品| 精品爆乳一区二区三区无码av| 欧美一区二区三区男人的天堂| 麻豆影视在线观看_| 成人黄色中文字幕| 综合天天久久| 伊人久久久久久久久| 亚洲精品国久久99热| 国产黄色大片网站| 欧美区在线播放| 综合伊人久久| 黄色网页免费在线观看| 久久伊人中文字幕| 看黄色一级大片| 正在播放欧美视频| 伊人久久综合网另类网站| 在线视频亚洲自拍| 国产精品一区专区| 国产真实乱偷精品视频| 亚洲精品自拍视频| 成人美女视频| 亚洲欧美国产一区二区| 久久99精品国产麻豆婷婷洗澡| 波多野结衣不卡视频| 亚洲国产精品福利| 成人啊v在线| 中文字幕在线亚洲精品| 国产一区二区三区黄视频 | 99精品免费网| 久久成人激情视频| 欧美猛男gaygay网站| 超碰在线最新| 国产一区二区高清视频| 久久中文字幕一区二区三区| 丁香六月激情综合| 日韩免费观看高清完整版 | 国内外激情在线| 国产伦精品一区二区三区免| 麻豆亚洲精品| 午夜国产福利一区二区| 亚洲国产精品一区二区久| 欧美激情喷水| 国产又粗又爽又黄的视频| 成人国产在线观看| 最近中文字幕免费观看| 欧美精品在线网站| 亚洲男人都懂第一日本| 伊人成人222| 欧美日韩性生活视频| 嫩草香蕉在线91一二三区| 狠狠爱一区二区三区| 久久精品国产精品亚洲精品| 日本一二三区不卡| 在线亚洲男人天堂| 久久视频在线观看| 17c国产在线| 欧美午夜女人视频在线| 欧美性天天影视| 蜜桃欧美视频| 国产mv日韩mv欧美| 涩涩视频在线观看| 91产国在线观看动作片喷水| 久久久久国产| 欧美多人猛交狂配| 亚洲第一网站男人都懂|