SpringBoot通過注解監(jiān)測Controller接口的代碼示例
一、前言
在Spring Boot中,度量指標(biāo)(Metrics)是監(jiān)控和診斷應(yīng)用性能與行為的重要工具。Spring Boot通過集成Micrometer和Spring Boot Actuator,提供了強(qiáng)大的度量指標(biāo)收集與暴露功能。
二、度量指標(biāo)
1. Micrometer
Micrometer是一個(gè)應(yīng)用監(jiān)控門面(Facade),它提供了對多種監(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ǔ)資源的使用情況對于理解系統(tǒng)性能至關(guān)重要。
應(yīng)用指標(biāo):包括請求響應(yīng)時(shí)間、吞吐量、錯(cuò)誤率等,這些指標(biāo)直接反映了應(yīng)用的行為和性能。
自定義指標(biāo):開發(fā)者可以根據(jù)需要?jiǎng)?chuàng)建自定義指標(biāo),以監(jiān)控特定的業(yè)務(wù)流程或組件。
請求跟蹤:
雖然Micrometer本身主要關(guān)注于指標(biāo)收集,但它可以與Spring Cloud Sleuth等跟蹤系統(tǒng)結(jié)合使用,實(shí)現(xiàn)請求的分布式跟蹤。Sleuth通過添加跟蹤信息(如Trace ID、Span ID)到日志和指標(biāo)中,幫助開發(fā)者追蹤請求在整個(gè)微服務(wù)架構(gòu)中的路徑,從而更容易地診斷問題。
集成日志記錄:
雖然Micrometer不直接處理日志記錄,但將Micrometer的監(jiān)控?cái)?shù)據(jù)與日志系統(tǒng)集成,可以形成更全面的可觀測性體系。例如,可以將Micrometer收集的指標(biāo)與日志文件中的Trace ID關(guān)聯(lián)起來,從而更容易地將性能問題與具體的請求或事務(wù)聯(lián)系起來。
2. Spring Boot Actuator
Spring Boot Actuator是Spring Boot的一個(gè)子項(xiàng)目,它提供了對應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能。通過引入Spring Boot Actuator,應(yīng)用可以暴露多個(gè)端點(diǎn)(Endpoints),這些端點(diǎn)提供了對應(yīng)用內(nèi)部信息的訪問,包括度量指標(biāo)、健康檢查、環(huán)境變量等。
三、使用@Timed, @Counted注解來完成接口的監(jiān)測功能
@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. 測試代碼
@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í)長
以上就是SpringBoot通過注解監(jiān)測Controller接口的代碼示例的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot注解監(jiān)測Controller的資料請關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot如何實(shí)現(xiàn)調(diào)用controller和Service層方法
- springboot中的controller參數(shù)映射問題小結(jié)
- springboot中Controller內(nèi)文件上傳到本地及阿里云操作方法
- springboot如何通過controller層實(shí)現(xiàn)頁面切換
- springboot Controller直接返回String類型帶來的亂碼問題及解決
- 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)文章
Eureka源碼閱讀Client啟動(dòng)入口注冊續(xù)約及定時(shí)任務(wù)
這篇文章主要為大家介紹了Eureka源碼閱讀Client啟動(dòng)入口注冊續(xù)約及定時(shí)任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
關(guān)于Intellij IDEA中的Version Control問題
這篇文章主要介紹了Intellij IDEA中的Version Control問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
Java將List轉(zhuǎn)換為String的幾種常見方式
在實(shí)際開發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,下面這篇文章主要給大家介紹了關(guān)于Java將List轉(zhuǎn)換為String的幾種常見方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03
Java?在?Array?和?Set?之間進(jìn)行轉(zhuǎn)換的示例
這篇文章主要介紹了Java如何在Array和Set之間進(jìn)行轉(zhuǎn)換,在本文章中,我們對如何在?Java?中對Array和Set進(jìn)行轉(zhuǎn)換進(jìn)行一些說明和示例,需要的朋友可以參考下2023-05-05

