真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot健康檢查怎樣與容器配合

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)SpringBoot健康檢查怎樣與容器配合,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到柳北網(wǎng)站設(shè)計(jì)與柳北網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋柳北地區(qū)。

監(jiān)控的重要性就不必多說(shuō)了吧,不要再花功夫開(kāi)會(huì)討論它的必要性了,當(dāng)你線上遇到問(wèn)題,就不會(huì)再懷疑監(jiān)控是浪費(fèi)開(kāi)發(fā)成本的建設(shè)。監(jiān)控讓人告別了靠“猜”來(lái)維持的救火現(xiàn)狀,它能夠留下證據(jù),來(lái)支撐我們后續(xù)的分析。

作為監(jiān)控的首要目標(biāo),服務(wù)的存活性,也就是它的健康狀況,成為了重中之重。SpringBoot可以通過(guò)簡(jiǎn)單的參數(shù),來(lái)開(kāi)啟健康檢查,并能夠和主流的監(jiān)控系統(tǒng)集成起來(lái)。

1. 監(jiān)控開(kāi)啟

在Spring中,是使用actuator組件,來(lái)做監(jiān)控等相關(guān)操作??梢栽趐om中加入下面的starter:

   org.springframework.boot   spring-boot-starter-actuator 

對(duì)于gradle來(lái)說(shuō),加入下面這個(gè)。

dependencies {   compile("org.springframework.boot:spring-boot-starter-actuator") }

訪問(wèn)/actuator/health,即可獲取項(xiàng)目的健康狀況。

{"status":"UP"}

在application.yml文件里,加入如下的內(nèi)容:

management:   endpoint:     health:       show-details: always

再次訪問(wèn)這個(gè)接口,將輸出詳細(xì)的內(nèi)容。包括DB的狀態(tài)、磁盤(pán)狀態(tài)等。可以看到,最外層的status,其實(shí)是內(nèi)部各個(gè)組件狀態(tài)的集合。

{     "status":"UP",     "components":{         "db":{             "status":"UP",             "details":{                 "database":"H2",                 "validationQuery":"isValid()"             }         },         "diskSpace":{             "status":"UP",             "details":{                 "total":250685575168,                 "free":31373905920,                 "threshold":10485760,                 "exists":true             }         },         "ping":{             "status":"UP"         }     } }

2. 自定義Indicator

這些功能,是由Indicators來(lái)實(shí)現(xiàn)的(HealthIndicator)。比如下面這些:

  • DataSourceHealthIndicator

  • DiskSpaceHealthIndicator

  • CouchbaseHealthIndicator

  • MongoHealthIndicator

  • redisHealthIndicator

  • CassandraHealthIndicator

如果你是用的是組件提供的starter,這些Indicator就會(huì)在/health接口進(jìn)行聚合,如果你不想要監(jiān)控某個(gè)組件,可以在配置中把它關(guān)閉。

management:   health:     mongo:       enabled: false

明白了這個(gè)道理,在做一些組件的時(shí)候時(shí)候,就可以通過(guò)這種方式,來(lái)提供組件自帶的健康檢查:只需要實(shí)現(xiàn)HealthIndicator接口就可以了。代碼樣例如下:

@Component @Slf4j public class X implements HealthIndicator {     @Override     public Health health() {         try {             //檢查組件狀態(tài)異常信息         } catch (Exception e) {             log.warn("Failed to connect to: {}", URL);             return Health.down()                     .withDetail("error", e.getMessage())                     .build();         }         return Health.up().build();     } }

3. 接入監(jiān)控系統(tǒng)

更多情況,我們是希望把業(yè)務(wù)監(jiān)控的數(shù)據(jù),使用專業(yè)的監(jiān)控組件收集起來(lái)。這個(gè)在SpringBoot中,可以使用micrometer來(lái)實(shí)現(xiàn)。

以最流行的prometheus為例,在pom里增加下面的內(nèi)容。

