Spring Boot Admin最佳實踐


本文不進行Spring Boot Admin入門知識點說明

Spring Boot Actuator中提供很多像healthmetrics等實時監控接口,可以方便我們隨時跟蹤服務的性能指標。Spring Boot默認是開放這些接口提供調用的,那么就問題來了,如果這些接口公開在外網中,很容易被不法分子所利用,這肯定不是我們想要的結果。在這里我們提供一種比較好的解決方案。

  • 被監控的服務配置

為被保護的http請求添加請求前綴

1
2
3
4
5
6
management:
context-path: /example-context
eureka:
instance:
status-page-url-path: ${management.context-path}/info
health-check-url-path: ${management.context-path}/health
  1. 添加請求前綴
  2. Spring Boot Admin在啟動的時候會去eureka拉去服務信息,其中healthinfo需要特殊處理,這兩者的地址是根據status-page-url-pathhealth-check-url-path的值。
  • zuul網關配置

zuul保護內部服務http接口

1
2
zuul:
ignoredPatterns: /*/example-context/**
  1. 這里之所以不是/example-context/**,由於網關存在項目前綴,需要往前一級,大家可以具體場景具體配置
  • Spring Boot Admin配置

配置監控的指標參數

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
spring:< 大專欄  Spring Boot Admin最佳實踐/span>
application:
name: monitor
boot:
admin:
discovery:
converter:
management-context-path: /example-context
routes:
endpoints: env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream
turbine:
clusters: default
location: monitor

turbine:
aggregator:
clusterConfig: default
appConfig: monitor-example #<2>
clusterNameExpression: metadata['cluster']
  1. 與應用配置的management.context-path相同
  2. 添加需要被監控的應用Service-Id,以逗號分隔

講解一下,通過創建一個請求前綴,可以在網關處使用前綴的方式將其排除,也就是外網將無法訪問這些監控API,同時,內網還是可以進行加前綴的方式進行訪問,為Spring Boot Admin提供了支持條件。management還支持port和ip的方式,但這兩種方式有局限性,如果在同一台機器上部署多個服務,就會存在端口占用或者其他問題。這種方案還有一個好處,以上配置一旦確定以后,所有服務都不需要進行特殊化處理,可以直接使用。

問答:

  • 問題:Full authentication is required to access this resource

拓展閱讀:

spring-boot-admin-samples

issue

jolokia


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM