弹簧启动执行器教程

朋友您好,在本教程中,我们将学习弹簧执行器及其所有功能。

1.什么是弹簧执行器?

2.如何在Maven项目或Gradle项目中添加弹簧执行器?

3.创建一个具有Spring Actuator依赖项的Spring Boot项目。

4.使用弹簧执行器端点监视应用程序。

弹簧执行器

什么是弹簧执行器?

一旦您开发了应用程序并将其部署到生产环境中,就必须检查已启动并正在运行的应用程序的运行状况,这一点非常重要,特别是对于像银行应用程序这样的关键任务应用程序(如果需要面向客户的应用程序)下降,将直接影响银行业务。

以传统的方式,在使用Spring Actuator之前,我们需要编写代码来检查应用程序的运行状况,但是使用Spring Actuator,我们不需要编写任何用于运行状况检查的代码,但是Spring Actuator提供了一些现成的端点,可以对于应用程序的健康检查非常有用。

如何在Maven项目或Gradle项目中添加弹簧执行器?

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

dependencies {compile("org.springframework.boot:spring-boot-starter-actuator")
}

创建一个具有Spring Actuator依赖项的Spring Boot项目

让我们继续并使用Spring Initializer https://start.spring.io/创建一个具有Spring Actuator依赖项(与Web和DevTools一起使用)的Spring Boot项目。

请注意,在撰写本教程时,Spring Boot版本为2.1.0。

弹簧执行器

在Eclipse或您选择的任何其他IDE中导入项目,然后运行SpringActuatorApplication.java。

您将在Eclipse控制台中看到以下内容:

弹簧执行器

这表明嵌入式Tomcat已在端口8080上启动,而SpringActuatorApplication已在Tomcat上启动。 同样在控制台日志中,您可以看到执行器端点通过/ actuator URI公开。

018-11-09 20:00:29.346 INFO 8338 — [restartedMain] osbwembedded.tomcat.TomcatWebServer:Tomcat在端口上启动:8080(http),具有上下文路径“

2018-11-09 20:00:29.354 INFO 8338 — [restartedMain] nbjsSpringActuatorApplication:在9.273秒内启动了SpringActuatorApplication(JVM运行11.823)

2018-11-09 20:00:29.190INFO 8338 — [restartedMain] osbaeweb.EndpointLinksResolver:在基本路径“ / actuator”下暴露2个端点。

使用弹簧执行器端点监视应用

如上所述,Spring执行器提供了一些现成的端点,可用于监视应用程序的运行状况。

ID 描述
审核事件 公开当前应用程序的审核事件信息。
豆子 显示应用程序中所有Spring Bean的完整列表。
快取 公开可用的缓存。
条件 显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。
configprops 显示所有@ConfigurationProperties的整理列表。
环保 从Spring的ConfigurableEnvironment中公开属性。
飞路 显示已应用的所有Flyway数据库迁移。
健康 显示应用程序运行状况信息。
httptrace 显示HTTP跟踪信息(默认情况下,最近100个HTTP请求-响应交换)。
信息 显示任意应用程序信息。
整合图 显示Spring Integration图。
记录器 显示和修改应用程序中记录器的配置。
液基 显示已应用的所有Liquibase数据库迁移。
指标 显示当前应用程序的“指标”信息。
映射 显示所有@RequestMapping路径的整理列表。
计划任务 显示应用程序中的计划任务。
会议 允许从Spring Session支持的会话存储中检索和删除用户会话。 使用Spring Session对反应式Web应用程序的支持时不可用。
关掉 使应用程序正常关闭。
线程转储 执行线程转储。

启用端点

默认情况下,除关机外的所有端点均处于启用状态。 要启用端点,请在application.properties文件中使用以下属性。

management.endpoint.<id>.enabled

例:

要启用关闭端点,我们需要在application.properties文件中进行以下输入:

management.endpoint.shutdown.enabled=true

或者,我们可以禁用所有端点,然后有选择地启用所需的端点。 使用以下配置,将禁用除info之外的所有端点。

management.endpoints.enabled-by-default=falsemanagement.endpoint.info.enabled=true

端点执行器

让我们点击URL http:// localhost:8080 / actuator并查看端点。

注意 :我使用Postman来测试端点,因为它以结构良好的格式显示JSON。 您可以自由使用任何其他此类工具,也可以仅使用浏览器。

弹簧执行器

在Spring Actuator中公开端点

