版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十三章監(jiān)控SpringBoot應(yīng)用授課教師:陳恒大連外國(guó)語(yǔ)大學(xué)本章目標(biāo)了解Actuator的管理功能掌握如何通過(guò)HTTP進(jìn)行SpringBoot的應(yīng)用監(jiān)控和管理功能掌握如何自定義端點(diǎn)和HealthIndicator實(shí)現(xiàn)1本章內(nèi)容213.1端點(diǎn)的分類與測(cè)試13.2自定義端點(diǎn)13.3自定義HealthIndicator13.1端點(diǎn)的分類與測(cè)試13.1.1端點(diǎn)的開(kāi)啟與暴露13.1.2應(yīng)用配置端點(diǎn)的測(cè)試13.1.3度量指標(biāo)端點(diǎn)的測(cè)試13.1.4操作控制端點(diǎn)的測(cè)試313.1.1端點(diǎn)的開(kāi)啟與暴露SpringBoot提供了許多監(jiān)控和管理功能的端點(diǎn)。根據(jù)端點(diǎn)的作用,可以將SpringBoot提供的原生端點(diǎn)分為三大類:應(yīng)用配置端點(diǎn)、度量指標(biāo)端點(diǎn)和操作控制端點(diǎn)。【例13-1】查看SpringBoot默認(rèn)暴露的端點(diǎn)。4【例13-1】1.創(chuàng)建基于SpringBootActuator依賴的Web應(yīng)用ch13_1創(chuàng)建基于SpringBootActuator依賴的Web應(yīng)用ch13_1。2.配置JSON輸出格式在Web應(yīng)用ch13_1的配置文件perties中,配置JSON字符串的輸出格式,具體如下:#輸出的JSON字符串格式更美觀spring.jackson.serialization.indent-output=true56【例13-1】3.啟動(dòng)主程序查看默認(rèn)暴露的端點(diǎn)啟動(dòng)Web應(yīng)用ch13_1的主程序Ch131Application后,通過(guò)訪問(wèn)“http://localhost:8080/actuator”查看默認(rèn)暴露的端點(diǎn),運(yùn)行效果如下圖所示。從上圖可以看出SpringBoot默認(rèn)暴露了health和info兩個(gè)端點(diǎn)。如果想暴露SpringBoot提供的所有端點(diǎn),需要在配置文件perties配置“management.endpoints.web.exposure.include=*”,配置后重啟應(yīng)用主程序,重新訪問(wèn)“http://localhost:8080/actuator”即可查看所有暴露的端點(diǎn)。端點(diǎn)暴露設(shè)置7默認(rèn)情況下,除了shutdown端點(diǎn)是關(guān)閉的,其它端點(diǎn)都是開(kāi)啟的。配置一個(gè)端點(diǎn)的開(kāi)啟,使用management.endpoint..enabled屬性,如啟用shutdown端點(diǎn):
management.endpoint.shutdown.enabled=true我們?cè)谂渲梦募锌墒褂谩癿anagement.endpoints.web.exposure.include”屬性列出暴露的端點(diǎn),示例如下:management.endpoints.web.exposure.include=info,health,env,beans“*”可用來(lái)表示所有的端點(diǎn),例如,除了env和beans端點(diǎn),通過(guò)HTTP暴露所有端點(diǎn),示例如下:
management.endpoints.web.exposure.include=*management.endpoints.web.exposure.exclude=env,beans13.1端點(diǎn)的分類與測(cè)試13.1.1端點(diǎn)的開(kāi)啟與暴露13.1.2應(yīng)用配置端點(diǎn)的測(cè)試13.1.3度量指標(biāo)端點(diǎn)的測(cè)試13.1.4操作控制端點(diǎn)的測(cè)試813.1.2應(yīng)用配置端點(diǎn)的測(cè)試通過(guò)應(yīng)用配置端點(diǎn)就可以幫助我們輕松的獲取一系列關(guān)于Spring應(yīng)用配置內(nèi)容的詳細(xì)報(bào)告,比如:自動(dòng)化配置的報(bào)告、Bean創(chuàng)建的報(bào)告、環(huán)境屬性的報(bào)告等。91.conditions該端點(diǎn)在1.x版本中名為autoconfig,該端點(diǎn)用來(lái)獲取應(yīng)用的自動(dòng)化配置報(bào)告,其中包括所有自動(dòng)化配置的候選項(xiàng)。同時(shí)還列出了每個(gè)候選項(xiàng)自動(dòng)化配置的各個(gè)先決條件是否滿足。所以,該端點(diǎn)可以幫助我們方便的找到一些自動(dòng)化配置為什么沒(méi)有生效的具體原因。該報(bào)告內(nèi)容將自動(dòng)化配置內(nèi)容分為三部分:positiveMatches中返回的是條件匹配成功的自動(dòng)化配置;negativeMatches中返回的是條件匹配不成功的自動(dòng)化配置;unconditionalClasses無(wú)條件配置類。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/conditions”測(cè)試訪問(wèn)。102.beans該端點(diǎn)用來(lái)獲取應(yīng)用上下文中創(chuàng)建的所有Bean,啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/beans”測(cè)試訪問(wèn)。每個(gè)Bean中都包含以下幾個(gè)信息:外層的key是Bean的名稱;aliases是Bean的別名;scope是Bean的作用域;type是Bean的Java類型;resource是class文件的具體路徑;dependencies是依賴的Bean名稱。113.configprops該端點(diǎn)用來(lái)獲取應(yīng)用中配置的屬性信息報(bào)告,prefix屬性代表了屬性的配置前綴,properties代表了各個(gè)屬性的名稱和值,例如可以設(shè)置spring.http.encoding.charset="UTF-8"。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/configprops”測(cè)試訪問(wèn)。124.env該端點(diǎn)與configprops端點(diǎn)不同,它用來(lái)獲取應(yīng)用所有可用的環(huán)境屬性報(bào)告。包括:環(huán)境變量、JVM屬性、應(yīng)用的配置、命令行中的參數(shù)等內(nèi)容。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/env”測(cè)試訪問(wèn)。135.mappings該端點(diǎn)用來(lái)返回所有SpringMVC的控制器映射關(guān)系報(bào)告。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/mappings”測(cè)試訪問(wèn)。146.info該端點(diǎn)用來(lái)返回一些應(yīng)用自定義的信息。默認(rèn)情況下,該端點(diǎn)只會(huì)返回一個(gè)空的json內(nèi)容。我們可以在perties配置文件中通過(guò)info前綴來(lái)設(shè)置一些屬性。比如:=spring-boot-helloinfo.app.version=v1.0.0啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/info”測(cè)試訪問(wèn)。1513.1端點(diǎn)的分類與測(cè)試13.1.1端點(diǎn)的開(kāi)啟與暴露13.1.2應(yīng)用配置端點(diǎn)的測(cè)試13.1.3度量指標(biāo)端點(diǎn)的測(cè)試13.1.4操作控制端點(diǎn)的測(cè)試1613.1.3度量指標(biāo)端點(diǎn)的測(cè)試通過(guò)度量指標(biāo)端點(diǎn)可獲取應(yīng)用程序運(yùn)行過(guò)程中用于監(jiān)控的度量指標(biāo),比如:內(nèi)存信息、線程信息、HTTP請(qǐng)求統(tǒng)計(jì)等。171.metrics該端點(diǎn)用來(lái)返回當(dāng)前應(yīng)用的各類重要度量指標(biāo),比如:內(nèi)存信息、線程信息、垃圾回收信息等。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/metrics”測(cè)試訪問(wèn)。metrics端點(diǎn)可以提供應(yīng)用運(yùn)行狀態(tài)的完整度量指標(biāo)報(bào)告,這項(xiàng)功能非常的實(shí)用,但是對(duì)于監(jiān)控系統(tǒng)中的各項(xiàng)監(jiān)控功能,它們的監(jiān)控內(nèi)容、數(shù)據(jù)收集頻率都有所不同,如果我們每次都通過(guò)全量獲取報(bào)告的方式來(lái)收集,略顯粗暴。所以,我們還可以通過(guò)/metrics/{name}接口來(lái)更細(xì)粒度的獲取度量信息,比如我們可以通過(guò)訪問(wèn)/metrics/jvm.memory.used來(lái)獲取當(dāng)前JVM使用的內(nèi)存數(shù)量。182.health該端點(diǎn)用來(lái)獲取應(yīng)用的各類健康指標(biāo)信息。在spring-boot-starter-actuator模塊中自帶實(shí)現(xiàn)了一些常用資源的健康指標(biāo)檢測(cè)器。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/health”測(cè)試訪問(wèn)。結(jié)果中的“UP”表示健康,“DOWN”表示異常??梢栽谂渲梦募?,配置屬性management.endpoint.health.show-details=always,將詳細(xì)健康信息顯示給所有用戶。再次啟動(dòng)應(yīng)用后,刷新http://localhost:8080/actuator/health,顯示健康指標(biāo)詳細(xì)信息。193.threaddump該端點(diǎn)用來(lái)暴露程序運(yùn)行中的線程信息。它使用java.lang.management.ThreadMXBean的dumpAllThreads方法來(lái)返回所有含有同步信息的活動(dòng)線程詳情。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/threaddump”測(cè)試訪問(wèn)。204.scheduledtasks該端點(diǎn)統(tǒng)計(jì)應(yīng)用程序中調(diào)度的任務(wù)。啟動(dòng)并暴露該端點(diǎn)后,可通過(guò)“http://localhost:8080/actuator/scheduledtasks”測(cè)試訪問(wèn)。2113.1端點(diǎn)的分類與測(cè)試13.1.1端點(diǎn)的開(kāi)啟與暴露13.1.2應(yīng)用配置端點(diǎn)的測(cè)試13.1.3度量指標(biāo)端點(diǎn)的測(cè)試13.1.4操作控制端點(diǎn)的測(cè)試2213.1.4操作控制端點(diǎn)的測(cè)試操作控制類端點(diǎn)擁有更強(qiáng)大的控制能力,如果使用它們,需要通過(guò)屬性來(lái)配置開(kāi)啟。在原生端點(diǎn)中,只提供了一個(gè)用來(lái)關(guān)閉應(yīng)用的端點(diǎn):shutdown??梢酝ㄟ^(guò)如下配置開(kāi)啟它:management.endpoint.shutdown.enabled=true。23shutdown端點(diǎn)不支持get提交,不可以直接在瀏覽器上訪問(wèn),所以我們這里可以使用GoogleChrome的PostmanRESTClient測(cè)試。用post方式訪問(wèn)“http://localhost:8080/actuator/shutdown”,測(cè)試效果如下圖所示。本章內(nèi)容2413.1端點(diǎn)的分類與測(cè)試13.2自定義端點(diǎn)13.3自定義HealthIndicator13.2自定義端點(diǎn)SpringBoot提供了注解@Endpoint供我們定義一個(gè)端點(diǎn)類,并在端點(diǎn)類的方法上使用@ReadOperation注解來(lái)顯示監(jiān)控信息(對(duì)應(yīng)Get請(qǐng)求),使用@WriteOperation來(lái)動(dòng)態(tài)更新監(jiān)控信息(對(duì)應(yīng)Post請(qǐng)求)?!纠?3-2】自定義端點(diǎn)。25【例13-2】261.創(chuàng)建基于SpringDataJPA和SpringBootActuator依賴的Web應(yīng)用ch13_2創(chuàng)建基于SpringDataJPA和SpringBootActuator依賴的Web應(yīng)用ch13_2。2.修改pom.xml文件添加MySQL連接器依賴修改pom.xml文件添加MySQL連接器依賴。3.配置數(shù)據(jù)源因?yàn)樵搶?shí)例是監(jiān)控?cái)?shù)據(jù)源信息,所以需要在配置文件perties中配置數(shù)據(jù)源,具體內(nèi)容如下:#數(shù)據(jù)庫(kù)地址spring.datasource.url=jdbc:mysql://localhost:3306/springbootjpa?characterEncoding=utf8#數(shù)據(jù)庫(kù)用戶名spring.datasource.username=root#數(shù)據(jù)庫(kù)密碼spring.datasource.password=root#數(shù)據(jù)庫(kù)驅(qū)動(dòng)spring.datasource.driver-class-name=com.mysql.jdbc.Driver#輸出的JSON字符串格式更美觀spring.jackson.serialization.indent-output=true【例13-2】274.自定義端點(diǎn)創(chuàng)建名為com.ch.ch13_2.endPoint的包,并在該包中使用注解@Endpoint自定義端點(diǎn)類DataSourceEndpoint。在該端點(diǎn)類中,使用@ReadOperation注解來(lái)顯示數(shù)據(jù)源信息,使用@WriteOperation來(lái)動(dòng)態(tài)更新數(shù)據(jù)源信息。5.暴露端點(diǎn)在配置文件perties中暴露端點(diǎn),內(nèi)容如下:#暴露所有端點(diǎn),當(dāng)然包括data-source,我們也可以只暴露data-source端點(diǎn)management.endpoints.web.exposure.include=*6.測(cè)試端點(diǎn)28首先,啟動(dòng)應(yīng)用程序主類Ch132Application,然后通過(guò)“http://localhost:8080/actuator/data-source”測(cè)試端點(diǎn)data-source,運(yùn)行效果如左下圖所示。使用GoogleChrome的PostmanRESTClient發(fā)送POST請(qǐng)求“http://localhost:8080/actuator/data-source?max=20”,POST請(qǐng)求執(zhí)行后,“http://localhost:8080/actuator/data-source”測(cè)試端點(diǎn)data-source,運(yùn)行效果如右上圖所示。本章內(nèi)容2913.1端點(diǎn)的分類與測(cè)試13.2自定義端點(diǎn)13.3自定義HealthIndicator13.3自定義HealthIndicator當(dāng)SpringBoot自帶的HealthIndicator接口實(shí)現(xiàn)類不能滿足我們的需求時(shí),就需要自定義HealthIndicator接口實(shí)現(xiàn)類。自定義HealthIndicator接口實(shí)現(xiàn)類很簡(jiǎn)單,只需要實(shí)現(xiàn)HealthIndicator接口,并重寫接口方法health,返回一個(gè)Health對(duì)象。【例13-3】自定義HealthIndicator。301.創(chuàng)建HealthIndicator接口實(shí)現(xiàn)類MyHealthIndicator31@ComponentpublicclassMyHealthIndicatorimplementsHealthIndicator{ @Override
publicHealthhealth(){ interrorCode=check(); if(errorCode!=0){ //down方法表示異常,withDetail方法添加任意多的異常信息 returnHealth.down().withDetail("message","error:"+errorCode).build(); } //up方法表
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園月教學(xué)計(jì)劃模板
- 醫(yī)院護(hù)士年度計(jì)劃范本
- 大班表演游戲計(jì)劃
- 農(nóng)村綜治宣傳月的工作計(jì)劃
- 度班組長(zhǎng)工作計(jì)劃
- 客服員工作計(jì)劃
- 《GDP與GNP的區(qū)別》課件
- 醫(yī)院醫(yī)保年終工作計(jì)劃總結(jié)
- 《行為應(yīng)用分析》課件
- 2020版 滬教版 高中音樂(lè) 必修1 音樂(lè)鑒賞 下篇《第八單元 不忘初心》大單元整體教學(xué)設(shè)計(jì)2020課標(biāo)
- 主題四 第1課 節(jié)氣與我們的生活(教學(xué)設(shè)計(jì))教科版五年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)
- 二年級(jí)數(shù)學(xué)上冊(cè)口算天天練
- 2024國(guó)家開(kāi)放大學(xué)電大本科《液壓氣動(dòng)技術(shù)》期末試題及答案
- 商務(wù)服務(wù)機(jī)器人技術(shù)現(xiàn)狀與未來(lái)發(fā)展趨勢(shì)研究
- 工業(yè)物聯(lián)網(wǎng)(IIoT)行業(yè)發(fā)展全景調(diào)研與投資趨勢(shì)預(yù)測(cè)研究報(bào)告
- 金融數(shù)據(jù)分析-以Python為工具 課件 一、金融數(shù)據(jù)分析概覽
- 佛山市、三水區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末地理試題【帶答案】
- 2024屆湖北高三元月調(diào)考數(shù)學(xué)試卷含答案
- DL∕T 1476-2023電力安全工器具預(yù)防性試驗(yàn)規(guī)程
- 西方園林史智慧樹(shù)知到期末考試答案章節(jié)答案2024年內(nèi)蒙古農(nóng)業(yè)大學(xué)
- 學(xué)年上學(xué)期期末職業(yè)高中高二年級(jí)數(shù)學(xué)練習(xí)試卷2
評(píng)論
0/150
提交評(píng)論