SpringBoot實現(xiàn)監(jiān)控Actuator,關(guān)閉redis監(jiān)測
SpringBoot監(jiān)控Actuator,關(guān)閉redis監(jiān)測
方法
當(dāng)我們導(dǎo)入了spring-boot-starter-actuator這個依賴后, SpringBoot會默認去監(jiān)測一些信息。其中就包括redis、 會根據(jù)redis的默認初始配置, localhost:6379 嘗試連接redis。如果我們沒有用到redis, 啟動就會報錯
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
比如我在使用SpringBootAdmin的時候,其中內(nèi)置了Actuator的依賴, 啟動報錯
[WARN ] 2020-05-28 09:28:17.179 [registrationTask1] de.codecentric.boot.admin.client.registration.ApplicationRegistrator - Failed to register application as Application(name=admin-client, managementUrl=http://Gordon-pc:8768/actuator, healthUrl=http://Gordon-pc:8768/actuator/health, serviceUrl=http://Gordon-pc:8768/) at spring-boot-admin ([http://localhost:8769/instances]): I/O error on POST request for "http://localhost:8769/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
[WARN ] 2020-05-28 09:28:19.075 [boundedElastic-1] org.springframework.boot.actuate.redis.RedisReactiveHealthIndicator - Redis health check failed
org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1200)
at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1179)
at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedReactiveConnection(LettuceConnectionFactory.java:952)
at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:429)
at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:94)
at reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:85)
at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:225)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:234)
at io.lettuce.core.RedisClient.connect(RedisClient.java:207)
at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115)
at java.util.Optional.orElseGet(Optional.java:267)
at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115)
at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1198)
... 15 common frames omitted
在網(wǎng)上搜了下解決方法, 發(fā)現(xiàn)都是提供的這一種方式:
@Component("redisHealthIndicator")
public class RedisHealthIndicator implements HealthIndicator {
@Override
public Health health() {
return Health.up().build();
}
}
結(jié)果我在看配置文件的時候, 發(fā)現(xiàn)另一個簡單的方式: application.yml中加上
management:
health:
redis:
enabled: false
就可以了~
springboot Actuator
通過Actuator可以深入的了解springboot應(yīng)用程序的內(nèi)部, 可以進行監(jiān)控和度量一些配置信息。
這些特性可以通過rest端點、遠程shell和jmx獲得。
以下主要探討rest端點的使用。
查看配置明細
1)/beans 上下文bean的情況
查看spring上下文中bean的情況, /beans會返回一個json文檔,描述上下文里每個Bean的情況,類型、依賴注入

2)/autoconfig 自動配置情況
positiveMatches指定的自動配置表示匹配成功的bean
negativeMatches對應(yīng)的自動配置表示匹配失敗的bean
3)/env 查看配置屬性
包括:環(huán)境變量、JVM屬性、命令行參數(shù),以及application.properties或application.yml文件提供的屬性
運行時度量
對運行時度量情況作一個快照,以此檢查應(yīng)用程序的健康狀況。
1)/metrics 應(yīng)用程序的度量值

2)/trace 跟蹤web請求的所有信息
包括請求方法、路徑、時間戳,以及請求和響應(yīng)的頭信息。
3)/health 健康檢查器
可以檢查應(yīng)用程序啟動狀況,以及相關(guān)依賴中間件的連接狀態(tài)。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring @Bean注解的使用場景與案例實現(xiàn)
隨著SpringBoot的流行,我們現(xiàn)在更多采用基于注解式的配置從而替換掉了基于XML的配置,所以本篇文章我們主要探討基于注解的@Bean以及和其他注解的使用2023-03-03
Java處理InterruptedException異常的理論與實踐
在使用Java的過程中,有個情景或許很多人見過,您在編寫一個測試程序,程序需要暫停一段時間,于是調(diào)用 Thread.sleep()。但是編譯器或 IDE 報錯說沒有處理檢查到的 InterruptedException。InterruptedException 是什么呢,為什么必須處理它?下面跟著小編一起來看看。2016-08-08
Spring Data JPA 如何使用QueryDsl查詢并分頁
這篇文章主要介紹了Spring Data JPA 如何使用QueryDsl查詢并分頁,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
Java try catch finally異常處理組合詳解
這篇文章主要介紹了Java try catch finally異常處理組合詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
Springboot實現(xiàn)給前端返回一個tree結(jié)構(gòu)方法
這篇文章主要介紹了SpringBoot返回給前端一個tree結(jié)構(gòu)的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
Java數(shù)據(jù)結(jié)構(gòu)之有效隊列定義與用法示例
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之有效隊列定義與用法,結(jié)合實例形式分析了java有效隊列的數(shù)據(jù)插入、刪除、判斷、計算等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10

