认识Actuator

  在SpringBoot应用中引入spring-boot-starter-actuator依赖,它可以为开发团队提供系统运行的各项监控指标。

  在项目中引入依赖配置如下:

  

  application.properties属性配置文件,添加如下配置:

  

  spring-boot-starter-actuator模块根据应用依赖和配置自动创建出来的监控和管理端点。通过这些端点,我们可以实时获取系统应用的各项监控指标。

  访问:http://localhost:8081/actuator

  所有端点详细信息如下:

  // http://localhost:8081/actuator

  {

  _links: {

  self: {

  href: http://localhost:8081/actuator,

  templated: false

  },

  auditevents: {

  href: http://localhost:8081/actuator/auditevents,

  templated: false

  },

  beans: {

  href: http://localhost:8081/actuator/beans,

  templated: false

  },

  caches-cache: {

  href: http://localhost:8081/actuator/caches/{cache},

  templated: true

  },

  caches: {

  href: http://localhost:8081/actuator/caches,

  templated: false

  },

  health-component-instance: {

  href: http://localhost:8081/actuator/health/{component}/{instance},

  templated: true

  },

  health-component: {

  href: http://localhost:8081/actuator/health/{component},

  templated: true

  },

  health: {

  href: http://localhost:8081/actuator/health,

  templated: false

  },

  conditions: {

  href: http://localhost:8081/actuator/conditions,

  templated: false

  },

  configprops: {

  href: http://localhost:8081/actuator/configprops,

  templated: false

  },

  env: {

  href: http://localhost:8081/actuator/env,

  templated: false

  },

  env-toMatch: {

  href: http://localhost:8081/actuator/env/{toMatch},

  templated: true

  },

  info: {

  href: http://localhost:8081/actuator/info,

  templated: false

  },

  loggers: {

  href: http://localhost:8081/actuator/loggers,

  templated: false

  },

  loggers-name: {

  href: http://localhost:8081/actuator/loggers/{name},

  templated: true

  },

  heapdump: {

  href: http://localhost:8081/actuator/heapdump,

  templated: false

  },

  threaddump: {

  href: http://localhost:8081/actuator/threaddump,

  templated: false

  },

  metrics: {

  href: http://localhost:8081/actuator/metrics,

  templated: false

  },

  metrics-requiredMetricName: {

  href: http://localhost:8081/actuator/metrics/{requiredMetricName},

  templated: true

  },

  scheduledtasks: {

  href: http://localhost:8081/actuator/scheduledtasks,

  templated: false

  },

  httptrace: {

  href: http://localhost:8081/actuator/httptrace,

  templated: false

  },

  mappings: {

  href: http://localhost:8081/actuator/mappings,

  templated: false

  }

  }

  }

  可以将spring-boot-starter-actuator模块生成的原生端点,分为三大类:

  应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与SpringBoot应用密切相关的配置类信息;这类端点可以帮助我们获取一系列关于Spring应用配置内容的详细报告,比如自动化配置的报告、Bean创建的报告、环境属性的报告等。

  度量指标类:获取应用程序运行过程中用于监控的度量指标,比如内存信息、线程池信息、HTTP请求统计等;

  操作监控类:提供了对应用的关闭等操作类功能;

  以上三类端点的详细信息,下面我们详细来说明。

  端点信息详述

  应用配置类:默认启用

  /autoconfig: 该端点用来获取应用的自动化配置报告,其中包括所有自动化配置的候选项,同时列举了每个候选项是否满足自动化配置的各个先决条件。该端点可以帮助我们方便地找到一些自动化配置为什么没有生效的具体原因。报告内容分为两部分,如下:

  (1)positiveMatches中返回的是条件匹配成功的自动化配置;

  (2)negativeMathches中返回的是条件匹配不成功的自动化配置。

  /beans: 该端点用来获取应用上下文中创建的所有Bean。包含的具体信息如下:

  (1)bean:Bean的名称;

  (2)scope: Bean的作用域;

  (3)type: Bean的Java类型;

  (4)resource: class文件的具体路径;

  (5)dependencies: 依赖的Bean的名称;

  /configprops: 该端点用来获取应用中配置的属性信息报告。我们可以通过该报告来看到各个属性的配置路径,比如我们要关闭端点,就可以使用endpoints.configprops.enabled=false来完成设置。

  /env: 该端点用来获取应用所有可用的环境属性报告,具体包括环境变量、JVM属性、应用的配置属性、命令行中的参数。通过该端点返回的信息,我们可以看到当前应用加载的配置信息,可以结合@ConfigurationProperties注解将它们引入到应用程序中使用。对于一些敏感属性信息,比如在属性名中包含password,secret,key这些关键词,在返回的时候会使用*来替换。

  /mappings: 该端点用来返回所有Spring MVC的控制器映射关系报告。返回的信息有:

  (1)bean属性: 标识该映射关系的请求处理器;

  (2)method属性:标识该映射关系的具体处理类和处理函数;

  /info:该端点用来返回一些应用自定义的信息。默认情况下,该端点只会返回一个空的JSON内容。我们可以在application.properties配置文件中设置一些以info为前缀的属性配置信息,就能看到效果。

  度量指标类:默认启用

  /metrics: 该端点用来返回当前应用的各类重要度量指标,比如内存信息、线程信息、垃圾回收信息等。具体信息包含如下:

  (1)系统信息:包括处理器数量processors、运行时间uptime和instance.uptime、系统平均负载systemload.average;

  (2)mem.*: 内存概要信息,包括分配给应用的总内存数量以及当前空闲的内存数量,这些信息来自java.lang.Runtime;

  (3)heap.*: 堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getHeapMemoryUsage方法获取的java.lang.management.MemoryUsage;

  (4)nonheap.*: 非堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getNonHeapMemoryUsage方法获取java.lang.management.MemoryUsage;

  (5)threads.*: 线程使用情况,包括线程数、守护线程(daemon)、线程峰值(peak)等,这些信息来自java.lang.management.ThreadMXBean;

  (6)classes.*: 应用加载和卸载的类统计,这些信息来自java.lang.managemeng.ClassLoadingMXBean;

  (7)gc.*: 垃圾收集器的详细信息,包括垃圾回收次数gc.ps_scavenge.count、垃圾回收消耗时间gc.ps_scavenge.time、标记-清除算法的次数gc.ps_marksweep.count、标记-清除算法的消耗时间gc.ps_marksweep.time。这些信息来自java.lang.management.GarbageCollectorMXBean;

  (8)httpsessions.*: Tomcat容器的会话使用情况。包括最大会话数httpsessions.max和活跃会话数httpsessions.active。该度量指标信息仅在引入嵌入式Tomcat作为应用容器的时候才会提供;

  (9)gauge.*: HTTP请求的性能指标之一,它主要用来反映一个绝对值。

  (10)counter.*: HTTP请求的性能指标之一,它主要作为计数器来使用,记录了增加量和减少量。

  报告的具体内容如下:

  /health: 该端点用来获取应用的各类健康指标信息。在spring-boot-starter-actuator模块中自带实现了一些常用资源的健康指标检测器,这些健康指标检测器都是通过HealthIndicator接口实现,并且会根据依赖关系的引入实现自动化配置。常见的一些健康指标检测器如下:

  (1)DiskSpaceHealthIndicator: 低磁盘空间检测;

  (2)DataSourceHealthIndicator: 检测DataSource的链接是否成功;

  (3)MongoHealthIndicator: 检测Mongo数据库是否可用;

  (4)RabbitHealthIndicator: 检测Rabbit服务器是否可用;

  (5)RedisHealthIndicator: 检测Redis服务器是否可用;

  (6)SolrHealthIndicator: 检测Solr服务器是否可用;

  我们也可用通过实现HealthIndicator接口来自定义自己的健康指标检测器;

  报告的具体内容如下:

  /dump: 该端点用来暴露程序运行中的线程信息。它使用java.lang.management.ThreadMXBean的dumpAllThreads方法来返回所有含有同步信息的活动线程详情;

  /trace: 该端点用来返回基本的HTTP跟踪信息。默认情况下,跟踪信息的存储采用org.springframework.boot.actuate.trace.InMemoryTraceRepository实现的内存方式,始终保留最近的100条请求记录。

  操作控制类:需要通过属性配置来开启操作

  /shutdown: 该端点用来实现关闭应用的远程操作,需要配置属性endpoints.shutdown.enable=true才能实现。该操作非常危险,不建议使用。

  到此关于spring-boot-starter-actuator模块的监控与管理的相关端点信息就介绍完了。

