写点什么

SpringBoot2--- 指标监控,kalilinux 教程下载

用户头像
极客good
关注
发布于: 刚刚




1、SpringBoot Actuator


====================================================================================


1、简介




未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot 就抽取了 Actuator 场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-actuator</artifactId>


</dependency>





2、1.x 与 2.x 的不同


===========================================================================





3、如何使用


=====================================================================


  1. 引入场景

  2. 访问 http://localhost:8080/actuator/** (监控端点,有很多)

  3. 暴露所有监控信息为 HTTP


management:


endpoints:


enabled-by-default: true #暴露所有端点信息


web:


exposure:


include: '*' #以 web 方式暴露


测试


http://localhost:8080/actuator/beans


http://localhost:8080/actuator/configprops


http://localhost:8080/actuator/metrics


http://localhost:8080/actuator/metrics/jvm.gc.pause


http://localhost:8080/actuator/endpointName/detailPath


。。。。。。




2、Actuator Endpoint


==================================================================================


1、最常使用的端点






最常用的 Endpoint

Health:监控状况


Metrics:运行时指标


Loggers:日志记录




2、Health Endpoint




健康检查端点,我们一般用于在云平台,平台会定时的检查应用的健康状况,我们就需要 Health Endpoint 可以为平台返回当前应用的一系列组件健康状况的集合。


开启 health 的显示详细 endpoint.health.show-details=always


重要的几点:


  • health endpoint 返回的结果,应该是一系列健康检查后的一个汇总报告 (有任何一个应用是宕机状态,整个就是宕机状态)

  • 很多的健康检查默认已经自动配置好了,比如:数据库、redis 等

  • 可以很容易的添加自定义的健康检查机制





3、Metrics Endpoint




提供详细的、层级的、空间指标信息,这些信息可以被 pull(主动推送)或者 push(被动获取)方式得到;


  • 通过 Metrics 对接多种监控系统

  • 简化核心 Metrics 开发

  • 添加自定义 Metrics 或者扩展已有 Metrics





4、管理 Endpoints



1、开启与禁用 Endpoints

  • 默认所有的 Endpoint 除过 shutdown 都是开启的。

  • 需要开启或者禁用某个 Endpoint。配置模式为 management.endpoint..enabled = true


management:


endpoint:


beans:


enabled: true


  • 或者禁用所有的 Endpoint 然后手动开启指定的 Endpoint (management.endpoints.enabled-by-default 默认是 true)


management:


endpoints:


enabled-by-default: false


endpoint:


beans:


enabled: true


health:


enabled: true




2、暴露 Endpoints (监控端点)


===================================================================================


支持的暴露方式


HTTP:默认只暴露 health 和 info Endpoint


JMX:默认暴露所有 Endpoint (例如 Jconsole)


除过 health 和 info,剩下的 Endpoint 都应该进行保护访问。如果引入 SpringSecurity,则会默认配置安全访问规则






定制 Endpoint


==========================================================================


1、定制一个组件的 Health 信息(自定义的 Health 类名必须叫 xxxHealthIndicator.xxx 则是组件名字)



这里定制监控端点有两种方式,一种是实现 HealthIndicator 接口,一种是继承 AbstractHealthIndicator 抽象类


方法一: 继承接口

import org.springframework.boot.actuate.health.Health;


import org.springframework.boot.actuate.health.HealthIndicator;


import org.springframework.stereotype.Component;


@Component


public class MyHealthIndicator implements HealthIndicator {


@Override


public


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


Health health() {


int errorCode = check(); // perform some specific health check


if (errorCode != 0) {


return Health.down().withDetail("Error Code", errorCode).build();


}


return Health.up().build();


}


}


构建 Health


Health build = Health.down()


.withDetail("msg", "error service")


.withDetail("code", "500")


.withException(new RuntimeException())


.build();


management:


health:


enabled: true


show-details: always #总是显示详细信息。可显示每个模块的状态信息



方法二:实现抽象类

@Component


public class MyConHealthIndicator extends AbstractHealthIndicator {


//这里可以通过获取容器中某个我们要监测的组件,判断其健康情况,来决定是 up 还是 down


/**


  • 真实的检查方法

  • @param builder

  • @throws Exception


*/


@Override


protected void doHealthCheck(Health.Builder builder) throws Exception {


//mongodb。 获取连接进行测试


Map<String, Object> map = new HashMap<>();


// 检查完成


if (1 == 2) {


// builder.up(); //健康


builder.status(Status.UP);


map.put("count", 1);


map.put("ms", 100);


} else {


// builder.down();


builder.status(Status.OUT_OF_SERVICE);


map.put("err", "连接超时");


map.put("ms", 3000);


}


builder.withDetail("code", 100)


.withDetails(map);


}


}




设置为总是显示详细信息

management:


endpoints:


enabled-by-default: true #暴露所有端点信息


web:


exposure:


include: '*' #以 web 方式暴露


endpoint:


health:


show-details: always #总是显示详细信息。可显示每个模块的状态信息





2、定制 info 信息—用于展示当前应用详细信息



方式一: 编写配置文件

management:


endpoints:


enabled-by-default: true #暴露所有端点信息


web:


exposure:


include: '*' #以 web 方式暴露


endpoint:


health:


show-details: always #总是显示详细信息。可显示每个模块的状态信息


info:


appName: boot-admin


version: 2.0.1


mavenProjectName: @project.artifactId@ #使用 @@可以获取 maven 的 pom 文件值


mavenProjectVersion: @project.version@

方式二: 编写 InfoContributor

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
SpringBoot2---指标监控,kalilinux教程下载