SpringBoot 指标监控actuator的专题

目录
  • 1.写在前面
  • 2.SpringBoot Actuator
  • 3.定制化Endpoint
    • 3.1 定制health端点信息
    • 3.2 定制info端点信息

1.写在前面

首先肯定要说一下SpringBoot的四大核心了:

  • 自动装配:简单配置甚至零配置即可运行项目
  • 起步依赖:场景启动器
  • Actuator:指标监控
  • 命令行界面 :命令行

这篇文章呢,我来和大家聊聊指标监控这个东西。

2.SpringBoot Actuator

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

要开启指标监控功能,首先需要在pom文件种添加如下依赖:

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

然后在配置文件中先做如下配置:

server:
  port: 8080

# 暴露所有监控信息为HTTP
management:
  endpoints:
    enabled-by-default: true # 默认开启所有监控端点信息
    web:
      exposure:
        include: '*' # 以web方式暴露所有端点

然后启动项目,进行测试:

下图中测试得到的内容就是目前项目中可以监控到的各种指标参数信息。

在指标监控这个功能中,有一个经常提到的词叫:端点。那么常用常见的端点如下图:👇👇👇

上面我们访问指标监控的url是:http://localhost:8080/actuator/ 即可获取到所有端点信息。那么如果想要获取某个端点信息,url就应该是:

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

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

重要的几点:

  • health endpoint返回的结果,应该是一系列健康检查后的一个汇总报告
  • 很多的健康检查默认已经自动配置好了,比如:数据库、redis等
  • 可以很容易的添加自定义的健康检查机制

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

  • 通过Metrics对接多种监控系统
  • 简化核心Metrics开发
  • 添加自定义Metrics或者扩展已有Metrics

上面的这些测试结果就是我们根据当前项目,获取到某个端点的详细指标信息。

除此之外,我们也可以对这些端点进行手动开启或者禁用。(参见下面的配置文件)

server:
  port: 8080

# 暴露所有监控信息为HTTP
management:
  endpoints:
    enabled-by-default: false # 默认开启所有监控端点信息
    web:
      exposure:
        include: '*' # 以web方式暴露所有端点
# 需要开启或者禁用某个Endpoint
# 配置模式为 management.endpoint.<endpointName>.enabled = true/false
  endpoint:
    health:
      show-details: always # 总是显示health端点的详细信息
      enabled: true
    info:
      enabled: true
    beans:
      enabled: true
 

上面的测试截图就是我们手动的开启某些端点、同时关闭了某些端点之后的结果。

3.定制化Endpoint

3.1 定制health端点信息

以上的所有内容都是在使用SpringBoot为我们提供的官方的Endpoint,那么我们也是可以自定义Endpoint的(也即定制化Endpoint)。

有两种方式:①继承AbstractHealthIndicator抽象类(doHealthCheck(Health.Builder builder)方法);②实现HealthIndicator接口(重写health()方法)。我是用第一种方法简单做个测试吧。

package com.szh.boot.health;

import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.Status;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 *
 */
@Component
public class MyComHealthIndicator extends AbstractHealthIndicator {

    /**
     * 真实的检查方法
     * @param builder
     * @throws Exception
     */
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        Map<String,Object> map = new HashMap<>();
        //模拟检查过程
        if (1 == 1) {
//            builder.up(); //健康
            builder.status(Status.UP);
            map.put("count",1);
            map.put("ms",100);
        } else {
//            builder.down(); //宕机
            builder.status(Status.DOWN);
            map.put("error","连接超时");
            map.put("ms",3000);
        }

        builder.withDetail("code",20001)
                .withDetails(map);
    }
}

配置文件如下:👇👇👇

server:
  port: 8080

# 暴露所有监控信息为HTTP
management:
  endpoints:
    enabled-by-default: false # 默认开启所有监控端点信息
    web:
      exposure:
        include: '*' # 以web方式暴露所有端点
# 需要开启或者禁用某个Endpoint
# 配置模式为 management.endpoint.<endpointName>.enabled = true/false
  endpoint:
    health:
      show-details: always # 总是显示health端点的详细信息
      enabled: true

然后我们启动测试,访问路径:http://localhost:8080/actuator/health。从结果中看到有一个端点myCom就是我们自定义的(命名方式就是 MyComHealthIndicator 类去掉后面的 HealthIndicator)。

3.2 定制info端点信息

