一、基本介绍
- 什么是服务监控
监视当前系统应用状态、内存、线程、堆栈、日志等等相关信息,主要目的在服务出现问题或者快要出现问题时能够准确快速地发现以减小影响范围。
- 为什么要使用服务监控
服务监控在微服务改造过程中的重要性不言而喻,没有强大的监控能力,改造成微服务架构后,就无法掌控各个不同服务的情况,在遇到调用失败时,如果不能快速发现系统的问题,对于业务来说就是一场灾难。
- spring boot actuator 服务监控接口
actuator
是监控系统健康情况的工具。
- spring boot admin 服务监控管理
Spring Boot Admin
是一个针对spring-boot
的actuator
接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot
项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。
二、如何使用
1、添加依赖
<!-- SpringBoot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、在application.yml
配置暴露所有监控端点
management:
endpoints:
web:
exposure:
include: '*'
3、监控启动类
@SpringBootApplication
public class RuoYiMonitorApplication
{
public static void main(String[] args)
{
SpringApplication.run(RuoYiMonitorApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 监控中心启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" +
" | _ _ \\ \\ \\ / / \n" +
" | ( ' ) | \\ _. / ' \n" +
" |(_ o _) / _( )_ .' \n" +
" | (_,_).' __ ___(_ o _)' \n" +
" | |\\ \\ | || |(_,_)' \n" +
" | | \\ `' /| `-' / \n" +
" | | \\ / \\ / \n" +
" ''-' `'-' `-..-' ");
}
}
4、启动后访问http://localhost:9100/actuator
,返回正确数据表示测试通过。
三、端点分类
地址 | 描述 |
---|---|
/beans | 显示所有的Spring bean 列表 |
/caches | 显示所有的缓存相关信息 |
/scheduledtasks | 显示所有的定时任务相关信息 |
/loggers | 显示所有的日志相关信息 |
/configprops | 显示所有的配置信息 |
/env | 显示所有的环境变量信息 |
/mappings | 显示所有控制器相关信息 |
/info | 显示自定义用户信息配置 |
/metrics | 显示应用指标相关信息 |
/health | 显示健康检查状态信息,up 表示成功 down 表示失败 |
/threaddump | 显示程序线程的信息 |
四、整合Admin-UI
1、添加依赖
<!-- SpringBoot Admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
2、监控启动类
@EnableAdminServer
@SpringBootApplication
public class RuoYiMonitorApplication
{
public static void main(String[] args)
{
SpringApplication.run(RuoYiMonitorApplication.class, args)<