     io.micrometer     micrometer-registry-prometheus 

當(dāng)然,我們也要在yaml里配置一些內(nèi)容。它現(xiàn)在看起來(lái)長(zhǎng)這個(gè)樣子:

management:   endpoints:     web:       exposure:         include: health,info,prometheus   endpoint:     health:       show-details: always

這時(shí)候,訪問(wèn)/actuator/prometheus,即可獲取prometheus格式的監(jiān)控?cái)?shù)據(jù)。

類(lèi)似于下面這種:

jvm_memory_used_bytes{area="heap",id="PS Survivor Space",} 0.0 jvm_memory_used_bytes{area="heap",id="PS Old Gen",} 2.9444904E7 jvm_memory_used_bytes{area="heap",id="PS Eden Space",} 6.829E7 jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 5.917196E7 jvm_memory_used_bytes{area="nonheap",id="Code Cache",} 1.0929088E7 jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 8420512.0

在prometheus的target頁(yè)面,可以看到下面的信息:

SpringBoot健康檢查怎樣與容器配合

最終在Grafana里,長(zhǎng)的更加妖艷一些。

SpringBoot健康檢查怎樣與容器配合

那它都能監(jiān)控一些什么東西呢?我們來(lái)看一下:

  • 服務(wù)節(jié)點(diǎn)基本信息,包括內(nèi)存CPU網(wǎng)絡(luò)IO等

  • JVM堆棧信息

  • JVM GC信息,STW信息

  • 默認(rèn)HikariCP的連接池信息

  • HTTP請(qǐng)求接口信息(最大耗時(shí),QPS最高)

  • Tomcat容器監(jiān)控

  • Logback日志打印監(jiān)控(各級(jí)別條數(shù))

  • ...其他

可以看到,只需要暴露這么一個(gè)接口,就可以對(duì)項(xiàng)目中的組件,進(jìn)行比較全面的掌控。

4. 與容器配合

最后一點(diǎn),由于SpringBoot服務(wù),經(jīng)常會(huì)發(fā)布到一些容器中,比如docker。這個(gè)時(shí)候,就要用到probes配置(kube有相同的概念)。probes是探測(cè)的意思,用來(lái)區(qū)分Liveness和Readiness兩種狀態(tài)。

最終的配置如下:

management:   health:     probes:       enabled: true   endpoints:     web:       exposure:         include: health,info,prometheus   endpoint:     health:       show-details: always

這時(shí)候,我們將在瀏覽器的接口中獲取兩個(gè)分組,展示如下:

SpringBoot健康檢查怎樣與容器配合

  • http://localhost:8080/actuator/health/liveness

  • http://localhost:8080/actuator/health/readiness

這兩個(gè)鏈接,前者用于判斷容器是否應(yīng)該重啟;后者判斷服務(wù)是否可用,如果可用,將開(kāi)始接受外部的請(qǐng)求。

End

對(duì)于規(guī)模比較小的SpringBoot應(yīng)用來(lái)說(shuō),使用SpringBootAdmin一類(lèi)的監(jiān)控,就已經(jīng)足夠了。但如果你的企業(yè)是集中式部署,節(jié)點(diǎn)多且變化頻繁,一個(gè)統(tǒng)一的監(jiān)控建設(shè)平臺(tái)是非常必要的。

除了Prometheus,SpringBoot的Metrics還支持以下組件:

  • AppOptics

  • Atlas

  • Datadog

  • Dynatrace

  • Elastic

  • Ganglia

  • Graphite

  • Humio

  • Influx

  • JMX

  • KairosDB

  • New Relic

  • Prometheus

  • SignalFx

  • Simple (in-memory)

  • Stackdriver

  • StatsD

  • Wavefront

上述就是小編為大家分享的SpringBoot健康檢查怎樣與容器配合了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站題目:SpringBoot健康檢查怎樣與容器配合
標(biāo)題鏈接:http://weahome.cn/article/ijdhpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部