精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本精品另类| 99久久久国产精品无码网爆| 天天躁日日躁狠狠躁欧美| **欧美大码日韩| 国产精品啪视频| 小早川怜子久久精品中文字幕| 欧美成人h版| 欧美极品少妇xxxxⅹ高跟鞋| 91精品久久久久久| 久久久综合久久久| 人人精品亚洲| 欧美色图天堂网| 伊人久久在线观看| 神马久久久久| 三级欧美在线一区| 尤物精品国产第一福利三区| 一级黄色片国产| 神马久久午夜| 亚洲美腿欧美偷拍| 日本成人黄色| 欧美熟妇另类久久久久久不卡 | 99热国产精品| 成人性生交大片免费看小说| 午夜精品一区二| 韩国在线一区| 久久久精品久久久| 91激情视频在线观看| 中文字幕一区二区三区日韩精品| 欧美亚洲禁片免费| 久久亚洲中文字幕无码| 成人在线免费看片| 国产精品福利av | 99久久久久国产精品| 亚洲美女视频网| 久久人妻少妇嫩草av无码专区| 久久久国产精品入口麻豆| 欧美性感一区二区三区| 国产午夜伦鲁鲁| 丁香花电影在线观看完整版| 亚洲欧美区自拍先锋| 在线观看国产一区| 成人影视在线播放| 久久色在线观看| 国产呦系列欧美呦日韩呦| 亚洲av无码国产精品久久不卡 | 欧美成年黄网站色视频| 久久免费视频色| 精品九九九九| 婷婷国产在线| 久久蜜臀中文字幕| 久久综合精品一区| 日本电影一区二区在线观看| 97久久超碰精品国产| 国产v亚洲v天堂无码| 亚洲va天堂va欧美ⅴa在线| 国产精品白丝av| 91精品免费| 亚洲AV无码国产精品午夜字幕| 国产精品一区二区x88av| 5g影院天天爽成人免费下载| www.超碰在线.com| 成人丝袜视频网| 国内一区二区三区在线视频| 日本成人一区| 欧美激情一区在线| 一区二区精品视频| 最爽无遮挡行房视频在线| 亚洲综合视频网| www.av91| 老司机成人影院| 欧美在线播放高清精品| 怡红院亚洲色图| 精品国产伦一区二区三区观看说明 | 国产一二三在线视频| 国产va在线视频| 欧美日韩美女在线观看| 国产天堂在线播放| 91精品国产自产观看在线 | 天天做天天干天天操| 久久久久九九精品影院| 亚洲精品wwww| 成人网站免费观看| 亚洲图区在线| 深夜福利国产精品| 久久成人国产精品入口| 国产一区二区三区久久久久久久久| 日本欧美中文字幕| 在线观看视频二区| 成人综合在线网站| 青娱乐一区二区| 在线视频观看国产| 黑人与娇小精品av专区| 欧美wwwwwww| 精品视频自拍| 中文字幕欧美精品在线| 久久黄色免费网站| 日韩高清一区二区| 91精品国产综合久久久久久丝袜| 日本天堂影院在线视频| 成人欧美一区二区三区视频网页| 日本人体一区二区| a成人v在线| 亚洲精品99久久久久中文字幕| 纪美影视在线观看电视版使用方法| 91tv精品福利国产在线观看| 欧洲亚洲免费视频| 国产99视频在线| 久久久www成人免费毛片麻豆 | 免费成人深夜蜜桃视频| 一区在线免费观看| 国产有码一区二区| 蜜桃成人在线视频| 亚洲成人自拍一区| 久久久精品高清| 亚洲欧美日本伦理| 久久久久久国产精品久久| 黄色av一区二区| 成人h版在线观看| 一本—道久久a久久精品蜜桃| 欧美a级在线观看| 欧美一级片在线观看| 久久久久久成人网| 亚洲欧美久久| 精品久久久久久一区| av黄色在线| 欧美日韩一区二区三区免费看| 欧美精品黑人猛交高潮| 亚洲天堂偷拍| 成人av中文| 亚洲色图美国十次| 欧美一区二区三区思思人| 91精品国自产在线| 老**午夜毛片一区二区三区 | 国产精品久久久久无码av| 日本国产欧美一区二区三区| 色一情一乱一区二区三区| 曰韩精品一区二区| 麻豆网站免费观看| 偷拍欧美精品| 国产主播喷水一区二区| aaa在线观看| 欧美中文字幕久久| 永久免费av无码网站性色av| 久久精品九九| 久久久久久九九| 日韩精品极品| 日韩精品小视频| 四虎精品永久在线| 久久精品欧美一区二区三区不卡 | 久久九九全国免费| 韩国日本在线视频| 国产精品亚洲片在线播放| 国产不卡av在线| 国产毛片在线看| 欧美网站大全在线观看| 永久免费观看片现看| 毛片不卡一区二区| 一区二区三区偷拍| 国产亚洲亚洲国产一二区| 欧美成aaa人片免费看| 精品人妻少妇AV无码专区 | 爱福利视频一区| 国产人妖在线播放| 亚洲午夜三级在线| 国产精品无码专区| 久久综合狠狠| 亚洲一区在线免费| 一区二区在线视频观看| 91国产美女在线观看| 狠狠狠综合7777久夜色撩人| 欧美午夜理伦三级在线观看| 亚洲精品卡一卡二| 国产91富婆露脸刺激对白| 热99这里只有精品| 久久最新网址| 成人黄色免费网站在线观看| 在线欧美三级| 亚洲男女自偷自拍图片另类| 伊人22222| 亚洲一区二区三区四区在线| 久久中文字幕人妻| 精品一区二区三区免费| 日韩精品一区二区免费| 久久不见久久见中文字幕免费| 成人国产在线视频| 久久青青色综合| 亚洲三级免费看| www.国产麻豆| 在线视频你懂得一区二区三区| 麻豆天美蜜桃91| 91丨porny丨在线| 国产在线视频三区| 免费久久99精品国产自在现线| 亚洲一区二区三区色| 久久影院资源站| 国产在线视频一区| 伊人久久在线| 欧美激情亚洲国产| eeuss影院www在线观看| 欧美va亚洲va在线观看蝴蝶网| 无码人妻精品一区二区三区9厂 | 黑森林福利视频导航| 欧美gayvideo| 精品久久一区二区三区蜜桃| 全球中文成人在线| 18一19gay欧美视频网站| 二区三区四区高清视频在线观看| 亚洲欧美激情一区| 国产刺激高潮av| 欧美一区午夜精品| 中文字幕av在线免费观看| 性感美女久久精品| 精品国产视频在线观看| 国产欧美精品一区aⅴ影院| 国产xxxxxxxxx| 国产成人在线视频网址| 亚洲综合欧美激情| 久久精品中文| 欧美精品久久久久久久久久久| 91欧美日韩| 日韩久久久久久久| 蜜桃a∨噜噜一区二区三区| 91视频免费进入| 国产一区二区视频在线看| 国产精品aaaa| 在线一区av| 91av在线精品| 黄视频网站在线观看| 欧美国产日韩二区| av片在线观看网站| 久久精品小视频| 91社区在线观看播放| 亚洲乱码一区二区| 手机亚洲第一页| 亚洲精品国产免费| 五月婷在线视频| 精品盗摄一区二区三区| 亚洲精品一区二区三区新线路| 欧美一区二区三区的| 国产一区二区视频免费观看| 欧美午夜一区二区三区 | 精品捆绑调教一区二区三区| 欧美国产中文字幕| 日韩精品分区| 欧美激情亚洲精品| 91超碰在线免费| 午夜精品福利电影| 黄色aa久久| 秋霞av国产精品一区| 丝袜诱惑一区二区| 日韩美女免费视频| 欧美日韩尤物久久| 国产欧美一区二区三区四区| 国产精品1区在线| 97在线中文字幕| eeuss国产一区二区三区四区| www国产亚洲精品| 精品中国亚洲| 欧美午夜精品久久久久免费视| 精品一区电影| 国产四区在线观看| 国产主播一区| 69堂免费视频| 日韩高清一区在线| 波多野结衣国产精品| 国产一二精品视频| 亚洲精品国产成人av在线| 91麻豆国产福利在线观看| 免费一级做a爰片久久毛片潮| 国产精品嫩草久久久久| 91麻豆免费视频网站| 亚洲国产精品一区二区久久恐怖片 | 极品av少妇一区二区| 大肉大捧一进一出好爽视频| 三级成人在线视频| 超碰91在线播放| 91在线观看免费视频| 丁香激情五月少妇| 一区二区三区在线观看视频| 国产香蕉视频在线| 欧美色图一区二区三区| 亚洲国产剧情在线观看| 精品调教chinesegay| 69视频在线| 97国产suv精品一区二区62| 国产成人精品123区免费视频| 亚洲一区二区三区久久| 日韩大片在线免费观看| 一级日韩一区在线观看| 亚洲精品三级| 色婷婷一区二区三区av免费看| av成人老司机| 亚洲女人久久久| 精品国产户外野外| 国产露脸91国语对白| 亚洲毛片在线看| 69xxx在线| 国产精品毛片a∨一区二区三区|国 | 免费观看一级特黄欧美大片| 999久久久精品视频| 菠萝蜜视频在线观看一区| 少妇视频在线播放| 精品日本美女福利在线观看| 国产精品日韩无码| 精品亚洲一区二区三区| 黑人精品视频| 国产欧美 在线欧美| 久久av中文| 妞干网在线视频观看| 国产一区二区三区不卡在线观看| 亚洲综合网在线观看| 亚洲已满18点击进入久久| 国产精品xxxxxx| 精品亚洲男同gayvideo网站| 欧美家庭影院| 91嫩草在线视频| 成人综合专区| 日本精品久久久久中文字幕| 不卡视频在线看| 欧美激情国产精品免费| 欧美日韩成人在线| 国产尤物视频在线| 热re99久久精品国产66热| 福利电影一区| 国产911在线观看| 精品一区二区三区免费播放| 色噜噜噜噜噜噜| 在线观看一区日韩| 国产资源在线播放| 欧美中文在线观看| 欧美激情极品| 霍思燕三级露全乳照| 国产91丝袜在线18| 免费毛片在线播放免费| 91精品欧美一区二区三区综合在 | 欧美激情第三页| 一区二区三区四区高清视频| 亚洲一区 在线播放| 国产精品99久久久久久久女警 | 黄网站在线播放| 成人黄色大片在线免费观看| 999成人精品视频线3| 日日干夜夜操s8| 国产精品电影一区二区三区| 亚洲综合一区中| 久久精品国产亚洲一区二区| 日韩一级特黄| 天天干天天色天天爽| 国产一区二区三区香蕉| 黄色a级片在线观看| 日韩一区二区中文字幕| 欧美四级在线| 国产精品免费视频一区二区| 一本综合精品| 亚欧洲乱码视频| 在线免费观看日本欧美| 1769视频在线播放免费观看| 国产欧美va欧美va香蕉在| 亚洲国产精品综合久久久| 国产又粗又猛又爽又黄| 亚洲一区二区三区自拍| 午夜视频福利在线| 日韩美女毛茸茸| 国产精品成久久久久| 国产成人精品一区二区在线小狼| 亚洲福利一区二区三区| 日韩av高清在线| 国产精品视频xxxx| 欧美99久久| 91玉足脚交白嫩脚丫| 色久综合一二码| 国产精品久久久久久福利| 97人人澡人人爽| 在线亚洲自拍| 91麻豆精品久久毛片一级| 日韩女优毛片在线| 三级在线观看视频| 一区二区在线观看网站| 高清免费成人av| 无码视频一区二区三区| 精品国产美女在线| 国产精品qvod| 熟女人妇 成熟妇女系列视频| 亚洲欧洲av在线| 天堂av中文字幕| 国产精品高潮呻吟视频| 中出一区二区| 四虎影成人精品a片| 在线不卡中文字幕播放| 2019中文字幕在线电影免费| 视频在线99| 成人激情黄色小说| 中文字幕乱码人妻二区三区| 久久青草福利网站| 波多野结衣一区| 最近日本中文字幕| 日韩一区二区麻豆国产| 免费观看成人性生生活片| 欧美极品少妇无套实战| 国产精品乱人伦|