微服务健康监控之Spring Actuator是什么?

  在微服务健康监控之Spring Actuator初体验中已经知道其是个开箱即用的工具——Actuator是spring boot的一个附加功能,可在应用程序生产环境时监视和管理应用程序。那么它有哪些功能,又是如何工作的呢?

  Spring Boot Actuator提供了对单个 Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期,其使用HTTP的各种请求来监管,审计,收集应用的运行情况——对于微服务管理十分有意义。

  Actuator 监控分成两类:

    原生端点:在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况。该端点可以细分为三类:

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

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

      操作控制类:主要是指 shutdown,用户可以发送一个请求将应用的监控功能关闭。

    用户自定义端点:主要是指扩展性,用户可以根 据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。

  通过HTTP进行访问,就涉及到Actuator 的 REST 接口。Actuator 提供了以下接口:

HTTP 方法  路径  描述 
GET  /auditevents  显示应用暴露的审计事件 (比如认证进入、订单失败) 
GET  /beans  描述应用程序上下文里全部的 Bean,以及它们的关系 
GET  /conditions 

就是 1.0 的 /autoconfig ,提供一份自动配置生效的条件情 况,

记录哪些自动配置条件通过了,哪些没通过 

GET  /configprops  描述配置属性(包含默认值)如何注入Bean 
GET  /env  获取全部环境属性 
GET  /env/{name}  根据名称获取特定的环境属性值 
GET  /flyway  提供一份 Flyway 数据库迁移信息
GET  /liquidbase  显示Liquibase 数据库迁移的纤细信息 
GET  /health  报告应用程序的健康指标,这些值由 HealthIndicator 的实 现类提供 
GET  /heapdump  dump 一份应用的 JVM 堆信息 
GET  /httptrace  显示HTTP足迹,最近100个HTTP request/repsponse 
GET  /info  获取应用程序的定制信息,这些信息由info打头的属性提供 
GET  /logfile  返回log file中的内容(如果 logging.file 或者 logging.path 被 设置)
 GET  /loggers  显示和修改配置的loggers 
GET  /metrics  报告各种应用程序度量信息,比如内存用量和HTTP请求计 数 
GET  /metrics/{name}  报告指定名称的应用程序度量值 
GET  /scheduledtasks  展示应用中的定时任务信息 
GET  /sessions  如果我们使用了 Spring Session 展示应用中的 HTTP sessions 信息
 POST  /shutdown  关闭应用程序,要求endpoints.shutdown.enabled设置为 true 
GET  /mappings  描述全部的 URI路径,以及它们和控制器(包含Actuator端 点)的映射关系
GET  /threaddump  获取线程活动的快照    

  默认对外可以访问的端点有:

          

  设置全部对外(management.endpoints.web.exposure.include=*)后,可以发现提供列表中的端点。下面介绍经常在项目中常用的属性:

  1、health

            

    health 主要用来检查应用的运行状态,这是使用最高频的一个监控点。通常使用此接口提醒应用实例的运行状态,以及应用不”健康“的原因,比如数据库连接、磁盘空间不够等。

    默认情况下 health 的状态是开放的,添加依赖后启动项目,访问: http://localhost:port/actuator/health 即可看到应用的状态。 Spring Boot Actuator 有几个预定义的健康 指标比如 DataSourceHealthIndicator , DiskSpaceHealthIndicator , MongoHealthIndicator , RedisHealthIndicator 等,它使用这些健康指标作为健康检查的一 部分。

  2、info

    info 就是配置文件中以 info 开头的配置信息

  3、beans

    展示了 bean 的别名、类型、是否单例、类的地址、依赖等信息。

  4、conditions

    Spring Boot 的自动配置功能非常便利,但有时候也意味着出问题比较难找出具体的原因。使用 conditions 可以在应用运行时查看代码了某个配置在什么条件下生效,或者某个自动配置为什么 没有生效。

            

  5、heapdump

    返回一个 GZip 压缩的 JVM 堆 dump 启动示例项目,访问: http://localhost:port/actuator/heapdump 会自动生成一个 Jvm 的堆 文件 heapdump,我们可以使用 JDK 自带的 Jvm 监控工具 VisualVM 打开此文件查看内存快照。

  6、mappings

    描述全部的 URI 路径,以及它们和控制器的映射关系

  7、threaddump

    生成当前线程活动的快照,方便日常定位问题的时 查看线程的情况。 主要展示了线程名、线程ID、线程的状态、是否等待锁资源等信息。

              

  8、shutdown

    该接口默认关闭,需配置开启:management.endpoint.shutdown.enabled=true

              

    注意访问提交方法为post。可以看到控制台中服务已经退出:

              

 

  

posted on 2024-04-10 15:32  池塘里洗澡的鸭子  阅读(75)  评论(0编辑  收藏  举报