spring boot集成 Admin
- 1. spring boot admin
- 2. spring boot admin 集成 turbine(admin 2.x不支持,未實現)
- 2.1 spring boot admin client hystrix
- 2.2 spring boot admin client service
- 2.3 spring boot admin client turbine
- 2.4 spring boot admin server turbine
- 3. spring boot admin 集成 security
git地址
https://github.com/a18792721831/studySpringCloud.git
1. spring boot admin
1.1 spring boot admin server
1.1.1 創建
1.1.2 配置
詳細配置見 https://codecentric.github.io/spring-boot-admin/2.2.1/
1.1.3 日誌模板
1.1.4 註解
1.1.5 啓動
啓動eureka server以及admin-server
然後訪問admin-server的端口
admin-clinet是接下來需要創建的。
選中進去還有更加詳細的信息
同時在項目根路徑下生成了日誌文件
當然,在界面上也能看日誌
還可以給不同的日誌設置不同的顏色
因爲admin組件集成了actuator,所以,在actuator裏面的信息admin都能展示。
很強大。
展示線程活動
黃色是wait
綠色是run
甚至子線程也能展示
映射等
沒有集成緩存組件,所以沒有緩存。
關鍵性日誌等
話說admin的展示很強大,也很美觀,但是感覺有些重,太細了,對於生產一般好幾年,這個就有些不太適用了。
1.2 spring boot admin client
1.2.1 創建
1.2.2 配置
1.2.3 日誌模板
1.2.4 註解
1.2.5 啓動
2. spring boot admin 集成 turbine(admin 2.x不支持,未實現)
2.1 spring boot admin client hystrix
2.1.1 創建
2.1.2 配置
2.1.3 日誌模板
2.1.4 註解
2.1.5 controller
2.1.6 hystrix 配置
2.1.7 啓動驗證
成功熔斷。
2.2 spring boot admin client service
2.2.1 創建
2.2.2 配置
2.2.3 日誌模板
2.2.4 註解
2.2.5 controller
2.2.6 啓動驗證
熔斷器正確訪問。
2.3 spring boot admin client turbine
2.3.1 創建
2.3.2 配置
2.3.3 日誌模板
2.3.4 註解
2.3.5 啓動驗證
2.4 spring boot admin server turbine
擦,看的資料太老舊了,spring cloud admin 2.x刪除了這部分。。。。
3. spring boot admin 集成 security
3.1 創建
3.2 配置
server:
port: 8321
eureka:
client:
# register-with-eureka: false
# fetch-registry: false
service-url:
defaultZone: http://127.0.0.1:8761/eureka/
instance:
metadata-map:
user.name: ${admin.login.user.name}
user.password: ${admin.login.user.pswd}
logging:
level:
org:
springframework:
web:
servlet:
mvc:
method:
annotation:
RequestMappingHandlerMapping: trace
file: logs/spring-boot-admin-server.log
spring:
freemarker:
template-loader-path: classpath:/templates/
prefer-file-system-access: false
application:
name: admin-server
boot:
admin:
client:
username: ${admin.login.user.name}
password: ${admin.login.user.pswd}
instance:
metadata:
user.name: ${admin.login.user.name}
user.password: ${admin.login.user.pswd}
management:
endpoints:
web:
exposure:
include: '*'
admin.login.user.name=admin
admin.login.user.pswd=123456
admin.login.user.role=ADMIN
這裏有一個詭異的問題:密碼必須是password,配置其他的密碼,在最終登錄時,都是無效用戶名密碼。
基於此,嘗試修改用戶名,發現在其他條件不變的條件下,修改用戶名是可以登錄的。
修改密碼則導致無法登錄。
3.3 配置類
35行設置默認的url是/
38設置所有的都需要憑證
42行設置登錄界面
43行設置登出界面
46行設置使用httpBasic(通過配置,應該可以實現其他的)
45、46行設置禁止csrf(不知道這個scrf是個啥)
47行設置保存用戶名密碼的選項
比較坑的是52行
首先給大家看下官網給出的例子:
https://codecentric.github.io/spring-boot-admin/2.2.1/#_securing_spring_boot_admin_server
對52行完全沒有任何說明,給的例子裏面是這樣的:
發現沒有,他的用戶名和密碼以及角色,都是在代碼中硬編碼了。
所以,對於官網給出的例子,我個人感覺這裏硬編碼不太好。
使用硬編碼就必須使用user的用戶名和password的密碼。
(這個之前沒想到官網實例還是這麼坑,且沒啥說明)
經過不斷的測試,決定使用配置。
admin.login.user.name=admin
admin.login.user.pswd=123456
admin.login.user.role=ADMIN
然後在config裏面讀取配置,這樣至少不是硬編碼了。
還有一個疑點:
這個必須這樣寫,當然還有其他的幾種可以選擇。
有故事,不單純。
所以,這個noop還真不是亂寫的。
看這些類的名稱以及操作,應該是與密碼加密存儲使用有關的。
仔細看看裏面的操作,noop差不多就是不加密(無語。。。。)
當然,其他的我未親自驗證,這裏只是一個猜測。
3.4 日誌模板
3.5 註解
3.6 啓動驗證
這個記住用戶就是在配置類裏面最後一行加上去的。