首先在配置文件中添加如下内容:(最后几行)

server:
  port: 8080

# 暴露所有监控信息为HTTP
management:
  endpoints:
    enabled-by-default: false # 默认开启所有监控端点信息
    web:
      exposure:
        include: '*' # 以web方式暴露所有端点
# 需要开启或者禁用某个Endpoint
# 配置模式为 management.endpoint.<endpointName>.enabled = true/false
  endpoint:
    health:
      show-details: always # 总是显示health端点的详细信息
      enabled: true
    info:
      enabled: true
    beans:
      enabled: true
info:
  appName: spring-boot-actuator-endpoint-info
  version: 2.0.0
  mavenProjectName: @project.artifactId@
  mavenProjectVersion: @project.version@

然后创建一个类,实现 InfoContributor 这个接口,并且重写接口中的 contribute(Info.Builder builder) 方法。

package com.szh.boot.info;

import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.stereotype.Component;

import java.util.Collections;

/**
 *
 */
@Component
public class ExampleInfoContributor implements InfoContributor {

    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("example", Collections.singletonMap("key","value"));
    }

}

最后我们启动测试一下,访问路径:http://localhost:8080/actuator/info。得到的数据就是我们上面通过代码写好的内容。

到此这篇关于SpringBoot 指标监控actuator的专题的文章就介绍到这了,更多相关SpringBoot 指标监控内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot Admin 如何实现Actuator端点可视化监控

    目录 SpringBoot Admin 实现Actuator端点可视化监控 简介 Spring Boot Admin Server Spring Boot Admin Client 启动客户端, 在管理端进行可视化端点监控 Spring Boot 监控信息可视化 一.设置Spring Boot Admin Server 二.注册客户端 SpringBoot Admin 实现Actuator端点可视化监控 简介 Actuator可视化监控SpringBoot Admin Note: SpringB

  • SpringBoot配置Actuator组件,实现系统监控

    目录 一.Actuator简介 二.与SpringBoot2.0整合 1.核心依赖Jar包 2.Yml配置文件 三.监控接口详解 1.Info接口 2.Health接口 3.Beans接口 4.Conditions接口 5.HeapDump接口 6.Mappings接口 7.ThreadDump接口 8.ShutDown接口 四.源代码地址 一.Actuator简介 监控分类 Actuator 提供Rest接口,展示监控信息. 接口分为三大类: 应用配置类:获取应用程序中加载的应用配置.环境变量

  • 基于SpringBoot应用监控Actuator安全隐患及解决方式

    概述 微服务作为一项在云中部署应用和服务的新技术是当下比较热门话题,而微服务的特点决定了功能模块的部署是分布式的,运行在不同的机器上相互通过服务调用进行交互,业务流会经过多个微服务的处理和传递,在这种框架下,微服务的监控显得尤为重要. 而Actuator正是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息.创建的Spring beans信息.系统环境变量的配置信息以及Web请求的详细信息等. 如果使用不当或者一些不经意的疏忽,可能造成信

  • SpringBoot基于Actuator远程关闭服务

    1.在pom.xml文件引入依赖 <!-- 运行状态监控actuator依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 2.配置文件配置 server: port: 8100 #web服务端口 servlet:

  • SpringBoot实现监控Actuator,关闭redis监测

    目录 SpringBoot监控Actuator,关闭redis监测 方法 springboot Actuator 查看配置明细 运行时度量 SpringBoot监控Actuator,关闭redis监测 方法 当我们导入了spring-boot-starter-actuator这个依赖后, SpringBoot会默认去监测一些信息.其中就包括redis. 会根据redis的默认初始配置, localhost:6379 尝试连接redis.如果我们没有用到redis, 启动就会报错 <depende

  • SpringBoot actuator 健康检查不通过的解决方案

    SpringBoot actuator 健康检查不通过 今天遇到有个服务能够注册成功,但是健康检查不通过,通过浏览器访问健康检查的url,chrome的network一直显示pending,说明这个请求提交了,但是得不到返回,卡住了. 原来以为健康检查就是检查服务端口下的/health这个请求本身是否能正常返回,其实不是. 所谓健康检查是有很多检查项的,springboot中继承AbstractHealthIndicator的类,比如DataSourceHealthIndicator Redis

  • SpringBoot指标监控的实现

    目录 一.SpringBoot--Actuator 1.1 快速开始 1.2 简单介绍最常用的几个端点 1.3 开启或关闭某个端点 1.4 定制端点 1.5 SpringBoot--Admin Server 一.SpringBoot--Actuator 1.1 快速开始 未来每一个微服务在运算部署以后,我们都需要对其进行监控.追踪.审计和控制等等.Springboot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控.审计等功能. 那么,我们要怎么用呢? 首先,导

  • Prometheus 入门教程之SpringBoot 实现自定义指标监控

    上篇文章我们已经可以在 Grafana 上看到对应的 SpringBoot 应用信息了,通过这些信息我们可以对 SpringBoot 应用有更全面的监控.但是如果我们需要对一些业务指标做监控,我们应该怎么做呢?这篇文章就带你一步步实现一个模拟的订单业务指标监控. 假设我们有一个订单系统,我们需要监控它的实时订单总额.10 分钟内的下单失败率.请求失败数.那么我们应该怎么做呢? 添加业务监控指标 在 spring-web-prometheus-demo 项目的基础上,我们添加一个 Promethe

  • springboot Actuator的指标监控可视化功能详解

    springboot为我们提供了丰富的指标监控功能SpringBoot Actuator SpringBoot Actuator是springboot为简化我们对微服务项目的监控功能抽取出来的模块,使得我们每个微服务快速引用即可获得生产界别的应用监控.审计等功能. 后序文章会更新使用 我们先来看看怎么可视化 我们可以通过github上的开源项目 这里 我们创建一个springboot项目 作为可视化的服务端 使用新功能首先都是引入依赖 需要web项目 <dependency> <grou

  • SpringBoot 指标监控actuator的专题

    目录 1.写在前面 2.SpringBoot Actuator 3.定制化Endpoint 3.1 定制health端点信息 3.2 定制info端点信息 1.写在前面 首先肯定要说一下SpringBoot的四大核心了: 自动装配:简单配置甚至零配置即可运行项目 起步依赖:场景启动器 Actuator:指标监控 命令行界面 :命令行 这篇文章呢,我来和大家聊聊指标监控这个东西. 2.SpringBoot Actuator 未来每一个微服务在云上部署以后,我们都需要对其进行监控.追踪.审计.控制等

  • 聊一聊SpringBoot服务监控机制

    前言 任何一个服务如果没有监控,那就是两眼一抹黑,无法知道当前服务的运行情况,也就无法对可能出现的异常状况进行很好的处理,所以对任意一个服务来说,监控都是必不可少的. 就目前而言,大部分微服务应用都是基于 SpringBoot 来构建,所以了解 SpringBoot 的监控特性是非常有必要的,而 SpringBoot 也提供了一些特性来帮助我们监控应用. 本文基于 SpringBoot 2.3.1.RELEASE 版本演示. SpringBoot 监控 SpringBoot 中的监控可以分为 H

  • SpringBoot服务监控机制原理解析(面试官常问)

    前言 任何一个服务如果没有监控,那就是两眼一抹黑,无法知道当前服务的运行情况,也就无法对可能出现的异常状况进行很好的处理,所以对任意一个服务来说,监控都是必不可少的. 就目前而言,大部分微服务应用都是基于 SpringBoot 来构建,所以了解 SpringBoot 的监控特性是非常有必要的,而 SpringBoot 也提供了一些特性来帮助我们监控应用. 本文基于 SpringBoot 2.3.1.RELEASE 版本演示. SpringBoot 监控 SpringBoot 中的监控可以分为 H

  • SpringBoot可视化监控的具体应用

    本文主要介绍了Spring Boot 应用可视化监控,分享给大家,具体如下: 1.Spring Boot 应用暴露监控指标[版本 1.5.7.RELEASE] 首先,添加依赖如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> /

  • SpringBoot2零基础到精通之JUnit 5与指标监控

    目录 1 单元测试JUnit 5 1.1JUnit 5简介以及使用 1.2 常用的测试注解 1.3 断言(assertions) 1.4 前置条件(assumptions) 1.5 嵌套测试 1.6 参数化测试 2 指标监控 2.1 使用url实现监控 2.2 可视化的监控平台 1 单元测试JUnit 5 1.1JUnit 5简介以及使用   JUnit5作为最新版本的JUnit框架与之前版本的Junit框架有很大的不同.JUnit5主要由三个不同子项目的几个不同模块组成:JUnit Platf

随机推荐