27.基于HTTP的监控和管理

  • 如果你正在开发一个Spring MVC应用,Spring Boot执行器自动将所有启用的端点通过HTTP暴露出去。默认约定使用端点的id作为URL路径,例如,health暴露为/health。

保护敏感端点

  • 如果你的项目中添加的有Spring Security,所有通过HTTP暴露的敏感端点都会受到保护。默认情况下会使用基本认证(basic authentication,用户名为user,密码为应用启动时在控制台打印的密码)。
  • 你可以使用Spring属性改变用户名,密码和访问端点需要的安全角色。例如,你可能会在application.properties中添加下列配置:
    security.user.name=admin
    security.user.password=secret
    management.security.role=SUPERUSER

注:如果你不使用Spring Security,那你的HTTP端点就被公开暴露,你应该慎重考虑启用哪些端点。

自定义管理服务器的上下文路径

  • 有时候将所有的管理端口划分到一个路径下是有用的。例如,你的应用可能已经将 /info 作为他用。你可以用 management.contextPath 属性为管理端口设置一个前缀:

     management.context-path=/manage
    
  • 上面的application.properties示例将把端口从 /{id} 改为 /manage/{id} (比如,/manage/info)。

自定义管理服务器的端口

  • 对于基于云的部署,使用默认的HTTP端口暴露管理端点(endpoints)是明智的选择。然而,如果你的应用是在自己的数据中心运行,那你可能倾向于使用一个不同的HTTP端口来暴露端点。

  • management.port 属性可以用来改变HTTP端口:

     management.port=8081
    

*由于你的管理端口经常被防火墙保护,不对外暴露也就不需要保护管理端点,即使你的主要应用是安全的。在这种情况下,classpath下会存在Spring Security库,你可以设置下面的属性来禁用安全管理策略(management security):

  management.security.enabled=false
  • (如果classpath下不存在Spring Security,那也就不需要显示的以这种方式来禁用安全管理策略,它甚至可能会破坏应用程序。)

自定义管理服务器的地址

  • 你可以通过设置 management.address 属性来定义管理端点可以使用的地址。这在你只想监听内部或面向生产环境的网络,或只监听来自localhost的连接时非常有用。

  • 下面的application.properties示例不允许远程管理连接:

    management.port=8081
    management.address=127.0.0.1
    

禁用HTTP端点

  • 如果不想通过HTTP暴露端点,你可以将管理端口设置为-1: management.port=-1

HTTP Health端点访问限制

  • 通过health端点暴露的信息根据是否为匿名访问而不同。默认情况下,当匿名访问时,任何有关服务器的健康详情都被隐藏了,该端点只简单的指示服务器是运行(up)还是停止(down)。此外,当匿名访问时,响应会被缓存一个可配置的时间段以防止端点被用于'拒绝服务'攻击。 endpoints.health.time-to-live 属性被用来配置缓存时间(单位为毫秒),默认为1000毫秒,也就是1秒。

  • 上述的限制可以被禁止,从而允许匿名用户完全访问health端点。想达到这个效果,可以将 endpoints.health.sensitive 设为 false 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容