正如您已经注意到的,在这里只能看到运行状况和信息端点。 这是因为这些是默认情况下唯一公开的端点。 出于安全原因,默认情况下不会公开所有端点,因为它们可能具有一些敏感信息,因此可能会受到威胁。

暴露特定端点

如果要通过Web(Http)公开其他端点,则需要在application.properties文件中进行以下输入。

management.endpoints.web.exposure.include= <Comma separated list of Ids of endpoints which we want to expose>

management.endpoints.web.exposure.include= health,info,env

现在,在application.properties中添加以上条目之后,让我们再次命中URL http:// localhost:8080 / actuator。

正如我们在下面的屏幕截图中看到的那样,env端点也已启用。

弹簧执行器

公开所有端点

如果要启用所有端点,可以在application.properties中使用通配符*,如下所示。

management.endpoints.web.exposure.include=*

弹簧执行器

公开所有端点,只有少数端点除外

下面的两个条目将启用所有端点,但仅禁用环境端点。

management.endpoints.web.exposure.include=*management.endpoints.web.exposure.exclude=env

弹簧执行器

弹簧执行器

禁用HTTP端点

如果您不想通过HTTP公开端点,可以通过在application.properties中配置以下内容来完成:

management.server.port=-1

或者,您可以在application.properties中配置以下内容:

management.endpoints.web.exposure.exclude=*

自定义执行器URL以访问各种端点

默认情况下,所有Web终结点在/ actuator下都可用,其URL格式为/ actuator / {id}。

但是,可以通过在application.properties中配置以下属性来配置基本路径/执行器。

management.endpoints.web.base-path

例如,如果要将基本URL设置为/ monitor而不是/ actuator,则可以
可以在application.properties中进行如下配置:

management.endpoints.web.base-path=/monitor

弹簧执行器

这样,可以将所有端点作为/ monitor / {id}而不是/ actuator / {id}进行访问

弹簧执行器

Spring Boot执行器端点

让我们讨论一些最重要的端点。

/健康

运行状况端点将提供应用程序的状态(如果应用程序已启动且未运行)。 这对于在生产中监视应用程序的运行状况非常重要。 该端点可以与监视应用程序集成在一起,并且在告知应用程序的实时运行状况方面将非常有帮助。

健康资讯

健康终结点将公开多少信息取决于application.properties文件中属性management.endpoint.health.show-details的配置。

如果management.endpoint.health.show-details = never,则永远不会显示详细信息。 在这种情况下,您只会看到以下信息。 这也是默认行为。

弹簧执行器

如果management.endpoint.health.show-details = always,则向所有用户显示详细信息。因此,如下面的响应所示,我们也具有磁盘空间信息。 如果您的应用程序已连接到数据库,那么您还将获得有关数据库运行状况的信息。

弹簧执行器

如果management.endpoint.health.show-details =何时授权 ,则仅向授权用户显示详细信息。可以使用management.endpoint.health.roles属性配置授权角色。

自动配置的健康指标

Spring Boot Actuator具有许多自动配置的HeathIndicators,用于检查应用程序各个部分的运行状况。 例如,Spring Boot Actuator提供了DiskspaceHealthIndicator,它提供有关应用程序使用的磁盘空间的运行状况的信息。 同样,如果您使用的是MongoDB,则MongoHealthIndicator将检查Mongo DB的运行状况(是否为UP),并显示相关信息。 默认情况下,最终应用程序状态是由HealthAggregator派生的,它基本上根据状态的有序列表对每个HealthIndicator的状态进行排序。 排序列表中的第一个状态用作应用程序的最终状态。

禁用所有自动配置的运行状况指示器

这些运行状况指示器默认情况下处于启用状态,但是可以使用以下属性将其禁用:

management.health.defaults.enabled=false

禁用各个自动配置的运行状况指示器

或者,也可以如下禁用单个HealthIndicator,例如,禁用磁盘空间的运行状况检查:

management.health.diskspace.enabled=false

注意 :任何HealthIndicator的标识符将是不带有HealthIndicator后缀的Bean的名称。
例如 :

DiskSpaceHealthIndicator       diskspace
MongoHealthIndicator             mongo
CassandraHealthIndicator        cassandra
DataSourceHealthIndicator      datasource

等等…

自定义健康指标

