Spring Boot监控与管理的实现
认识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监控与管理的实现的更多相关文章
- 笔记:Spring Boot 监控与管理
在微服务架构中,我们将原本庞大的单体系统拆分为多个提供不同服务的应用,虽然,各个应用的内部逻辑因分解而简化,但由于部署的应用数量成倍增长,使得系统的维护复杂度大大提升,为了让运维系统能够获取各个为服务 ...
- Spring Boot 监控与管理
在微服务架构中,我们将原本庞大的单体系统拆分为多个提供不同服务的应用,虽然,各个应用的内部逻辑因分解而简化,但由于部署的应用数量成倍增长,使得系统的维护复杂度大大提升,为了让运维系统能够获取各个为服务 ...
- (33)Spring Boot 监控和管理生产环境【从零开始学Spring Boot】
[本文章是否对你有用以及是否有好的建议,请留言] spring-boot-actuator模块提供了一个监控和管理生产环境的模块,可以使用http.jmx.ssh.telnet等拉管理和监控应用.审计 ...
- spring boot 监控与管理(actuator)
Spring POMs 中提供了一个特殊的依赖模块,即spring-boot-starter-actuator,我们只需要在我们的POM中添加依赖即可 <!-- 监控 管理 --> < ...
- (39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】
在学习此小节之前您可能还需要学习: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...
- (39.2). Spring Boot Shiro权限管理【从零开始学Spring Boot】
(本节提供源代码,在最下面可以下载) (4). 集成Shiro 进行用户授权 在看此小节前,您可能需要先看: http://412887952-qq-com.iteye.com/blog/229973 ...
- (39.1) Spring Boot Shiro权限管理【从零开始学Spring Boot】
(本节提供源代码,在最下面可以下载)距上一个章节过了二个星期了,最近时间也是比较紧,一直没有时间可以写博客,今天难得有点时间,就说说Spring Boot如何集成Shiro吧.这个章节会比较复杂,牵涉 ...
- (39.4) Spring Boot Shiro权限管理【从零开始学Spring Boot】
在读此文章之前您还可能需要先了解: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...
- Spring Boot Shiro 权限管理
Spring Boot Shiro 权限管理 标签: springshiro 2016-01-14 23:44 94587人阅读 评论(60) 收藏 举报 .embody{ padding:10px ...
随机推荐
- 20175211 2018-2019-2 《Java程序设计》第六周学习总结
目录 教材学习内容总结 第七章 内部类与异常类 第十章 输入.输出流 教材学习中的问题和解决过程 代码托管 学习进度条 参考资料 教材学习内容总结 第七章 内部类与异常类 第十章 输入.输出流 教材学 ...
- 关于MapReduce二次排序的一点解答
上一篇博客说明了怎么自定义Key,而且用了二次排序的例子来做测试,但没有详细的说明二次排序,这一篇说详细的说明二次排序,为了说明曾经一个思想的误区,特地做了一个3个字段的二次排序来说明.后面称其为“三 ...
- Setting NLS_LANG Value for Oracle
Introduction Many times, when you have an Oracle application and you have to support special charact ...
- 轻量级集群管理软件-Ansible
ansible概述和运行机制 ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具, 它用Python写成,类似于saltstack和Puppet,但是有一个不同 ...
- gvim keil 快捷跳转至出现错误(警告)行
开发环境 win7系统中:用keil 对工程进行编译链接,用gvim编辑查看源文件. 实现效果 一键跳转到出现警告或者错误的源码. 实现原理 gvim 调用外部shell脚本,对keil编译生成的lo ...
- Shrinking images on Linux
When creating images from existing ISOs you often need to allocate a number of MB for the image to a ...
- ROS kinetic语音识别
1.安装依赖 1.1安装ros-kinetic-audio-common sudo apt-get install ros-kinetic-audio-common 1.2 安装libasound2 ...
- Tarjan求LCA
LCA问题算是一类比较经典的树上的问题 做法比较多样 比如说暴力啊,倍增啊等等 今天在这里给大家讲一下tarjan算法! tarjan求LCA是一种稳定高速的算法 时间复杂度能做到预处理O(n + m ...
- APP压力测试 monkey(新猿旺学习总结)
安卓APP做压力测试 需要配置JDK(Java)和 配置SDK 遮掩才能使用adb命令连接手机进行模拟动作事件进行压力测试 配置 K JDK 与 K SDK 环境 a java 与 与 sdk 用于 ...
- Transparent PageRoute in Flutter for displaying a (semi-) transparent page
import 'package:flutter/widgets.dart'; class TransparentRoute extends PageRoute<void> { Transp ...