详解spring-boot actuator(监控)配置和使用

 更新时间:2017年09月25日 09:12:44   作者:Clement-Xu  
本篇文章主要介绍了spring-boot actuator(监控)配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在生产环境中,需要实时或定期监控服务的可用性。spring-boot 的actuator(监控)功能提供了很多监控所需的接口。简单的配置和使用如下:

1、引入依赖:

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

如果使用http调用的方式,还需要这个依赖:

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

2、配置:

application.yml中指定监控的HTTP端口(如果不指定,则使用和server相同的端口);指定去掉某项的检查(比如不监控health.mail):

server: 
 port: 8082 
management: 
 port: 54001 
 health: 
  mail: 
   enabled: false 

3、使用:

查看health指标:http://localhost:54001/health

{"status":"UP","diskSpace":{"status":"UP","total":120031539200,"free":33554337792,"threshold":10485760},"db":{"status":"UP","dataSource1":{"status":"UP","database":"MySQL","hello":1},"dataSource2":{"status":"UP","database":"MySQL","hello":1}}} 

4、自定义指标:

4.1 /health:在某个类中implements HealthIndicator接口,然后实现其中的health()方法即可:

代码:

@SpringBootApplication 
@EnableScheduling 
public class MySpringBootApplication implements HealthIndicator{ 
  private static Logger logger = LoggerFactory.getLogger(MySpringBootApplication.class); 
   
  public static void main(String[] args) { 
    SpringApplication.run(MySpringBootApplication.class, args); 
    logger.info("My Spring Boot Application Started"); 
  } 
 
  /** 
   * 在/health接口调用的时候,返回多一个属性:"mySpringBootApplication":{"status":"UP","hello":"world"} 
   */ 
  @Override 
  public Health health() { 
    return Health.up().withDetail("hello", "world").build(); 
  } 
} 

/health 运行结果(注意第二个指标):

{"status":"UP","mySpringBootApplication":{"status":"UP","hello":"world"},"diskSpace":{"status":"UP","total":120031539200,"free":33554337792,"threshold":10485760},"db":{"status":"UP","dataSource1":{"status":"UP","database":"MySQL","hello":1},"dataSource2":{"status":"UP","database":"MySQL","hello":1}}}

4.2 /info:配置如下,可以直接给一个字符串,也可以从pom.xml配置中获取

info: 
 app: 
  name: "@project.name@" #从pom.xml中获取 
  description: "@project.description@" 
  version: "@project.version@" 
  spring-boot-version: "@project.parent.version@" 

/info的结果如下:

{"app":{"name":"my-spring-boot","description":"Test Project for Spring Boot","version":"1.0","spring-boot-version":"1.3.6.RELEASE"}}

官网:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready

源代码参考:https://github.com/xujijun/my-spring-boot

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot中的 6 种API请求参数读取方式示例详解

    Spring Boot中的 6 种API请求参数读取方式示例详解

    使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求,这篇文章主要介绍了Spring Boot中的 6 种API请求参数读取方式示例详解,需要的朋友可以参考下
    2024-05-05
  • SpringBoot整合websocket实现即时通信聊天

    SpringBoot整合websocket实现即时通信聊天

    这篇文章主要介绍了SpringBoot整合websocket实现即时通信聊天,实时通信是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流,需要的朋友可以参考下
    2022-05-05
  • Java遍历Map键、值和获取Map大小的方法示例

    Java遍历Map键、值和获取Map大小的方法示例

    本篇文章主要介绍了Java遍历Map键、值和获取Map大小的方法示例,详细的介绍了Java遍历Map的两种实现方法和大小,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Spring案例打印机的实现过程详解

    Spring案例打印机的实现过程详解

    这篇文章主要介绍了Spring案例打印机的实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • SpringBoot属性注入的两种方法

    SpringBoot属性注入的两种方法

    这篇文章主要介绍了SpringBoot属性注入的两种方法,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-11-11
  • 使用Sentinel实现流控和服务降级的代码示例

    使用Sentinel实现流控和服务降级的代码示例

    Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,本文将详细为大家介绍如何使用Sentinel实现流控和服务降级,文中有相关的代码示例,需要的朋友可以参考下
    2023-05-05
  • Spring Boot快速实现 IP地址解析的示例详解

    Spring Boot快速实现 IP地址解析的示例详解

    这篇文章主要介绍了Spring Boot快速实现IP地址解析,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Spring Boot 中实现跨域的多种方式小结

    Spring Boot 中实现跨域的多种方式小结

    Spring Boot提供了多种方式来实现跨域请求,开发者可以根据具体需求选择适合的方法,在配置时,要确保不仅考虑安全性,还要兼顾应用的灵活性和性能,本文给大家介绍Spring Boot 中实现跨域的多种方式,感兴趣的朋友一起看看吧
    2024-01-01
  • Java加解密工具类源码示例

    Java加解密工具类源码示例

    最近在项目中接触到了数据加解密的业务,数据加密技术是网络中最基本的安全技术,这篇文章主要给大家介绍了关于Java加解密工具类源码的相关资料,需要的朋友可以参考下
    2023-11-11
  • MySQL 新增字段但 Java 实体未更新存在潜在问题与解决方案

    MySQL 新增字段但 Java 实体未更新存在潜在问题与解决方案

    在 Java + MySQL 的开发中,我们通常使用 ORM 框架(如 MyBatis、MyBatis-Plus、Hibernate)来映射数据库表与 Java 对象,这篇文章主要介绍了MySQL 新增字段但 Java 实体未更新:潜在问题与解决方案,需要的朋友可以参考下
    2025-04-04

最新评论