连同Spring Boot Actuator提供的内置HealthIndicators,我们还可以创建自己的自定义Health Indicator。 为此,您需要创建一个实现HealthIndicator接口并实现其health()方法的类,并通过以下相关信息返回Health作为响应:

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;@Component
public class CustomHealthIndicator implements HealthIndicator {@Overridepublic Health health() {int errorCode = 0; // In the above line,I am simple assigning zero,but you can call Health check related code like below commented line and that method can return the appropriate code.// int errorCode = performHealthCheck();if (errorCode != 0) {return Health.down().withDetail("Error Code", errorCode).build();}return Health.up().build();}}

现在让我们再次达到运行状况终结点,看看我们的自定义运行状况指示器是否得到反映。

弹簧执行器

正如我们在上面的屏幕快照中看到的那样,自定义运行状况检查已包括在内。

每个组件的健康状况

还可以检查单个组件的运行状况。 在上面的示例中,我们看到了自定义健康状态以及diskSpace健康状态。

如果只想查看diskSpace运行状况,则可以执行以下操作:

http:// localhost:8080 / actuator / health / diskSpace

弹簧执行器

/信息

info终结点提供了有关应用程序的一般信息,该应用程序是从诸如build-info.properties或git.properties之类的文件中获取的,或者是从application.properties中关键信息下的任何属性获取的。

就像在我们的项目中一样,没有这样的文件,因此,如果我们点击info端点,它将仅显示空响应,如下所示:

弹簧执行器

如果存在META-INF / build-info.properties文件,Spring Boot Actuator将显示与构建相关的信息。 build-info目标使用项目坐标和构建时间来生成此类文件。 它还允许您添加任意数量的其他属性。

让我们在spring-boot-maven-plugin插件中,在我们项目的pom.xml中添加一个build-info目标。

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.0.RELEASE</version><executions><execution><goals><goal>build-info</goal></goals><configuration><additionalProperties><encoding.source>UTF-8</encoding.source><encoding.reporting>UTF-8</encoding.reporting><java.source>${maven.compiler.source}</java.source><java.target>${maven.compiler.target}</java.target></additionalProperties></configuration></execution></executions></plugin>

现在让我们再次点击信息端点,我们可以看到如下构建信息:

弹簧执行器

另外,我们可以在application.properties的info键下添加应用程序信息,如下所示,它们将显示在/ info端点中。

info.application.name=spring-actuator
info.application.description=spring boot actuator application
info.application.version=0.0.1-SNAPSHOT

弹簧执行器

/豆子

bean端点为Spring bean容器中定义的所有bean提供有关每个bean的以下信息:

aliases  : Names of any aliases
Scope   : Scope of bean
type      : Fully qualified type of a bean.
resource : Resource(class) in which bean is defined.
dependencies :names of dependent beans.

例如,我创建了一个名称为TestController.java的RestController,并注入了一个名称为TestService.java的bean。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {@Autowiredprivate TestService testService;@GetMapping("/messages")public String getMessage() {return "Hello";}
}
import org.springframework.context.annotation.Configuration;@Configuration
public class TestService {}

您可以在下面的ID为testController的屏幕截图中看到它的反映方式。

弹簧执行器

/ configprops

configProps端点为您提供了所有带有@ConfigurationProperties注释的bean。

弹簧执行器

在上面的屏幕截图中,我们可以看到在Spring框架本身中预定义的两个bean,并用@ConfigurationProperties注释,因此显示在此端点下。

下面的屏幕快照显示了HttpTraceProperties的源代码,该代码以@ConfigurationProperties注释。

弹簧执行器

/ env

env端点按以下顺序为您提供所有特定于环境的信息:

System Properties                     - JVM specific(Platform Independent)
System Env. or Env. Variables  - Operating System specific(Platform Dependent)
application level configuration - Defined in application.properties

弹簧执行器

/堆转储

heapdump端点提供了来自应用程序JVM的堆转储。 该端点以HPROF格式返回二进制数据。 由于返回的数据通常很大,因此您应该保存并进行分析。

/记录器

loggers端点提供应用程序的记录器以及它们的configureLevel,effectiveLevel(如果此记录器的配置级别为null,并且其父级也为配置级别,则有效级别将为根记录器的记录器级别)。

levels属性告诉日志记录框架支持哪些所有级别。

弹簧执行器

特定记录器的记录器信息

要获取特定记录器的记录器信息,请在/ loggers端点后面的URL中传递记录器的名称/ ID,如下所示:

http:// localhost:8080 / actuator / loggers / nl.blogpsot.javasolutionsguide.springactuator.SpringActuatorApplication

弹簧执行器

指标终结点为您提供了可以为应用程序跟踪的所有指标。

弹簧执行器

检查单个指标

您可以通过将特定指标传递到/ metrics端点之后的URL来跟踪单个指标,如下所示:

http:// localhost:8080 / actuator / metrics / jvm.memory.used

弹簧执行器

一切都在Spring Actuator上,感谢阅读。 请与他人分享,您认为这可能会有所帮助。

翻译自: https://www.javacodegeeks.com/2018/11/spring-boot-actuator-tutorial.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php xls 邮件,PHPMailer发送邮件

PHPMailer是一个封装好的PHP邮件发送类&#xff0c;支持发送HTML内容的电子邮件&#xff0c;以及图片附件&#xff0c;前提要设置好邮件服务器就能实现邮件发送功能。HTML首先我们先放置一个收件箱的输入框和一个发送邮件按钮&#xff1a;收件人&#xff1a;jQuery$(function()…

引导性GCP:带有Google Cloud Pub / Sub的Spring Cloud Stream

我最近在Sprint Central的工程博客上阅读了Josh Long的Bootiful GCP系列 &#xff0c;特别喜欢关于使用Google Cloud的Pub / Sub的第四部分 。 我受到该系列的启发&#xff0c;同时我还在为我的一个新项目评估Spring Cloud Stream。 我以为&#xff0c;我会继续讨论乔希&#x…

jdbc和jdbc驱动_JDBC布尔兼容性列表

jdbc和jdbc驱动有趣的是&#xff0c;布尔类型只是在SQL标准后期才引入&#xff0c;即SQL&#xff1a;1999 。 即使在今天&#xff0c;并非所有数据库本身都支持BOOLEAN或BIT类型。 最重要的是&#xff0c;我们仍然可以在Oracle中等待一段时间。 这是2002年以来关于该主题的“问…

IDE日志分析方法pt。 1个

介绍 我认为大多数软件工程师都了解日志的重要性。 它们已成为软件开发的一部分。 如果无法解决问题&#xff0c;我们尝试在日志中查找原因。 对于一些简单的情况&#xff0c;当错误阻止应用程序打开窗口时&#xff0c;这可能就足够了。 您可以在日志中找到问题&#xff0c;然后…

java运行构建期间出错_构建和运行Java 8支持

java运行构建期间出错尚未提供对Java 8的Eclipse支持。 如果要使用它&#xff0c;则必须构建它。 Eclipsepedia的JDT Core / Java8页面包含有关使用Eclipse Java开发工具 &#xff08;JDT&#xff09;中不断发展的Java 8支持源来设置开发环境的说明。 说明中缺少一些内容&#…

从Commons CLI迁移到picocli

最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器&#xff0c;但是它的API显示了它的年龄。 寻找具有最少样板代码的现代方法的应用可能对picocli感兴趣。 为什么要花麻烦的钱进行迁移&#xff0c;以及如何将基于Commons CLI的应用程序迁移到picocli&a…

QuickBooks和Sage数据导出器

许多中小企业都使用QuickBooks作为其会计模块。 同样&#xff0c;许多公司也使用Sage进行会计处理。 他们中的大多数人在需要从这些系统中导出数据时会遇到问题。 在线提供的许多连接器价格昂贵&#xff0c;无法满足确切的要求。 随附的是一些简短的代码段&#xff0c;这些代码…

php内容缓存输出,PHP使用缓存即时输出内容(output buffering)的方法

PHP使用缓存即时输出内容(output buffering)的方法PHP使用缓存即时输出内容(output buffering)的方法。分享给大家供大家参考。具体如下&#xff1a;$buffer ini_get(output_buffering);echo str_repeat( ,$buffer1); //防止浏览器缓存ob_end_flush(); //关闭缓存for( $i1; $i…

继承能够访问父类私有字段_在单元测试中访问私有字段

继承能够访问父类私有字段首先&#xff0c;让我大声说一下&#xff0c;您需要将代码设计为可测试的&#xff0c;以便通过公共方法测试私有字段。 但是&#xff0c;&#xff08;“ buts”是人们仍在编程而不是计算机本身的原因&#xff0c;所以在这里很高兴&#xff09;有时您想…

甲骨文函数初探

我非常高兴有机会通过Cloud Native Limited Availability Program来测试Oracle功能。 去年&#xff0c;当我上次尝试在Oracle Groundbreaker APAC巡回赛中在Oracle Cloud中运行无服务器功能时&#xff0c;有两种选择。 您可以在虚拟机中运行我自己的Fn服务器&#xff0c;也可以…

spring roo_使用Spring Roo进行概念验证

spring roo在Keyhole工作期间&#xff0c;我参与了许多项目&#xff0c;其中客户要求我们重写旧系统&#xff0c;同时保留其现有数据库。 有时&#xff0c;它有助于快速演示如何使用当前技术来简化开发&#xff0c;测试和维护其代码。 我发现可以创建一个快速示例&#xff08;…

oracle虚拟机怎么装系统,Virtualbox怎么安装系统 VirtualBox虚拟机安装Win8系统教程 (3)...

三、对新建的虚拟机做重要的设定&#xff1a;1、在Oracle VM VirtualBox里面点击下刚才建好的虚拟机&#xff0c;然后点下上面的黄色图标“设置”&#xff0c;或者右键菜单里面点击设置也可以(快捷键是CtrlS)Oracle VM VirtualBox虚拟机设置2、在出来的设置页面里面&#xff0c…

oracle xe gentoo,Oracle在gentoo下安装

补充:解决ORACLE10G安装界面中文乱码问题&#xff0c;修改以下变量使安装界面为英文。export LC_CTYPEen_US.UTF-8以下为原文1.OS:Gentoo-linux-2.6.23-rc5Oracle:Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86下载地址&#xff1a;2.使用管理员账户建立Oracle用户…

JMetro 5.2版发布

再一次问好 JMetro的新更新刚刚发布。 添加了两种新的控件样式&#xff1a;“标题窗格”和“手风琴”。 此外&#xff0c;还对现有样式和错误修复进行了调整。 最终&#xff0c;JMetro现在也可以通过Maven Central获得。 在本文中&#xff0c;我将详细介绍刚刚发布的JMetro 5…

matlab处理svm的数据,SVM-GUI 使用支持向量机(SVM)算法进行处理数据,提取特征参数,并通过MATLAB界面显示相关数 238万源代码下载- www.pudn.com...

文件名称: SVM-GUI下载收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 231 KB上传时间: 2014-05-13下载次数: 13提 供 者: 幽灵详细说明&#xff1a;使用支持向量机(SVM)算法进行处理数据&#xff0c;提取特征参数&#xff0c;并通过MATLAB界面显示相关数据-Using Support…

mockito_Eclipse的Mockito模板

mockito有时候&#xff0c;我想念树林里的树木-那是一段令人不安的长时间。 我最近才再次意识到这一点&#xff0c;在无数次中键入了一个更详细的模仿表达式之一。 有问题的语句是一个doAnswer(Answer)构造&#xff0c;使用涉及到的静态导入和泛型代码进行编码总是很麻烦。 尽…

linux系统运行powerbi,使用 Power BI 服务 - Power BI | Microsoft Docs

快速入门 - 使用 Power BI 服Quickstart - Getting around in Power BI service10/12/2020本文内容备注Power BI 正在转换为新外观&#xff0c;文档中的某些图像可能与服务中显示的图像不匹配。Power BI is moving to a new look, and some images in the documentation may no…

JMetro版本4.8已发布

再一次问好&#xff01; JMetro Java 4.8版JavaFX主题刚刚发布。 我们即将接近下一个主要版本的版本5.0。 这是已经过彻底改造的旧样式&#xff1a; 日期选择器 树视图 以及经过调整或更改了CSS结构的旧版本&#xff1a; 表格检视 列表显示 组合框 评级控制 4.8版详细…

Java 11快多少?

尽管大多数开发人员仍然使用Java 8 &#xff0c;但Java 11还是在不久前发布的。 让我们看看其中哪个对OptaPlanner更快。 找出答案的最佳方法当然是运行OptaPlanner基准测试。 本文是我们针对Java 8的类似文章的后续文章 。 基准方法 为了运行基准测试&#xff0c;我们使用了&…

linux5.9安装教程,Linux内核5.9的最重要功能及安装方法

原标题&#xff1a;Linux内核5.9的最重要功能及安装方法Linux内核5.9带来了吸引数据中心管理员的诸多性能提升。本文作者着重介绍了改进之处&#xff0c;并介绍了如何安装主线内核。与5.8一样&#xff0c;Linux内核5.9确实没有任何改变游戏规则的功能&#xff0c;至少对普通用户…