You build it,You run it, 当我们编写的项目上线后,为了能第一时间知晓该项目是否出现问题,常常对项目进行健康检查及一些指标进行监控。
Spring Boot-Actuator 就是帮助我们监控我们的Spring Boot 项目的。

Spring Boot 最主要的特性就是AutoConfig(自动配置),而对于我们这些使用者来说也就是各种starter,
Spring Boot-Actuator 也提供了starter,为我们自动配置,在使用上我们只需要添加starter到我们的依赖中,然后启动项目即可。

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

常用Endpoint

Spring Boot-actuator,提供了许多有用的EndPoint,对Spring Boot应用提供各种监控,下面说一下我常用的EndPoint:

/health 应用的健康状态
/configprops 获取应用的配置信息,因为Spring Boot 可能发布时是单独的Jar包,配置文件可能包含其中, 当我们需要检查配置文件时可以使用 ConfigpropsEndPoint 进行查看一些配置是否正确。
/trace 最近几次的http请求信息

HealthEndPoint

当我们访问 http://localhost:8088/health 时,可以看到 HealthEndPoint 给我们提供默认的监控结果,包含 磁盘检测和数据库检测。

"status": "UP", "diskSpace": { "status": "UP", "total": 398458875904, "free": 315106918400, "threshold": 10485760 "db": { "status": "UP", "database": "MySQL", "hello": 1

其实看 Spring Boot-actuator 源码,你会发现 HealthEndPoint 提供的信息不仅限于此,org.springframework.boot.actuate.health 包下 你会发现 ElasticsearchHealthIndicator、RedisHealthIndicator、RabbitHealthIndicator 等
也就是 HealthEndPoint 也提供 ES, Redis 等组件的健康信息。

自定义Indicator 扩展 HealthEndPoint

看源码 其实 磁盘和数据库健康信息就是 DiskSpaceHealthIndicator、DataSourceHealthIndicator 来实现的,当我们对一些我们自定义的组件进行监控时, 我们也可以实现个Indicator :

@Component public class User implements HealthIndicator { * user监控 访问: http://localhost:8088/health * @return 自定义Health监控 @Override public Health health() { return new Health.Builder().withDetail("usercount", 10) //自定义监控内容 .withDetail("userstatus", "up").up().build();

这时我们再次访问: http://localhost:8088/health 这时返回的结果如下,包含了我们自定义的 User 健康信息。

"status": "UP", "user": { "status": "UP", "usercount": 10, "userstatus": "up" "diskSpace": { "status": "UP", "total": 398458875904, "free": 315097989120, "threshold": 10485760 "db": { "status": "UP", "database": "MySQL", "hello": 1

自定义EndPoint

其实除了扩展 HealthEndPoint 来添加一些健康检查, 我们也可以自定定义一些EndPoint 来提供程序运行时一些信息的展示:

@Configuration public class EndPointAutoConfig { @Bean public Endpoint<Map<String, Object>> customEndPoint() { return new SystemEndPoint(); @ConfigurationProperties(prefix="endpoints.customsystem") public class SystemEndPoint extends AbstractEndpoint<Map<String, Object>> { public SystemEndPoint(){ super("customsystem"); @Override public Map<String, Object> invoke() { Map<String,Object> result= new HashMap<>(); Map<String, String> map = System.getenv(); result.put("username",map.get("USERNAME")); result.put("computername",map.get("COMPUTERNAME")); result.put("userdomain",map.get("USERDOMAIN")); return result;

访问 http://localhost:8088/customsystem 来查看我们自定义的EndPoint ,返回结果如下:

"username": "xxx", "userdomain": "DESKTOP-6EAN1H4", "computername": "DESKTOP-6EAN1H4" 在之前的系列文章中我们学习了如何进行SpringBoot应用的功能开发,以及如何写单元测试、集成测试等,然而,在实际的软件开发中需要做的不仅如此:还包括对应用程序的监控和管理。正如飞行员不喜欢盲目飞行... 来自: weixin_33694620的博客 因为项目里面用到了redis集群,但并不是用springboot的配置方式,启动后项目健康检查老是检查redis的时候状态为down,导致注册到eureka后项目状态也是down。问下能不能设置spr... 来自: weixin_33727510的博客 health检查一般用于springcloud注册中心的存活检查,比如springcloudconsul配置spring:cloud:consul:discovery:register:trueins... 来自: 王洪岐的博客 EurekaServer与EurekaClient之间使用心跳机制来确定EurekaClient的状态,默认情况下,服务器端与客户端的心跳保持正常,应用程序就会始终保持“UP”状态,所以微服务的UP并... 来自: Java & Basketball 【前言】众所周知,系统预警是一件十分重要的事情,系统一旦出现宕机很有可能许多真金白银就进去了;做好系统的监控预警是一件十分有必要的事情;接下来分享一下SpringBoot自带的健康检查与监控的配置。【... 来自: 通往精英的成长之路 SpringBoot项目健康检测SpringBoot是一种微服务架构,约定大于配置,免去了很多xml的配置。需要相关服务,我们可以在依赖中引入jar包即可。项目开发完成,我们需要验证项目是否正常工作,... 来自: 二营长 Springboot2.x应用监控作用:用于管理,监控应用,暴露自身信息。减少应用系统在采集应用指标的开发量。1.添加依赖:&lt;dependency&gt;&lt;groupId&gt;org.s... 来自: PioneerOneLi的博客 文章目录1.使用Actuator检查与监控2.使用可视化的监控报表SpringBootAdmin2.1搭建服务端2.2搭建客户端1.使用Actuator检查与监控1.1在pom文件中添加Actuato... 来自: Lexcellent的博客 spring-boot-starter-actuator(健康监控)配置和使用添加POM依赖:&amp;lt;!--spring-boot-监控--&amp;gt;&amp;lt;dependency... 来自: yangliuhbhd的博客 参考:https://www.cnblogs.com/javanoob/p/springboot_healthcheck.htmlhttps://www.cnblogs.com/cnblog-long... 来自: yangchuanan的博客 监控管理依赖:implementation'org.springframework.boot:spring-boot-starter-actuator'默认情况下监控根路径为:http://ip:po... 来自: t0m的专栏 背景微服务架构,为了保证所有服务可用,当服务发生问题时能及时摘除有问题的服务需要定期检测服务可用性,即健康检查。通常健康健康检查包括TCP与HTTP两种。即定时发送TCP或HTTP请求,根据响应来确定... 来自: Revivedsun的专栏 一、说明在默认情况下,Eureka的客户端每隔30s会发送一次心跳给服务器端,告知它仍然存活。可实际上可能会出现客户端表面上可以正常发送心跳,但服务却不可用的情况。本例中将会用到Eureka服务器、服... 来自: smartdt的博客 健康检查  基于SpringBootActuator的健康检查是SpringCloud微服务的必备组件,用来确保我们的服务是否可用。引入SpringBootActuator后,通过http://ip:... 来自: 家山的专栏 最近的项目使用到了springboot,相比之前使用spring来说,的确方便很多,不再需要单独引入各个jar包依赖,只需引入springboot需要的起步依赖即可,springboot的自动配置会帮... 来自: huangdi1309的博客 博客作为学习笔记记录,若有理解,表述错误,欢迎指出。healthcheck是docker1.12版本引入的新功能,用于容器健康状态监测暂时k8s不支持docker的healthcheck功能,k8s由... 来自: ksj367043706的博客 一、什么是Druid:   Druid是一款阿里出品的数据库连接池,等同于以前我们常用的DBCP,C3P0。近几年来火爆的趋势已经超过了传统的C3P0和DBCP。Druid能够提供强大的监控和扩展功能... 来自: asd529735325的博客 springcloud配置consul为接口的时候服务注册不成功在网上找了许多资料有的是在maven里面添加依赖包&amp;lt;dependency&amp;gt;&amp;lt;groupId&a... 来自: 一个有梦想的程序员的博客 1.IDEA新建SpringBoot项目(略),以作为服务监控端。2.pom.xml文件引入依赖:&amp;lt;dependency&amp;gt;&amp;lt;groupId&amp;gt;de... 来自: Bug k8s支持两种健康检查模式:readiness、liveness简单的来说,readiness检查是否可以暴露该应用(availabel),liveness检查是否需要重启。三种检查方式:httpGe... 来自: wolkenhu 最近公司购买了阿里云的SLB服务,健康检测使用的是http和https协议,直接访问web。后端的80端口是nginx。阿里云会按设置的健康检测时间使用get方法,去访问域名下的检查路径,判断web是... 来自: 运维不如狗的博客 @ComponentpublicclassMyRedisHealthIndicatorimplementsHealthIndicator{privatefinalRedisConnectionFact... 来自: 中国首席偶像 一、Oracle健康监控及健康检查Oracle数据库包括一个名为HealthMonitor的框架,用于运行诊断检查数据库的各种组件。Oracle健康监视器检查各种组件数据库,包括文件,内存,事务完整性... 来自: weixin_34419326的博客 分布式服务注册中心eureka。单应用注册到eureka时候。会展示列表的应用状态。如下图:正常情况下。会显示UP。表明当前应用是正常启动状态。但是在实际场景中。可能该应用是正常的。但是数据库服务器已... 来自: liyingying111111的专栏 客户端健康检测与常用配置Eureka常用配置客户端健康检测1、回顾回顾在微服务发布与调用中所讲的最简单Eureka集群架构图最小型Eureka集群Eureka客户端(服务者/调用者)分别向Eureka... 来自: Aitemi的博客 如果使用springcloud开发微服务的时候,服务配置了上线文如server:port:8082servlet:context-path:/mail则使用springadmin监控时需要在服务发现的... 来自: wsyyyyy的博客 首先最简单的是监听服务端口,在zabbix界面直接添加监控项item:zookeeper.statuskey:net.tcp.listen[2181]ZooKeeper监控要点:内存使用量  ZooK... 来自: 王道革的博客 按网上的例子添加一个SpringBoot工程到Consul,使用Consul版本1.2.1工程pom文件:&amp;lt;?xmlversion=&quot;1.0&quot;encoding=&qu... 来自: 猫!? 项目中某个微服务开启了spring健康检查:eureka:client:healthcheck:enabled:trueserviceUrl:defaultZone:http://localhost:... 来自: liubingyu12345的博客 对于长时间持续经营的企业,不得不面临一个问题:设备的老化与供方停止服务。一台质量过硬的交换机可以稳定运行十年,但是运行超过3年的话就会有很大的风险。为了消除这种风险,需要做的就是进行健康检查和重启。 ... 来自: uestc_my的专栏 Eureka心跳健康检查机制运行阶段执行健康检查的目的是为了从Eureka服务器注册表中识别并删除不可访问的微服务,Eureka服务器并不是向客户端发送心跳请求,而是反过来,Eureka客户端将心跳发... 来自: qq_43253123的博客 一、基本配置:-心跳配置:配置于eureka客户端,用于定时向服务器发送心跳请求,目的是告知eureka服务器,服务还活着,要继续维护我的服务。#配置心跳间隔eureka.instance.lease... 来自: warrior SpringBootAdmin是在SpringBootActuator的基础提供简洁的可视化WEBUI,是用来管理SpringBoot应用程序的一个简单的界面。本文介绍如何使用SpringBootAd... 来自: jrn1012的专栏 默认情况下,Eureka的健康检测并不是通过actuator的health端点来实现的,而是依靠客户端心跳的方式来保持服务实例的存活。在Eureka的服务续约和剔除机制下,客户端的健康状态从注册到注册... 来自: myCat的博客 1.在项目pom中加入Actuator依赖&amp;lt;?xmlversion=&quot;1.0&quot;encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;p... 来自: Chdaring的博客 SpringCloudConsul项目是针对Consul的服务治理实现。Consul是一个分布式高可用的系统,具有分布式、高可用、高扩展性。Consul简介Consul是HashiCorp公司推出的开... 来自: 搜云库技术团队 以下只是适合现在所在公司的方案:方案一:通过nginx的healthcheck_nginx_upstreams模块来实现缺点是:属于第三方模块,需要独立编译安装,且2年多没有更新了,不知道对1.6以上... 来自: weiguang1017的专栏 Consul的一个基本功能是提供系统级和应用级健康检查。如果健康检查与某个服务关联,则称为是应用级的;如果不予服务关联,则监控整个节点的健康。check定义在配置文件中,或运行时通过HTTP接口添加。... 来自: 土著部落 简单说明:在《MySQL健康检查(一)》中的实时监控脚本使用了mysqladmin的ext搂取MySQL当前运行状态,然后抓取了关键字进行报表监控。实际上该命令和使用mysql-e“showgloba... 来自: VincentQB的博客 因为haproxy的包里有.spec文件,所以我们可以用rpm命令来自己构建ha的rpm包:53yuminstallrpm-build-y57rpmbuild-tb/usr/src/haproxy-1... 来自: 一涵的博客 SpringBoot的一大特性就是开发者可以通过它其中的Actualor组件查看项目的运行状态在SpringBoot2.0推出之后,Actualor的配置信息发生了一些变化,与之前的版本有所不同,本文... 来自: yan245294305的博客 druid算是经常用的数据连接池了,废话不多说;1,依赖(gradle)//https://mvnrepository.com/artifact/com.alibaba/druidcompilegro... 来自: weixin_42168893的博客 首先在服务器终端设置环境变量,主要是便于每次启动项目时使用:exportJAVA_OPTS='-Djava.rmi.server.hostname=你的服务器地址(公网ip)-Dcom.sun.man... 来自: Box_clf的博客 spring-boot2.0中,spring-boot-starter-actuator可以实现应用的监控。web端点默认的监控端点只有health和info。  springboot中acurato... 来自: Tarsean的专栏 os:centos7.4postgresql:10.4check_postgres:2.24.0check_postgresisascriptformonitoringvariousattribute... 来自: weixin_30535167的博客 1.快速检测集群的健康状况GET/_cat/health?vepochtimestampclusterstatusnode.totalnode.datashardsprireloinitunassig... 来自: 标题 写之前为springboot点赞,很贴心的帮我们把很多的功能都实现了统一环境:springboot的版本号是2.1.3.RELEASE1.首先去start.springboot.io下载一个sprin... 来自: 翻身了,咸鱼!