1,SpringBoot 監控中心:
針對微服務服務監控,服務器內存內存變化(對內存,線程,日志管理),檢測服務配置連接地址是否可用(模擬訪問,懶加載),故意將mysql 數據源連接密碼寫錯,啟動就會報錯 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
統計有多少bean(Spring 容器的bean),統計SpringMVC 的@requestMapping(Http 接口),
Actuator監控應用(沒有界面,返回json格式)
AdminUi,底層使用的就是Actuator監控應用,實現可視化的界面
應用場景:生產環境
2,為什么要使用SpringBoot 監控中心
Actuator是spring boot的一個附加功能,可幫助你在應用程序生產環境時監視和管理應用程序。可以使用HTTP的各種請求來監管,審計,收集應用的運行情況.特別對於微服務管理十分有意義.缺點:沒有可視化界面。
3,Actuator 的使用
step1: 添加actuator 的依賴
<!-- Actuator是spring boot的一個附加功能,可幫助你在應用程序生產環境時監視和管理應用程序。 可以使用HTTP的各種請求來監管,審計,收集應用的運行情況.特別對於微服務管理十分有意義.缺點:沒有可視化界面。 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
step2: 配置application.yml
#通過下面的配置啟用所有的監控端點,默認情況下,這些端點是禁用的;
management:
endpoints:
web:
exposure:
include: "*"
#單數據源
spring:
profiles:
active: prod
datasource:
url: jdbc:mysql://127.0.0.1:3306/testdb
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
4,訪問地址:
路徑 作用
/actuator/beans 顯示應用程序中所有Spring bean的完整列表。
/actuator/configprops 顯示所有配置信息。
/actuator/env 陳列所有的環境變量。
/actuator/mappings 顯示所有@RequestMapping的url整理列表。
/actuator/health 顯示應用程序運行狀況信息 up表示成功 down失敗
/actuator/info 查看自定義應用信息
Admin-Ui 分布式微服務監控中心
相當於啟動兩個服務,一個是Admin-Ui 的server,另一個是Admin-Ui需要監視的Server (可以稱做Client)
1,server 的maven 依賴
<dependencies> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.0.0</version> </dependency>
<!--admin-ui的主要配置-->
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <!-- Spring Boot Actuator對外暴露應用的監控信息,Jolokia提供使用HTTP接口獲取JSON格式 的數據 --> <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1</version> </dependency> </dependencies>
2,server 的配置文件:
spring:
application:
name: spring-boot-admin-server
3,server 的啟動類:
@Configuration @EnableAutoConfiguration @EnableAdminServer public class AdminServerApplication { public static void main(String[] args) { SpringApplication.run(AdminServerApplication.class, args); } }
4,被監控的服務(client)的配置maven 依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies>
<!--admin-ui的主要配置-->
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId> </dependency>
<dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
5,被監控的服務(client)的配置文件,本身定義了server 是8081,監控自己的server(對本server 來說是client 8080)
spring:
boot:
admin:
client:
url: http://localhost:8080
server:
port: 8081
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
6,啟動類
@SpringBootApplication public class AdminClientApplication { public static void main(String[] args) { SpringApplication.run(AdminClientApplication.class, args); } }
兩個服務都啟動之后,登陸8080 端口,就看到admin-ui 的頁面了