Spring Boot监控与管理的实现的更多相关文章

  1. 笔记:Spring Boot 监控与管理

    在微服务架构中,我们将原本庞大的单体系统拆分为多个提供不同服务的应用,虽然,各个应用的内部逻辑因分解而简化,但由于部署的应用数量成倍增长,使得系统的维护复杂度大大提升,为了让运维系统能够获取各个为服务 ...

  2. Spring Boot 监控与管理

    在微服务架构中,我们将原本庞大的单体系统拆分为多个提供不同服务的应用,虽然,各个应用的内部逻辑因分解而简化,但由于部署的应用数量成倍增长,使得系统的维护复杂度大大提升,为了让运维系统能够获取各个为服务 ...

  3. (33)Spring Boot 监控和管理生产环境【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] spring-boot-actuator模块提供了一个监控和管理生产环境的模块,可以使用http.jmx.ssh.telnet等拉管理和监控应用.审计 ...

  4. spring boot 监控与管理(actuator)

    Spring POMs 中提供了一个特殊的依赖模块,即spring-boot-starter-actuator,我们只需要在我们的POM中添加依赖即可 <!-- 监控 管理 --> < ...

  5. (39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在学习此小节之前您可能还需要学习: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...

  6. (39.2). Spring Boot Shiro权限管理【从零开始学Spring Boot】

    (本节提供源代码,在最下面可以下载) (4). 集成Shiro 进行用户授权 在看此小节前,您可能需要先看: http://412887952-qq-com.iteye.com/blog/229973 ...

  7. (39.1) Spring Boot Shiro权限管理【从零开始学Spring Boot】

    (本节提供源代码,在最下面可以下载)距上一个章节过了二个星期了,最近时间也是比较紧,一直没有时间可以写博客,今天难得有点时间,就说说Spring Boot如何集成Shiro吧.这个章节会比较复杂,牵涉 ...

  8. (39.4) Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在读此文章之前您还可能需要先了解: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...

  9. Spring Boot Shiro 权限管理

    Spring Boot Shiro 权限管理 标签: springshiro 2016-01-14 23:44 94587人阅读 评论(60) 收藏 举报 .embody{ padding:10px ...

随机推荐

  1. np.mgrid 用法

    import numpy as np dtype=np.float32 num_anchors = 6 y, x = np.mgrid[0:4, 0:4] print(y) print(x) y = ...

  2. POJ 1390 Blocks(区间DP)

    Blocks [题目链接]Blocks [题目类型]区间DP &题意: 给定n个不同颜色的盒子,连续的相同颜色的k个盒子可以拿走,权值为k*k,求把所有盒子拿完的最大权值 &题解: 这 ...

  3. 关于babel官网的学习

    提起babel,前端er大概都不陌生.但是为什么要有babel呢?解决了什么问题?怎么使用babel呢?注意点在哪?以下就从这几个方面总结一下我关于babel学习的结果吧. 为什么要有babel呢? ...

  4. 如何在Jenkins上配置一个可以从其它Job取回Artifact的Job

    今天因为工作上的需求,需要在Jenskin上配置一个job, 它应该可以从其它所选择的Job中取回Artifact. 首先,在"构建"步骤中添加 "Copy Artifa ...

  5. oracle删除数据库

    1.确认当前数据库是否为要删除的那一个select name from v$database; 2.关闭数据库shutdown immediate; 3.以restrict方式重新打开数据库,并启动到 ...

  6. sitecore8.2 基于相对路径查询item

    当前项目: bar (path: /sitecore/content/home/foo/bar) 查询: query:./child/grandchild 结果: grandchild (path: ...

  7. # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库

    使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...

  8. 记录ok6410 jlink 命令行调试uboot

    1\启动ok6410 进入uboot命令行 2\启动JLinkGDBServer -device ARM11 3\arm-none-eabi-gdb u-boot 初始化脚本 # Connect to ...

  9. cookie和sission的原理及异同

    Cookie Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持. 通常有三个步骤来识别回头客: 服务器脚本发送 ...

  10. yum仓库源搭建

    本地yum源搭建 cd源 mount /dev/sr0 /mnt vim  /etc/yum.repos.d/base.repo [centos-base]name=centos7#baseurl=f ...