why
使用spring boot admin 可以更方便監(jiān)控服務(wù)狀態(tài), 還可以監(jiān)控部署服務(wù)的各項(xiàng)信息, 例如JVM, 日志... 反正是服務(wù)監(jiān)控必備產(chǎn)品.
admin monitor 工程解讀
工程位于: https://gitee.com/xiaofeipapa/spring-cloud-demo
目錄是: admin-demo
增加項(xiàng)目依賴
在工程的pom中可以看到增加了如下依賴:
<dependencies>
<!--Admin-Server-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
我寫這篇博客的時(shí)間是 2021/3/8 , 當(dāng)前版本是 2.3.1 . Spring boot admin 有可能會(huì)和Spring 本身有包沖突, 所以要注意版本的問(wèn)題.
新增啟動(dòng)類
package org.xiaofeipapa.feimall.admin;
import de.codecentric.boot.admin.server.config.AdminServerHazelcastAutoConfiguration;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* 作者: 小肥爬爬
* 簡(jiǎn)書: http://www.reibang.com/u/db796a501972
* gitee: https://gitee.com/xiaofeipapa
* 郵箱: imyunshi@163.com
* 您可以自由轉(zhuǎn)載此博客文章, 懇請(qǐng)保留原鏈接, 謝謝!
**/
@SpringBootApplication
@EnableAdminServer
@EnableDiscoveryClient
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MonitorAdminApplication {
public static void main(String[] args) {
SpringApplication.run( MonitorAdminApplication.class, args );
}
}
主要是多了個(gè) @EnableAdminServer 的注解, 沒(méi)什么太特殊的.
配置文件
##################
# 以下配置到consul #
##################
spring:
application:
name: monitor-admin
boot:
admin:
discovery:
ignored-services: consul,aliyun-*,baidu-*
cloud:
config:
enabled: false
consul:
host: localhost
port: 8500
discovery:
tags: management.context-path=/foo,health.path=/ping
#監(jiān)控監(jiān)控
management:
endpoints:
web:
exposure:
include: "*"
path-mapping:
health: /ping
base-path: /foo
endpoint:
health:
show-details: always
以上配置主要用于:
- 忽略 consul, aliyun, baidu ... 這些服務(wù). 特別是consul, 如果不忽略它會(huì)出錯(cuò).
- admin server 也是可以注冊(cè)到consul的, 它會(huì)自動(dòng)從consul 獲取當(dāng)前注冊(cè)的服務(wù).
- management 本身的配置
測(cè)試
依次啟動(dòng)各個(gè)服務(wù), 包括 MonitorAdminApplication 這個(gè)類, 然后訪問(wèn): localhost:8080, 就能看到:
在微服務(wù)間使用 admin client
server 和 client 模式
在上面的工程已經(jīng)可以看到 admin server的模式, 簡(jiǎn)單來(lái)說(shuō)server 模式就是一個(gè)網(wǎng)站, 可以讓你查看微服務(wù)的各項(xiàng)數(shù)據(jù). 但如果你點(diǎn)開(kāi)微服務(wù), 會(huì)發(fā)現(xiàn)只有很少數(shù)據(jù), 說(shuō)好的功能強(qiáng)大呢? 那是因?yàn)槲⒎?wù)并沒(méi)有實(shí)現(xiàn) admin 的 client 接口. 如果實(shí)現(xiàn)了client , 就能傳送準(zhǔn)確數(shù)據(jù)到 admin server 端.
修改 userApi 工程
修改pom
<!--Admin-client-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.3.1</version>
</dependency>
修改配置文件
boot:
admin:
client:
# 即 admin server 的地址
url: http://localhost:8080
instance:
#默認(rèn)使用的是主機(jī)名注冊(cè),改為使用ip注冊(cè)
prefer-ip: true
management:
endpoints:
web:
exposure:
#開(kāi)放所有頁(yè)面節(jié)點(diǎn) 默認(rèn)只開(kāi)啟了health锉矢、info兩個(gè)節(jié)點(diǎn)
include: '*'
endpoint:
health:
#顯示健康具體信息 默認(rèn)不會(huì)顯示詳細(xì)信息
show-details: always
測(cè)試
重啟 userApi 工程, 然后訪問(wèn) localhost:8080 , 點(diǎn)進(jìn) userApi, 可以看到展示的信息豐富了許多:
最后
spring boot admin 還可以輕松集成 security 框架, 在登錄前加一個(gè)用戶/驗(yàn)證碼的驗(yàn)證頁(yè)面. 不過(guò)個(gè)人覺(jué)得不是特別必要, 在網(wǎng)上也很容易能查到集成的方法, 就不再贅述了.