SpringBoot-监控

1.监控相关概念

a.监控的意义

  • 监控服务状态是否宕机
  • 监控服务运行指标(内存、虚拟机、线程、请求等)
  • 监控日志
  • 管理服务(服务下线)

b.监控的实施方式

  • 显示监控信息的服务器:用于获取服务信息,并显示对应的信息
  • 运行的服务:启动时主动上报,告知监控服务器自己需要受到监控

2.SpringBootAdmin可视化监控平台

勾选服务端还是客户端
在这里插入图片描述

  • Admin服务端
    服务端要做成Web项目
    设置启用Spring-Admin @EnableAdminServer
server:
  port: 8080
<dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>2.5.4</version>
</dependency>
  • Admin客户端
spring:
  boot:
    admin:
      client:
        url: http://localhost:8080
<dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.5.4</version>
</dependency>

Admin版本需与SpringBoot版本相同

3.actuator

监控原理

  • Actuator提供了SpringBoot生产就绪功能,通过端点的配置与访问,获取端点信息
  • 端点描述了一组监控信息,SpringBoot提供了多个内置端点,也可以根据需要自定义端点信息
  • 访问当前应用所有端点信息:/actuator
  • 访问端点详细信息:/actuator/端点名称
  • 启用指定端点
management:
  endpoint:
    health: # 端点名称
      enabled: true
      show-details: always
    beans: # 端点名称
      enabled: true
  • 启用所有端点
management:
  endpoints:
    enabled-by-default: true

4.info端点指标控制

  • 不配置情况下,无信息展示
    在这里插入图片描述
  • 通过配置文件,为info端点添加自定义指标
info:
  appName: @project.artifactId@
  version: @project.version@
  author: Kyle
  • 通过代码,为info端点添加自定义指标
@Component
public class InfoConfig implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
    	// withDetail
        builder.withDetail("runTime", System.currentTimeMillis());

		// withDetails
        Map infoMap = new HashMap();
        infoMap.put("buildTime","2023");
        builder.withDetails(infoMap);
    }
}

在这里插入图片描述

5.health端点指标控制

  • 通过代码,为health端点添加自定义指标
@Component
public class HealthConfig extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        builder.status(Status.UP);
        
        builder.withDetail("runTime", System.currentTimeMillis());

        Map infoMap = new HashMap();
        infoMap.put("buildTime","2023");
        builder.withDetails(infoMap);
    }
}

6.自定义端点

  • 自定义端点
  • 配置上@Endpoint(id=“端点名”)
  • @ReadOperation
@Component
@Endpoint(id = "pay", enableByDefault = true)
public class PayEndpoint {
    @ReadOperation
    public Object getPay(){
        Map payMap = new HashMap();
        payMap.put("Level1", "300");
        payMap.put("Level2", "212");
        payMap.put("Level3", "990");
        return payMap;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值