SpringBoot通過(guò)注解監(jiān)測(cè)Controller接口的代碼示例
一、前言
在Spring Boot中,度量指標(biāo)(Metrics)是監(jiān)控和診斷應(yīng)用性能與行為的重要工具。Spring Boot通過(guò)集成Micrometer和Spring Boot Actuator,提供了強(qiáng)大的度量指標(biāo)收集與暴露功能。
二、度量指標(biāo)
1. Micrometer
Micrometer是一個(gè)應(yīng)用監(jiān)控門面(Facade),它提供了對(duì)多種監(jiān)控系統(tǒng)的支持,使得開發(fā)者可以在不修改代碼的情況下切換監(jiān)控后端,如Prometheus、Graphite、InfluxDB等。
Micrometer的核心功能
豐富的指標(biāo)收集:
系統(tǒng)指標(biāo):如CPU使用率、內(nèi)存占用、磁盤I/O、網(wǎng)絡(luò)I/O等,這些基礎(chǔ)資源的使用情況對(duì)于理解系統(tǒng)性能至關(guān)重要。
應(yīng)用指標(biāo):包括請(qǐng)求響應(yīng)時(shí)間、吞吐量、錯(cuò)誤率等,這些指標(biāo)直接反映了應(yīng)用的行為和性能。
自定義指標(biāo):開發(fā)者可以根據(jù)需要?jiǎng)?chuàng)建自定義指標(biāo),以監(jiān)控特定的業(yè)務(wù)流程或組件。
請(qǐng)求跟蹤:
雖然Micrometer本身主要關(guān)注于指標(biāo)收集,但它可以與Spring Cloud Sleuth等跟蹤系統(tǒng)結(jié)合使用,實(shí)現(xiàn)請(qǐng)求的分布式跟蹤。Sleuth通過(guò)添加跟蹤信息(如Trace ID、Span ID)到日志和指標(biāo)中,幫助開發(fā)者追蹤請(qǐng)求在整個(gè)微服務(wù)架構(gòu)中的路徑,從而更容易地診斷問(wèn)題。
集成日志記錄:
雖然Micrometer不直接處理日志記錄,但將Micrometer的監(jiān)控?cái)?shù)據(jù)與日志系統(tǒng)集成,可以形成更全面的可觀測(cè)性體系。例如,可以將Micrometer收集的指標(biāo)與日志文件中的Trace ID關(guān)聯(lián)起來(lái),從而更容易地將性能問(wèn)題與具體的請(qǐng)求或事務(wù)聯(lián)系起來(lái)。
2. Spring Boot Actuator
Spring Boot Actuator是Spring Boot的一個(gè)子項(xiàng)目,它提供了對(duì)應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能。通過(guò)引入Spring Boot Actuator,應(yīng)用可以暴露多個(gè)端點(diǎn)(Endpoints),這些端點(diǎn)提供了對(duì)應(yīng)用內(nèi)部信息的訪問(wèn),包括度量指標(biāo)、健康檢查、環(huán)境變量等。
三、使用@Timed, @Counted注解來(lái)完成接口的監(jiān)測(cè)功能
@Timed注解
該注解會(huì)統(tǒng)計(jì)方法調(diào)用的執(zhí)行耗時(shí)情況,包括什么類,哪個(gè)方法等信息。
@Counted注解
統(tǒng)計(jì)方法調(diào)用成功與失敗情況。
四、代碼示例
1. 引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>
2. 開啟配置
management.endpoints.web.base-path=/v/ac management.endpoints.web.exposure.include=*
3. 測(cè)試代碼
@Timed(value = "test_actuator", description = "test_actuator", histogram = true) @RequestMapping("/test/actuator") public void testActuator(String name){ // 相關(guān)業(yè)務(wù) System.out.println("success: " + name); }
http_server_requests_seconds_count:調(diào)用次數(shù)。
http_server_requests_seconds_sum:總計(jì)耗時(shí)(總次數(shù)時(shí)間合計(jì))。
http_server_requests_seconds_max:最大耗時(shí)時(shí)長(zhǎng)
以上就是SpringBoot通過(guò)注解監(jiān)測(cè)Controller接口的代碼示例的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot注解監(jiān)測(cè)Controller的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot如何實(shí)現(xiàn)調(diào)用controller和Service層方法
- springboot中的controller參數(shù)映射問(wèn)題小結(jié)
- springboot中Controller內(nèi)文件上傳到本地及阿里云操作方法
- springboot如何通過(guò)controller層實(shí)現(xiàn)頁(yè)面切換
- springboot Controller直接返回String類型帶來(lái)的亂碼問(wèn)題及解決
- SpringBoot之controller參數(shù)校驗(yàn)詳解
- springboot中@RestController注解實(shí)現(xiàn)
- springboot controller參數(shù)注入方式
- SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處理類失效原因分析
- SpringBoot和MybatisPlus實(shí)現(xiàn)通用Controller示例
相關(guān)文章
SpringBoot+Maven 多模塊項(xiàng)目的構(gòu)建、運(yùn)行、打包實(shí)戰(zhàn)
這篇文章主要介紹了SpringBoot+Maven 多模塊項(xiàng)目的構(gòu)建、運(yùn)行、打包實(shí)戰(zhàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05java實(shí)現(xiàn)的日期時(shí)間轉(zhuǎn)換工具類完整示例
這篇文章主要介紹了java實(shí)現(xiàn)的日期時(shí)間轉(zhuǎn)換工具類,結(jié)合完整實(shí)例形式分析了java針對(duì)日期時(shí)間常見的轉(zhuǎn)換、計(jì)算、格式化等相關(guān)操作與封裝技巧,需要的朋友可以參考下2019-10-10詳解在Spring Boot框架下使用WebSocket實(shí)現(xiàn)消息推送
這篇文章主要介紹了詳解在Spring Boot框架下使用WebSocket實(shí)現(xiàn)消息推送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12SpringBoot+Vue+Redis實(shí)現(xiàn)單點(diǎn)登錄(一處登錄另一處退出登錄)
小編接到一個(gè)需求,需要實(shí)現(xiàn)用戶在瀏覽器登錄后,跳轉(zhuǎn)到其他頁(yè)面,當(dāng)用戶在其它地方又登錄時(shí),前面用戶登錄的頁(yè)面退出登錄,這篇文章主要介紹了SpringBoot+Vue+Redis實(shí)現(xiàn)單點(diǎn)登錄,需要的朋友可以參考下2019-12-12struts2的國(guó)際化實(shí)現(xiàn)網(wǎng)站整體中英文切換實(shí)例代碼
本篇文章主要介紹了struts2的國(guó)際化實(shí)現(xiàn)網(wǎng)站整體中英文切換實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10