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 ...
随机推荐
- unity开发多语言版本
1.文字部分 ①.文字提取参考 http://www.xuanyusong.com/archives/2987: ②.把提取出来的文字放到excel总转换成繁体等版本: ③.把excel转换成txt文 ...
- 关于mysql分组查询
在mysql查询中,用到GROUP BY 根据某一字段分组之后,每组显示的结果都只有第一条,这样的结果通常不是我们想要的. GROUP_CONCAT('字段') 可以将每一组下面的这个字段所有的数 ...
- linux----------yum一些安装命令汇总
1.yum install -y psmisc 安装killall命令 2.yum install -y lrzsz 安装sz(下载)和rz(上传)命令 3.yum ins ...
- 获取Type的三种方式
using System;using UnityEngine; public class Type_Test : MonoBehaviour{ private void Awake() { ...
- spring boot 如何添加拦截
添加拦截其它挺简单的,直接上代码吧,我以简单的登陆验证拦截为例 1,先实现一个拦截器 package com.xinyue.interview.gm.filter; import javax.serv ...
- RSA加解密算法以及密钥格式
RSA算法: 有个文章关于RSA原理讲的不错: https://blog.csdn.net/dbs1215/article/details/48953589 http://www.ruanyifeng ...
- 认识.net
.NET多指NET Framework,Visual Studio.NET及其开发的应用程序.NET Framework是一个开发和执行环境,允许不同的程序语言和库无缝结合基于Window的应用程序. ...
- Oarcle之用户管理 与 DCL
用户管理 1.创建一个账户 create user zhangsan identified by123456: 2.修改账户的密码 alter user zhangsan identified by ...
- 随手记一 2018/04/23 Ajax基础了解
1.什么是ajax? 主要目的是用来实现客户端和服务器之间的异步通信,实现页面的局部刷新 2.同步和异步! 同步:当多个线程同时向一个数据发送请求时,必须是A先执行完毕才可以给B,会出现阻塞的情况,但 ...
- bzoj4710 [Jsoi2011]分特产(容斥)
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 814 Solved: 527[Submit][Status] ...