37.再谈Spring Boot Actuator

spring Boot包含许多其他功能,可帮助您在应用程序投入生产时监控和管理它们。 您可以选择使用HTTP端点,JMX甚至远程shell(SSH或Telnet)来管理和监视应用程序。 审计,运行状况和指标收集可以自动应用于您的应用程序.Actuator HTTP端点仅适用于基于Spring MVC的应用程序。 特别是,除非你启用Spring MVC,否则它不适用于Jersey。

spring-boot-actuator提供了所有投入生产时监控和管理的功能
Maven项目中增加actuator

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

actuator允许通过端点访问与程序进行交互。 Spring Boot包含许多内置端点,您也可以添加自己的端点。 例如,健康端点提供基本的应用程序健康信息。公开端点的方式取决于您选择的技术类型。 大多数应用程序选择HTTP监视,其中端点的ID映射到URL.

 

 SpringMvc还提供了以下额外的端点

根据端点的暴露方式,敏感属性可用作安全提示。 例如,敏感端点在通过HTTP访问时需要用户名/密码(如果未启用Web安全性,则只需禁用)

通过HTTP监控和管理

如果您正在开发Spring MVC应用程序,Spring Boot Actuator将自动配置所有已启用的端点以通过HTTP公开。 默认约定是使用端点的id作为URL路径。 例如,健康端点暴露的URL  为/health。

访问敏感端点

默认情况下,所有敏感HTTP端点都受到保护,以便只有具有ACTUATOR角色的用户才能访问它们。 使用标准HttpServletRequest.isUserInRole方法强制执行安全性.

如果想配置其他角色取代ACTUATOR,使用management.security.roles进行属性设置。

如果要在防火墙后面部署应用程序,您可能希望无需身份验证即可访问所有Actuator端点。 您可以通过更改management.security.enabled属性来执行此操作:

management.security.enabled=false

如果您要公开部署应用程序,则可能需要添加“Spring Security”来处理用户身份验证。 添加“Spring Security”时,默认情况下,“基本”身份验证将与用户名用户和生成的密码一起使用(在应用程序启动时打印在控制台上)。您可以使用Spring属性更改用户名和密码,以及更改访问端点所需的安全角色。

如以下配置:

#ACTUATOR权限配置
#默认是没有权限控制的,
#以下配置权限认证,只有当用户名是admin且密码为123456,且拥有SUPERADMIN角色是才能访问sentitive #default列为true的端点 
#对于密码,生产上可以配置密文
management.security.enabled=true
security.user.name=admin
security.user.password=123456 
management.security.roles=SUPERADMIN

如果您的应用程序具有自定义安全配置,并且您希望无需身份验证即可访问所有Actuator端点,则需要在安全配置中明确配置该端点。 除此之外,您还需要将management.security.enabled属性更改为false。

自定义管理端点路径

有时,将所有管理端点分组到单个路径中非常有用。 例如,您的应用程序可能已将/ info用于其他目的。 您可以使用management.contextpath属性为管理端点设置前缀:

management.context-path=/manage

上面的application.properties示例会将端点从/ {id}更改为/ manage / {id}(例如/ manage / info)。

您还可以更改端点的“id”(endpoints.{name} .id),然后更改MVC端点的默认资源路径。 合法端点ID仅由字母数字字符组成(因为它们可以在许多地方公开,包括禁止使用特殊字符的JMX对象名称)。 可以通过配置单独更改MVC路径endpoints.{name} .path,并且没有对这些值进行验证(因此您可以使用URL路径中合法的任何内容)。 例如,要将/ health端点的位置更改为/ ping / me,您可以设置endpoints.health.path = / ping / me。

自定义管理服务器端口

使用默认HTTP端口公开管理端点是基于云部署的明智选择。 但是,如果您的应用程序在您自己的数据中心内运行,您可能更喜欢使用不同的HTTP端口公开端点。

management.port属性可用于更改HTTP端口。

management.port=8081

禁用HTTP端点

如果您不想通过HTTP公开端点,可以将管理端口设置为-1:

management.port=-1

猜你喜欢

转载自blog.csdn.net/niugang0920/article/details/81102180