SpringBoot监控

一. SpringBoot-Actuator

1.1什么是Actuator

        Actuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。 可以使用HTTP的各种请求来监管,审计,收集应用的运行情况。Spring Boot Actuator提供了对单个 Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期。特别对于微服务管理十分有意义。

Actuator 的 REST 接口
Actuator 监控分成两类:原生端点和用户自定义端点;自定义端点主要是指扩展性,用户可以根据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。

原生端点是在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况。

原生端点又可以分成三类:

应用配置类:可以查看应用在运行期的静态信息:例如自动配置信息、加载的 springbean 信息、yml 文件配置信息、环境信息、请求映射信息;

度量指标类:主要是运行期的动态信息,例如堆栈、请求链、一些健康指标、metrics 信息 等;

操作控制类:主要是指 shutdown,用户可以发送一个请求将应用的监控功能关闭。 Actuator 提供了 13 个接口,具体如下表所示。

 1.2.Actuator的使用

使用Actuator功能与springBoot使用其他功能一样简单,只需要在pom.xml中添加如下依赖:

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

修改配置文件

server:
  port: 8888
info:
  app:
    name: spring-boot-actuator
    version: 1.0
    test: test

management:
  endpoints:
    web:
      exposure:
        include: '*' #可以打开所有的监控点
  endpoint:
    health:
      show-details: always #展示细节,除了always之外还有when-authorized、never,默认值是never
    shutdown:
      enabled: true #开启优雅关机

修改配置文件后重启服务后,访问相关接口,就可以查看相关信心,也可以使用post请求访问shutdown接口实现优雅关节,这里就不做过多演示了。有兴趣的小伙伴可以去官网查看

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/        

 

二.Spring Boot Admin

2.1什么是Spring Boot Admin

对于spring actuator而言,最大的缺点在于是以json形式来进行展示,为了更好的进行监控 显示,我们来介绍一个更加方便的工具:spring boot admin。

Spring Boot Admin:可视化后台管理系统

Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以 返回在列表中浏览所有被监控spring-boot项目的基本信息比如:Spring容器管理的所有的bean、 详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表 和命中率)等,Threads 线程管理,Environment 管理等。

利用springbootadmin进行监控的架构图如下:

 springbootadmin监控

通俗点,就是我们如果有n个springboot业务系统需要监控的话,那么需要一个额外的

springbootadmin应用来进行监控这些client,client和server之间需要做一点配置即可。

2.2SpringBootAdmin的使用

2.2.1搭建Server端

a.添加相关启动器

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>

b.修改yml中的端口号

server:
  port: 8081

c.在启动类中开启服务端

@EnableAdminServer
@SpringBootApplication
public class SpringbootadminserverApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootadminserverApplication.class, args);
    }

}

d.启动服务端 

2.2.2搭建客户端

a.添加相关启动器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.1.0</version>
</dependency>

b.编写application.yml

server:
  port: 8080
#自定义配置信息用于"/actuator/info"读取
info:
  name: 老王
  age: 100
  phone: 110
#通过下面的配置启用所有的监控端点,默认情况下,这些端点是禁用的;
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
    ## 将Client作为服务注册到Server,通过Server来监听项目的运行情况
spring:
  boot:
    admin:
      client:
        url: http://localhost:8081
        ##application实例名
  application:
    name: spring-boot-admin-client

c.编写demo.java

@RestController
public class demo {

    @RequestMapping("/index")
    public String index() {
        return "这是 index";
    }

    @RequestMapping("/home")
    public String home() {
        return "这是 home";
    }
}

d.启动Client

秒后刷新,可以看到 client 端已注册到 server。

 查看 client 详细信息:

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值