弹簧启动执行器教程

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

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,一经查实,立即删除!

相关文章

matlab 大于并且小于,Matlab:将大于(小于)1(-1)的元素转换为1(-1)的序列

更新&#xff1a;我做了一些测试,Jonas的解决方案对于一系列不同大小的输入向量来说是最快的.特别是,正如angainor指出的那样,解决方案可以很好地扩展到大尺寸 – 这是一个重要的测试,因为通常是大尺寸的问题促使我们在SO上提出这些问题.感谢Jonas和tmpearce的解决方案 – 基于…

matlab 里try用法,matlab在整个程序(全局)中使用try-catch来报告错误

我的matlab程序是一个多窗口程序化GUI。我已经实现了一个报告系统&#xff0c;所以当遇到错误时&#xff0c;它会调用我编写的函数generateReport.m&#xff0c;它发送一个带有一些日志和状态信息的电子邮件&#xff0c;然后继续执行。为了实现这一点&#xff0c;我在每个单独的…

【渝粤题库】陕西师范大学200741概率论与数理统计作业(高起本、专升本)

《概率论与数理统计》作业 一、填空题 1&#xff0e;设有两门高射炮&#xff0c;每一门击中飞机的概率都是0.6&#xff0c;则同时发射一发炮弹而击中飞机的概率为   .若有一架敌机入侵领空&#xff0c;欲以99%以上的概率及中它&#xff0c;至少需 &#xff3f;&#xff3f;&…

php xls 邮件,PHPMailer发送邮件

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

activiti自定义_在Activiti中执行自定义查询

activiti自定义&#xff08;这可能最终会出现在Activiti 5.15版本的用户指南中&#xff0c;但是我已经想要共享它了&#xff09; Activiti API允许使用高级API与数据库进行交互。 例如&#xff0c;对于检索数据&#xff0c;查询API和本机查询API的用法很强大。 但是&#xff0…

【渝粤题库】陕西师范大学201371 国际法学作业

《国际法》作业 一、填空题 1&#xff0e;&#xff08; &#xff09;和&#xff08; &#xff09; 是国际法的主要渊源。 2&#xff0e;现代国际法主体应包括&#xff1a;国家、&#xff08; &#xff09;和&#xff08; &#xff09; 3&#xff0e;国家领土包括&#xff1a;领…

【渝粤题库】陕西师范大学201901 中国古代文学(二) 作业(高起专)

《中国古代文学&#xff08;二&#xff09;》【高起专】作业 一、单选题 1、提出“大凡物不得其平则鸣”这一著名观点的作家是&#xff08; &#xff09; A 李白 B 杜甫 C 韩愈 D 白居易 2、韦庄写有一首涉及黄巢起义的长篇叙事诗&#xff0c;题目叫做&#xff08; &#xff09…

php实际开发过程,4.工作实际开发应用

**本文以thinkphp5中扩展 think-queue的应用为实例**1.安装think-queue 扩展composer install topthink/think-queue2.index模块下新建控制器,调用消息队列入队~~~namespace app\index\controller;/*** 文件路径&#xff1a; \application\index\controller\JobTest.php* 该控制…

引导性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…

【渝粤题库】陕西师范大学202241 金融市场学 作业(专升本)

《金融市场学》作业 一 名词解释 1&#xff0e;货币头寸   2&#xff0e;金边债券   3&#xff0e;二板市场 4&#xff0e;金融市场 5&#xff0e;投资基金 6&#xff0e;系统风险 7&#xff0e;外汇市场 8&#xff0e;货币市场共同基金 9&#xff0e;衍生证券 10&#x…

【渝粤题库】陕西师范大学210002儿童文学 作业(高起专、高起本、专升本)

《儿童文学》作业 单选题 1、构成作品音响效果的因素是象声词、韵律和&#xff08; &#xff09;。 2、幼儿文学作品用词的总要求是&#xff1a;具体、浅显、充分发挥&#xff08; &#xff09;作用 3、在儿童文学创作艺术手法的运用中应注意心理描写和&#xff08; &#xff…

db2 迁移mysql,mysql 迁移 db2

我该怎样迁移数据呢?如果用于非 IBM 平台的数据库模式与用于 DB2 的模式相同(或非常类似),那么可 以通过使用 IBM Migration Toolkit (MTK) 来完成数据迁移。因此......4. . 迁移应用程序 1.不同数据库的对象区别 Mysql/Sql Server->oracle 自增长 vs 序列 Oracle->DB2 …

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

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

【渝粤题库】陕西师范大学300008 历史教学论

《历史教学论》作业 一、名词解释 1&#xff0e;历史课程标准 2&#xff0e;综合课型 3&#xff0e;讲述法 4&#xff0e;历史基础知识 5&#xff0e;历史教材 6&#xff0e;历史概念 7&#xff0e;复习课 8&#xff0e;讲解法 9&#xff0e;叙述法 10&#xff0e;绪论课 11&am…

【渝粤题库】陕西师范大学500013 物理教学论 作业(专升本)

《物理教学论》作业 一、简答题 1、中学物理教学应坚持哪些主要的教学原则&#xff1f; 2、适应新课程教学物理教师应具备怎样的智能结构&#xff1f; 3、中学生学习物理的主要思维特征是什么&#xff1f; 4、发展性课程评价体系的基本理念和原则是什么&#xff1f; 5、物理教学…

IDE日志分析方法pt。 1个

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

ycms+php,CMS下载_建站大师 - 建站模板,CMS模板,网站开发

增加后台和用户中心可查看升级值的记录[12-14]增加后台为用户充值升级值的功能[12-14]增加后台列表的字段回调格式函数&#xff1a;联动菜单名称、单选字段名称、下拉字段名称、复选框名称[12-16]增加钩子接口&#xff1a;模块内容审核处理之后(module_verify_after)[12-17]增加…

【渝粤题库】陕西师范大学700011 新课程改革与生物教材研究

《新课程改革与生物教材研究》作业 一、选择题 1、1921年弗雷德里克班廷从狗的体内分离得到天然胰岛素。40多年后&#xff0c;首次人工合成结晶牛胰岛素的科学家是 A&#xff0e;中国人 B&#xff0e;加拿大人 C&#xff0e;美国人 D&#xff0e;德国人 2、轴突是神经细胞的 A&…

国家开放大学2021春1050金融理论前沿课题题目

教育 教育 试卷代号&#xff1a; 1050 2021年春季学期期末统一考试 金融理论前沿课题 试题&#xff08;开卷&#xff09; 2021年7月 一、名词解释&#xff08;每小题5分&#xff0c;共15分&#xff09; 1.骆驼评级体系&#xff1a; 2.经济数据偏差&#xff1a; 3.核心通货膨胀…

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

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