admin server
- 建立一个 spring boot 项目并添加 admin 依赖
1 2 3 4 5
| <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.2.2</version> </dependency>
|
1 2 3 4 5 6 7 8
| @EnableAdminServer @SpringBootApplication public class SpringcloudAdminServiceApplication {
public static void main(String[] args) { SpringApplication.run(SpringcloudAdminServiceApplication.class, args); } }
|
启动项目 访问:http://localhost:8091/
admin client
再新建一个 spring boot 项目
1 2 3 4 5 6 7 8 9 10 11 12 13
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
|
1 2 3
| server.port=8092
spring.boot.admin.client.url=http://localhost:8091
|
启动 client 项目。后访问:http://localhost:8091/
已经发现了一个应用了
点击应用可看到简单的信息。
在配置中 暴露 所有端点重启后再次访问:
1 2
| management.endpoints.web.exposure.include=*
|
就可以看到更多的信息了。
整合 Eureka 监控所有服务。
在 admin-server 项目中添加 Eureka client 依赖
1 2 3 4 5 6 7 8 9
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> // 如果想同时监控自己的信息 添加 actuator 并暴露所有端点 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11
| server.port=8091 spring.application.name=spring-cloud-admin-service
eureka.client.serviceUrl.defaultZone=http://WuZhiYong:123456@localhost:8761/eureka/,http://WuZhiYong:123456@localhost:8762/eureka/
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
management.endpoints.web.exposure.include=*
|
启动注册中心并把一些服务注册到注册中心里。(重启所有项目)
访问 :http://localhost:8091/ 点击应用墙可看到多个服务的实例
点击实例就可以看到每个实例的监控信息了
配置查看各个服务的日志
- 例如一个服务 logback 配置的日志输出文件为:
1
| <property name="LOG_FILE" value="D:/IdeaProjects/spring-cloud-study/springcloud-hystrix/sleuth-user-service.log" />
|
那么我在配置文件中加入:
1 2
| logging.file=D:/IdeaProjects/spring-cloud-study/springcloud-hystrix/sleuth-user-service.log logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx
|
重启服务,并打开 admin 中该服务的监控信息:即可看到实时日志。
同时在这里可控制日志每个类的级别
开启认证
在实际生产环境中,对服务的监控,自然是通过认证的才能够访问的。
1 2 3 4 5 6 7 8 9
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
|
1 2
| spring.security.user.name=wuzhiyong spring.security.user.password=123456
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @EnableWebSecurity public class SpringSecurityCustomConfig extends WebSecurityConfigurerAdapter {
@Override public void configure(HttpSecurity http) throws Exception { http .csrf().disable() .authorizeRequests() .antMatchers("/actuator/**").permitAll() .anyRequest().authenticated() .and() .formLogin() .and() .httpBasic() ; } }
|
《spring cloud 微服务 入门、进阶与实战》书中说。监控的服务中需要配置上与 admin 对应的用户名和密码,否则会注册失败。我这里尝试不配置重启后发现也是可以的。
1 2
| spring.boot.admin.client.username=wuzhiyong spring.boot.admin.client.password=123456
|
邮件警报
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11
| spring.mail.host=smtp.qq.com spring.mail.username=563653092@qq.com spring.mail.password= << 你的邮箱授权码 >> spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true
spring.boot.admin.notify.mail.to=563653092@qq.com
spring.boot.admin.notify.mail.from=563653092@qq.com
|
保存后重启 admin 。然后我们停掉一台服务。收到的邮件如下: