当前位置: 首页 > 后端技术 > Java

SpringBootActuator健康检查、测量、指标采集、监控,一文搞定!

时间:2023-04-01 13:50:51 Java

浣滆€咃細Richard_Yi鍘熸枃锛歨ttps://juejin.im/post/684490...鍓嶈█鍘诲勾鎴戜滑鐨勯」鐩繘琛屼簡寰湇鍔?.0鏋舵瀯鏀归€狅紝浣嗘槸鏈嶅姟鐩戞帶娌℃湁璺熶笂銆備笉锛屾渶杩戞垜琚垎閰嶄簡鐩戞帶鎴戜滑鎵€鏈夋牳蹇冨井鏈嶅姟搴旂敤绋嬪簭鐨勪换鍔°€傛垜浠殑寰湇鍔″簲鐢ㄩ兘鏄疭pringBoot搴旂敤锛岄偅涔堝緢鑷劧鐨勫氨浼氭兂鍒板甫鏈塖pringBoot鐨凙ctuator妯″潡銆傦紙娌″悆杩囩尓鑲夛紝涓€鐩村惉鍒扮尓鍙紝鐪嬪埌鐚窇馃お锛夈€傝繖绡囨枃绔犳槸鎴戝湪瀹屾垚鏈宸ュ崟鍚庡SpringBootActuator妯″潡鐨勫涔犲拰搴旂敤鐨勬€荤粨銆傚湪鏈枃涓紝鎮ㄥ彲浠ヤ簡瑙e埌锛歋pringBootActuator蹇€熷叆闂⊿pringBootActuator鐨勪竴浜涢噸瑕佺鐐逛粙缁嶅浣曢€氳繃Actuator妯″潡瀹炴椂鏌ョ湅褰撳墠搴旂敤鐨則hreaddump淇℃伅濡備綍鏌ョ湅褰撳墠搴旂敤鐨刪eap閫氳繃Actuator妯″潡瀹炴椂淇敼褰撳墠搴旂敤鐨勬棩蹇楁墦鍗扮骇鍒浣曢€氳繃Actuator妯″潡瀹炴椂淇敼...鍚庨潰浼氫粙缁嶏細TODO:SpringBoot寰湇鍔″簲鐢ㄩ泦鎴怭rometheus+Grafana瀹炵幇鐩戞帶鍛婅1.What鏄疭pringBootActuator锛孲pringBootActuator妯″潡鎻愪緵浜嗙敓浜х骇鐨勭壒鎬э紝姣斿鍋ュ悍妫€鏌ャ€佸璁°€佹寚鏍囨敹闆嗐€丠TTP璺熻釜绛夛紝甯姪鎴戜滑鐩戞帶鍜岀鐞哠pringBoot搴旂敤銆傝妯″潡鏄敹闆嗗簲鐢ㄧ▼搴忓唴閮ㄤ俊鎭苟瀵瑰鏆撮湶鐨勬ā鍧椼€傚彲浠ラ€氳繃HTTP鍜孞MX璁块棶浠ヤ笂鍔熻兘銆傜敱浜庢毚闇插唴閮ㄤ俊鎭殑鎬ц川锛孉ctuator杩樺彲浠ヤ笌涓€浜涘閮ㄥ簲鐢ㄧ▼搴忕洃鎺х郴缁燂紙Prometheus銆丟raphite銆丏ataDog銆両nflux銆乄avefront銆丯ewRelic绛夛級闆嗘垚銆傝繖浜涚洃鎺х郴缁熸彁渚涘嚭鑹茬殑浠〃鏉裤€佸浘琛ㄣ€佸垎鏋愬拰璀︽姤锛屽彲甯姪鎮ㄩ€氳繃缁熶竴鍙嬪ソ鐨勭晫闈㈢洃鎺у拰绠$悊鎮ㄧ殑搴旂敤绋嬪簭銆侫ctuator浣跨敤Micrometer涓庤繖浜涘閮ㄥ簲鐢ㄧ▼搴忕洃鎺х郴缁熼泦鎴愩€傝繖浣垮緱浠ユ渶灏戠殑閰嶇疆闆嗘垚澶栭儴鐩戞帶绯荤粺鍙樺緱瀹规槗銆侻icrometer鍦↗ava骞冲彴涓婃彁渚涗簡閫氱敤鐨勬€ц兘鏁版嵁閲囬泦API锛屽簲鐢ㄧ▼搴忓彧闇€瑕佷娇鐢∕icrometer鐨勯€氱敤API鍗冲彲閲囬泦鎬ц兘鎸囨爣銆侻icrometer灏嗚礋璐e畬鎴愪笌涓嶅悓鐩戞帶绯荤粺鐨勯€傞厤宸ヤ綔銆傝繖浣垮緱鍒囨崲鐩戞帶绯荤粺鍙樺緱瀹规槗銆傛瘮杈僑lf4j鍦↗avaLogger涓殑瀹氫綅銆?.蹇€熷叆闂紝鍒涘缓涓€涓猄pringBootActuatorDemo鎴戜滑鍏堟潵鍒涘缓涓€涓猟emo搴旂敤銆傚彲浠ラ€氳繃SpringBootCLI鍒涘缓锛歴pringinit-d=web,actuator-n=actuator-demoactuator-demo澶嶅埗浠g爜鎴栬€呴€氳繃SpringInitializr鍒涘缓锛氬搴旂殑maven渚濊禆锛?dependencies>...org.springframework.bootspring-boot-starter-actuator...瀵瑰簲鐨凣radle渚濊禆锛歞ependencies{compile("org.springframework.boot:spring-boot-starter-actuator")}3.Endpoints浠嬬粛SpringBoot鎻愪緵浜嗘墍璋撶殑绔偣锛堜互涓嬭瘧涓虹鐐癸級锛岀敤浜庡閮ㄨ闂拰涓庡簲鐢ㄧ▼搴忕殑浜や簰銆備緥濡傦紝/health绔偣鎻愪緵鏈夊叧搴旂敤绋嬪簭鍋ュ悍鐘跺喌鐨勪竴浜涘熀鏈俊鎭€傛寚鏍囩鐐规彁渚涗簡涓€浜涙湁鐢ㄧ殑搴旂敤绋嬪簭鎸囨爣锛圝VM鍐呭瓨浣跨敤鎯呭喌銆佺郴缁烠PU浣跨敤鎯呭喌绛夛級銆傝繖浜汚ctuator妯″潡宸茬粡鎷ユ湁鐨勭鐐圭О涓烘湰鏈虹鐐广€傛牴鎹鐐圭殑浣滅敤锛屾垜浠ぇ鑷村彲浠ュ皢鍏跺垎涓轰笁绫伙細搴旂敤閰嶇疆绫伙細鑾峰彇搴旂敤涓姞杞界殑搴旂敤閰嶇疆銆佺幆澧冨彉閲忋€佽嚜鍔ㄩ厤缃姤鍛婄瓑涓嶴pringBoot搴旂敤瀵嗗垏鐩稿叧鐨勯厤缃俊鎭€侻etrics绫伙細鑾峰彇搴旂敤杩愯杩囩▼涓敤浜庣洃鎺х殑鎸囨爣锛屽锛氬唴瀛樹俊鎭€佺嚎绋嬫睜淇℃伅銆丠TTP璇锋眰缁熻绛夈€傛搷浣滄帶鍒剁被锛氭彁渚涘叧闂簲鐢ㄧ瓑鎿嶄綔鍔熻兘銆傚叧浜巒ativeendpoints鐨勮缁嗕粙缁嶈鍙傝€冨畼缃戯紝杩欓噷涓嶅啀璧樿堪锛屽鍔犵瘒骞呫€傚簲璇ユ敞鎰忕殑鏄紝姣忎釜绔偣閮藉彲浠ラ€氳繃閰嶇疆鍗曠嫭绂佺敤鎴栧惎鐢ㄣ€備笌Actuator1.x涓嶅悓锛孉ctuator2.x鐨勫ぇ澶氭暟绔偣鍦ㄩ粯璁ゆ儏鍐典笅閮芥槸绂佺敤鐨勩€侫ctuator2.x涓殑榛樿绔偣娣诲姞浜?actuator鍓嶇紑銆傞粯璁ゆ毚闇茬殑涓や釜绔偣鏄?actuator/health鍜?actuator/info4.绔偣鏆撮湶閰嶇疆鎴戜滑鍙互閫氳繃浠ヤ笅閰嶇疆鏉ラ厤缃€氳繃JMX鍜孒TTP鏆撮湶鐨勭鐐广€侾ropertyDefaultmanagement.endpoints.jmx.exposure.excludemanagement.endpoints.jmx.exposure.include*management.endpoints.web.exposure.excludemanagement.endpoints.web.exposure.includeinfo,health鍙互寮€鍚墍鏈夌洃鎺х偣management.endpoints.web銆俥xposure.include=*涔熷彲浠ラ€夋嫨寮€鍚儴鍒嗭紝鈥?鈥濊〃绀烘毚闇叉墍鏈夌鐐癸紝濡傛灉鎸囧畾澶氫釜绔偣锛岀敤鈥?鈥濆垎闅攎anagement.endpoints.web.exclude=beans锛宼raceActuator榛樿涓烘墍鏈夌殑鐩戞帶鐐硅矾寰勯兘鍦?actuator/*涓紝褰撶劧杩欎釜璺緞濡傛灉鏈夐渶瑕佷篃鏀寔鑷畾涔夈€傝缃甿anagement.endpoints.web.base-path=/minitor鍚庨噸鍚紝璁块棶鍦板潃鍙堜細鍙樻垚/minitor/*銆傜幇鍦ㄦ垜浠厤缃涓嬶細#鈥?鈥濅唬琛ㄦ毚闇叉墍鏈夌鐐广€傚鏋滄寚瀹氬涓鐐癸紝鐢ㄢ€?鈥濋殧寮€/localhost:8080/actuator锛屽苟鏌ョ湅鏆撮湶鐨勭鐐癸細涓婇潰鐨勬樉绀烘槸鍥犱负chrome娴忚鍣ㄥ畨瑁呬簡json-handle鎻掍欢锛屽疄闄呬笂杩斿洖浜嗕竴澶фjson锛岃繖閲屾垜閲嶇偣浠嬬粛鍑犱釜姣旇緝閲嶈鐨勭鐐?5.閲嶈绔偣鍒嗘瀽5.1/health绔偣/health绔偣浼氳仛鍚堜綘绋嬪簭鐨勫仴搴锋寚鏍囨潵妫€鏌ョ▼搴忕殑鍋ュ悍鐘跺喌銆傜鐐瑰叕寮€鐨勫簲鐢ㄧ▼搴忓仴搴蜂俊鎭彇鍐充簬锛歮anagement.endpoint.health.show-details=always璇ュ睘鎬у彲浠ラ厤缃负浠ヤ笅鍊间箣涓€锛歂ameDescriptionnever涓嶆樉绀鸿缁嗕俊鎭€佸惎鍔ㄦ垨鍏抽棴鐘舵€佷互鍙婁綍鏃舵巿鏉冮粯璁ゆ儏鍐典笅閰嶇疆鐨勮缁嗕俊鎭皢鏄剧ず缁欑粡杩囪韩浠介獙璇佺殑鐢ㄦ埛銆傚彲浠ラ€氳繃management.endpoint.health.roles閰嶇疆鎺堟潈瑙掕壊锛屼互濮嬬粓鍚戞墍鏈夌敤鎴峰叕寮€璇︾粏淇℃伅銆傛寜鐓т笂闈㈢殑閰嶇疆锛岄厤缃產lways涔嬪悗锛屾垜浠惎鍔ㄩ」鐩紝璁块棶http://localhost:8080/actuator/health绔彛锛屽彲浠ョ湅鍒拌繖鏍风殑淇℃伅锛氭槸涓嶆槸鎰熻鍋ュ悍淇℃伅灏戜簡鐐癸紵涓嶇敤鎷呭績锛岃繖鏄洜涓烘垜浠垱寤轰簡涓€涓熀鏈殑Demo宸ョ▼锛屾病鏈変緷璧栧緢澶氱粍浠躲€?health绔偣鏈夊緢澶氳嚜鍔ㄩ厤缃殑鍋ュ悍鎸囨爣锛歳edis銆乺abbitmq銆乨b绛夌粍浠躲€傚綋浣犵殑椤圭洰渚濊禆浜嗙浉搴旂殑缁勪欢鏃讹紝浼氳嚜鍔ㄧ粍瑁呰繖浜涘仴搴锋寚鏍囷紝鐒跺悗鏀堕泦鐩稿簲鐨勪俊鎭€傛瘮濡備笂闈㈢殑diskSpace鑺傜偣淇℃伅灏辨槸DiskSpaceHealthIndicator鍦ㄨ捣浣滅敤銆備互涓婃埅鍥炬潵鑷畼鏂规枃妗h繖鏄垜鍙︿竴涓」鐩殑/health绔偣淇℃伅銆傚綋涓婅堪鍏朵腑涓€涓粍浠剁姸鎬佸紓甯告椂锛屽簲鐢ㄦ湇鍔℃暣浣撶姸鎬佷负down銆傛垜浠篃鍙互閫氳繃閰嶇疆鏉ュ叧闂粍浠剁殑鍋ュ悍鐩戞帶銆俶anagement.health.mongo.enabled:false鎴栫鐢ㄦ墍鏈夎嚜鍔ㄩ厤缃殑鍋ュ悍鎸囨爣锛歮anagement.health.defaults.enabled:false猸怌ustomHealthIndicator褰撶劧浣犱篃鍙互鑷畾涔変竴涓狧ealthIndicator锛屽彧闇€瑕佸疄鐜癏ealthIndicator鎺ュ彛鎴栬€呯户鎵緼bstractHealthIndicator鐝骇銆?***@authorRichard_yyf*@version1.02020/1/16*/@ComponentpublicclassCustomHealthIndicatorextendsAbstractHealthIndicator{@OverrideprotectedvoiddoHealthCheck(Health.Builderbuilder)throwsException{//浣跨敤builder鍒涘缓鍋ュ悍鐘舵€佷俊鎭?/濡傛灉鎶涘嚭寮傚父锛岀姸鎬佷細缃负DOWN锛屽苟璁板綍寮傚父淇℃伅鎴戝緢濂解€濓級;}}鏈€缁堟晥鏋滐細5.2/metricsendpoint/metricsendpoint鐢ㄤ簬杩斿洖褰撳墠搴旂敤鐨勫悇绉嶉噸瑕佹寚鏍囷紝濡傦細鍐呭瓨淇℃伅銆佺嚎绋嬩俊鎭€佸瀮鍦惧洖鏀朵俊鎭€乼omcat銆佹暟鎹簱杩炴帴姹犵瓑寰呫€倇鈥滃悕绉扳€濓細[鈥渢omcat.threads.busy鈥濓紝鈥渏vm.threads.states鈥濓紝鈥渏dbc.connections.active鈥濓紝鈥渏vm.gc.memory.promoted鈥濓紝鈥渉ttp.server.requests鈥濓紝鈥渉ikaricp.connections.max","hikaricp.connections.min","jvm.memory.used","jvm.gc.max.data.size","jdbc.connections.max",....]}鏄笉鍚岀殑浠?.x寮€濮嬶紝Actuator鍦ㄨ繖涓晫闈㈢湅涓嶅埌鍏蜂綋鐨勬寚鏍囦俊鎭紝鍙兘灞曠ず鎸囨爣鍒楄〃銆備负浜嗚幏鍙栨煇涓寚鏍囩殑璇︾粏淇℃伅锛屾垜浠彲浠ヨ姹傚叿浣撶殑鎸囨爣淇℃伅锛屽儚杩欐牱锛歨ttp://localhost:8080/actuator/metrics/{MetricName}姣斿鎴戣闂?actuator/metrics/jvm銆俶emory.max,杩斿洖淇℃伅濡備笅锛氫篃鍙互浣跨敤queryparam鏌ョ湅鍗曚釜鍖哄煙銆備緥濡傦紝鎮ㄥ彲浠ヨ闂?actuator/metrics/jvm.memory.max?tag=id:Metaspace銆傜粨鏋滄槸锛?.3/loggers绔偣/loggers绔偣鍏紑浜嗘垜浠▼搴忎腑閰嶇疆鐨勬墍鏈夎褰曞櫒鐨勪俊鎭€傚綋鎴戜滑璁块棶/actuator/loggers鏃讹紝鍙互鐪嬪埌杩樺彲浠ラ€氳繃浠ヤ笅鏂瑰紡璁块棶鍗曚釜logger锛宧ttp://localhost:8080/actuator/loggers/{name}姣斿鎴戠幇鍦ㄨ闂畆ootlogger锛宧ttp://localhost:8080/actuator/loggers/root{"configuredLevel":"INFO","effectiveLevel":"INFO"}猸愬湪杩愯鏃舵洿鏀规棩蹇楃骇鍒?璁板綍鍣ㄧ鐐广€傛渶鎯宠鐨勫氨鏄繖涓姛鑳斤紝鍙互鍔ㄦ€佷慨鏀逛綘鐨勬棩蹇楃骇鍒€備緥濡傦紝鎴戜滑鍙互閫氳繃浠ヤ笅鏂瑰紡淇敼rootlogger鐨勬棩蹇楃骇鍒€傛垜浠彧闇€瑕佸彂璧蜂竴涓狿OST璇锋眰锛孶RL涓篽ttp://localhost:8080/actuator/loggers/root锛孭OST娑堟伅濡備笅锛歿"configuredLevel":"DEBUG"}浠旂粏鎯虫兂锛岃繖涓姛鑳芥槸涓嶆槸寰堟湁鐢紵濡傛灉鍦ㄧ敓浜х幆澧冧腑锛屾兂璁╀綘鐨勫簲鐢ㄨ緭鍑轰竴浜汥ebug淇℃伅锛屼互渚胯瘖鏂竴浜涘紓甯告儏鍐碉紝鍙渶瑕佹寜鐓т笂闈㈢殑鏂规硶淇敼鍗冲彲锛屼笉闇€瑕侀噸鍚簲鐢ㄣ€傚鏋滆閲嶇疆涓洪粯璁ゅ€硷紝灏嗗€兼洿鏀逛负绌?.4/infoendpoint/infoendpoint鍙敤浜庢樉绀烘湁鍏虫偍鐨勭▼搴忕殑淇℃伅銆傛垜浜嗚В鐨勬槸涓€浜涚▼搴忕殑鍩烘湰淇℃伅銆傚苟涓斿彲浠ユ牴鎹嚜宸辩殑闇€瑕佸湪閰嶇疆鏂囦欢application.properties涓繘琛屼釜鎬у寲閰嶇疆锛堥粯璁ゆ儏鍐典笅绔偣鍙細杩斿洖涓€涓┖鐨刯son鍐呭銆?:info.app.name=actuator-test-demoinfo.app.encoding=UTF-8info.app.java.source=1.8info.app.java.target=1.8#鍦╩aven宸ョ▼涓彲浠ョ洿鎺ヤ娇鐢ㄥ涓嬪紩鐢╩aven灞炴€у€肩殑鏂瑰紡#info.app.encoding=@project.build.sourceEncoding@#info.app.java.source=@java.version@#info.app.java.target=@java.version@鍚姩椤圭洰锛岃闂甴ttp://localhost:8080/actuator/info:{"app":{"encoding":"UTF-8","java":{"source":"1.8.0_131","target":"1.8.0_131"},"name":"actuator-test-demo"}}5.5/beansendpoint/beansendpoint浼氳繑鍥炴墍鏈塨ean鐨勫埆鍚嶃€佺被鍨嬨€佹槸鍚﹀崟渚嬨€佷緷璧栫瓑淇℃伅寮圭哀瀹瑰櫒銆傝闂甴ttp://localhost:8080/actuator/beans锛岃繑鍥炲涓嬶細5.6/heapdump绔偣璁块棶锛歨ttp://localhost:8080/actuator/heapdump浼氳嚜鍔ㄧ敓鎴愪竴涓狫vm鍫嗘枃浠秇eapdump銆傛垜浠彲浠ヤ娇鐢↗DK鑷甫鐨凧vm鐩戞帶宸ュ叿VisualVM鎵撳紑杩欎釜鏂囦欢鏌ョ湅鍐呭瓨蹇収銆?.7/threaddump绔偣涓汉瑙夊緱杩欎釜绔偣寰堝ソ鐢紝鏂逛究鎴戜滑姣忓ぉ瀹氫綅闂鐨勬椂鍊欐煡鐪嬬嚎绋嬫儏鍐点€備富瑕佹樉绀虹嚎绋嬪悕绉般€佺嚎绋婭D銆佺嚎绋嬬姸鎬併€佹槸鍚︾瓑寰呴攣璧勬簮銆佺嚎绋嬪爢鏍堢瓑淇℃伅锛屽彲鑳界湅璧锋潵涓嶅鐩磋銆傝闂甴ttp://localhost:8080/actuator/threaddump锛岃繑鍥炲涓嬶細5.8/shutdownendpoint璇ョ鐐瑰睘浜庢搷浣滄帶鍒剁鐐癸紝鍙互浼橀泤鐨勫叧闂璖pringBoot搴旂敤銆傝浣跨敤璇ュ姛鑳斤紝棣栧厛闇€瑕佸湪閰嶇疆鏂囦欢涓紑鍚細management.endpoint.shutdown.enabled=true鐢变簬鍏抽棴鐣岄潰榛樿鍙敮鎸丳OST璇锋眰锛屾墍浠ユ垜浠惎鍔―emo宸ョ▼锛屽悜http://鍙戣捣POST璇锋眰/localhost:8080/鎵ц鍣?鍏虫満銆傝繑鍥炴秷鎭細{"message":"Shuttingdown,bye..."}鐒跺悗鍏抽棴搴旂敤銆傜敱浜庢墦寮€鍜屽叧闂簲鐢ㄧ▼搴忔湰韬殑鎿嶄綔鏄竴浠堕潪甯稿嵄闄╃殑浜嬫儏锛屾墍浠ュ湪瀹為檯鍦ㄧ嚎浣跨敤鏃讹紝鎴戜滑闇€瑕佷负鍏舵坊鍔犱竴瀹氱殑淇濇姢鏈哄埗锛屼緥濡傦細鑷畾涔堿ctuator鐨勭鐐硅矾寰勶紝闆嗘垚SpringSecurity杩涜瀹夊叏楠岃瘉锛岀瓑锛堝鏋滀笉鏄壒鍒渶瑕侊紝杩欎釜绔偣涓嶉渶瑕佸紑鍚級6.闆嗘垚SpringSecurity锛屽绔偣杩涜瀹夊叏楠岃瘉鐢变簬绔偣浜х敓鐨勪俊鎭拰浜や簰闈炲父鏁忔劅锛屾墍浠ュ繀椤婚槻姝㈡湭缁忔巿鏉冪殑澶栭儴璁块棶.濡傛灉鎮ㄧ殑搴旂敤绋嬪簭渚濊禆浜嶴pringSecurity锛屽垯榛樿鎯呭喌涓嬩娇鐢ㄥ熀浜庤〃鍗曠殑HTTP韬唤楠岃瘉鏉ヤ繚鎶ょ鐐广€傚鏋滄病鏈夛紝鍙渶瑕佹坊鍔犲搴旂殑渚濊禆鍗冲彲锛氳鍒欐潵瑕嗙洊SpringSecurity鐨勯粯璁ら厤缃€傝繖閲屾垜缁欏嚭涓や釜鐗堟湰鐨勬ā鏉块厤缃細importorg.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest锛涘鍏rg.springframework.boot.actuate.context.ShutdownEndpoint锛涘鍏rg.springframework.boot.autoconfigure.security.servlet.PathRequest锛涘鍏rg.springframework.context.annotation.Configuration锛涘鍏rg.springframework.security.config.annotation.web.builders.HttpSecurity锛涘鍏rg.springframework.security銆傞厤缃?annotation.web.configuration銆俉ebSecurityConfigurerAdapter;/***@authorRichard_yyf*/@ConfigurationpublicclassActuatorSecurityConfigextendsWebSecurityConfigurerAdapter{/**version1:*1.闄愬埗瀵?/shutdown'绔偣鐨勮闂紝鍙厑璁窤CTUATOR_ADMIN璁块棶*2.鍏佽澶栭儴璁块棶鍏朵粬绔偣*3.鍏佽澶栭儴璁块棶闈欐€佽祫婧?4.鍏佽澶栭儴璁块棶'/'*5.鍏朵粬璁块棶闇€瑕侀獙璇?version2:*1.闄愬埗璁块棶鎵€鏈夌鐐癸紝鍙厑璁窤CTUATOR_ADMIN璁块棶*2.鍏佽澶栭儴璁块棶闈欐€佽祫婧?3.鍏佽澶栭儴璁块棶'/'*4.鍏朵粬璁块棶闇€瑕侀獙璇?/@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException{//version1//http//.authorizeRequests()//.requestMatchers(EndpointRequest.to(ShutdownEndpoint.class))//.hasRole("ACTUATOR_ADMIN")//.requestMatchers(EndpointRequest.toAnyEndpoint())//.permitAll()//.requestMatchers(PathRequest.toStaticResources().atCommonLocations())//.permitAll()//.antMatchers("/")//.permitAll()//.antMatchers("/**")//.authenticated()//.and()//.httpBasic();//version2http.authorizeRequests().requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("ACTUATOR_ADMIN").requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll().antMatchers("/").permitAll().antMatchers("/**").authenticated().and().httpBasic();}}application.properties鐨勭浉鍏抽厤缃涓嬶細#SpringSecurity榛樿鐢ㄦ埛鍚嶅拰瀵嗙爜spring.security.user.name=actuatorspring.security.user.password=actuatorspring.security.user.roles=ACTUATOR_ADMINConclusion鐨勫唴瀹规湰鏂囧埌姝ょ粨鏉燂紝鐩稿簲鐨勬簮鐮佸彲浠ュ湪Github涓婄湅鍒般€?https://github.com/Richard-yy...)濡傛灉鏈枃瀵规偍鏈夋墍甯姪锛屽笇鏈涙偍鑳界偣涓禐銆傝繖鏄垜鏈€澶х殑鍔ㄥ姏馃馃馃馃銆傚弬鑰冿細https://docs.spring.io/spring...http://www.ityouknow.com/spri...杩戞湡鐑偣鏂囩珷鎺ㄨ崘锛?.1000+Java闈㈣瘯棰樺強绛旀锛?021鏈€鏂扮増锛?.鍒啀鍦ㄦ弧灞忕殑if/else閲屼簡锛岃瘯璇曠瓥鐣ユā寮忥紝澶埥浜嗭紒锛?.鎿嶏紒Java涓瓁x鈮爊ull鐨勬柊璇硶鏄粈涔堬紵4銆丼pringBoot2.5鍙戝竷锛屾繁鑹叉ā寮忓お鐐镐簡锛?.銆奐ava寮€鍙戞墜鍐岋紙宓╁北鐗堬級銆嬫渶鏂板彂甯冿紝璧跺揩涓嬭浇鍚э紒鎰熻涓嶉敊锛屽埆蹇樹簡鐐硅禐+杞彂锛?/p>