Springboot(一)监控与管理Actuator ╰+攻爆jí腚メ 2022-05-23 09:35 230阅读 0赞 ##### 前言: ##### Actuator是一个暴露自身信息的模块,主要实现对应用系统的监控与管理。主要有三大功能: * 应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring Boot应用密切相关的配置类信息。 * 度量指标类:获取应用程序运行过程中用于监控的度量指标,比如:内存信息、线程池信息、HTTP请求统计等。 * 操作控制类:提供了对应用的关闭等操作类功能。 ##### 加入maven包: ##### <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 在springboot配置文件中配置访问根路径,springboot2.0默认: /actuator,老版本为/ management: endpoints: web: base-path: /actuator ##### 端点(Endpoints) ##### 端点可用于监控应用或者与应用进行交互,Spring Boot包含很多内置的端点,每个断电都可以禁用或者启用,要访问远程端点必须通过JMX或者http进行暴露,下图为启动应用程序的端点。 ![70][] 端点列表: <table> <thead> <tr> <th><br>ID</th> <th>描述</th> <th>默认启用</th> </tr> </thead> <tbody> <tr> <td>auditevents</td> <td>显示当前应用程序的审计事件信息</td> <td>Yes</td> </tr> <tr> <td>beans</td> <td>显示一个应用中<code>所有Spring Beans</code>的完整列表</td> <td>Yes</td> </tr> <tr> <td>conditions</td> <td>显示<code>配置类和自动配置类</code>(configuration and auto-configuration classes)的状态及它们被应用或未被应用的原因</td> <td>Yes</td> </tr> <tr> <td>configprops</td> <td>显示一个所有<code>@ConfigurationProperties</code>的集合列表</td> <td>Yes</td> </tr> <tr> <td>env</td> <td>显示来自Spring的 <code>ConfigurableEnvironment</code>的属性</td> <td>Yes</td> </tr> <tr> <td>flyway</td> <td>显示数据库迁移路径,如果有的话</td> <td>Yes</td> </tr> <tr> <td>health</td> <td>显示应用的<code>健康信息</code>(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情)</td> <td>Yes</td> </tr> <tr> <td>info</td> <td>显示任意的<code>应用信息</code></td> <td>Yes</td> </tr> <tr> <td>liquibase</td> <td>展示任何Liquibase数据库迁移路径,如果有的话</td> <td>Yes</td> </tr> <tr> <td>metrics</td> <td>展示当前应用的<code>metrics</code>信息</td> <td>Yes</td> </tr> <tr> <td>mappings</td> <td>显示一个所有<code>@RequestMapping</code>路径的集合列表</td> <td>Yes</td> </tr> <tr> <td>scheduledtasks</td> <td>显示应用程序中的<code>计划任务</code></td> <td>Yes</td> </tr> <tr> <td>sessions</td> <td>允许从Spring会话支持的会话存储中检索和删除(retrieval and deletion)用户会话。使用Spring Session对反应性Web应用程序的支持时不可用。</td> <td>Yes</td> </tr> <tr> <td>shutdown</td> <td>允许应用以优雅的方式关闭(默认情况下不启用)</td> <td>No</td> </tr> <tr> <td>threaddump</td> <td>执行一个线程dump</td> <td>Yes</td> </tr> </tbody> </table> 如果使用web应用(Spring MVC, Spring WebFlux, 或者 Jersey),你还可以使用以下端点: <table> <thead> <tr> <th>ID</th> <th>描述</th> <th>默认启用</th> </tr> </thead> <tbody> <tr> <td>heapdump</td> <td>返回一个GZip压缩的<code>hprof</code>堆dump文件</td> <td>Yes</td> </tr> <tr> <td>jolokia</td> <td>通过HTTP暴露<code>JMX beans</code>(当Jolokia在类路径上时,WebFlux不可用)</td> <td>Yes</td> </tr> <tr> <td>logfile</td> <td>返回<code>日志文件内容</code>(如果设置了logging.file或logging.path属性的话),支持使用HTTP <strong>Range</strong>头接收日志文件内容的部分信息</td> <td>Yes</td> </tr> <tr> <td>prometheus</td> <td>以可以被Prometheus服务器抓取的格式显示<code>metrics</code>信息</td> <td>Yes</td> </tr> </tbody> </table> 端点启动不代表可以直接用,必须将其暴露出来。 ##### 启用端点: ##### 默认除了shutdown以外,所有端点均已启用,要配置单个端点的启用,需要按照下面方式: management.endpoint.shutdown.enabled=true 另外可以通过`management.endpoints.enabled-by-default`来修改全局端口默认配置,以下示例启用info端点并禁用所有其他端点: management.endpoints.enabled-by-default=false management.endpoint.info.enabled=tru ##### 暴露端点 ##### 由于端点可能包含敏感信息,因此应仔细考虑何时公开它们。下表显示了内置端点的默认曝光: <table> <thead> <tr> <th>ID</th> <th>JMX</th> <th>Web</th> </tr> </thead> <tbody> <tr> <td>auditevents</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>beans</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>conditions</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>configprops</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>env</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>flyway</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>health</td> <td>Yes</td> <td><code>Yes</code></td> </tr> <tr> <td>heapdump</td> <td>N/A</td> <td>No</td> </tr> <tr> <td>httptrace</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>info</td> <td>Yes</td> <td><code>Yes</code></td> </tr> <tr> <td>jolokia</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>logfile</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>loggers</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>liquibase</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>metrics</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>mappings</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>prometheus</td> <td>N/A</td> <td>No</td> </tr> <tr> <td>scheduledtasks</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>sessions</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>shutdown</td> <td>Yes</td> <td>No</td> </tr> <tr> <td>threaddump</td> <td>Yes</td> <td>No</td> </tr> </tbody> </table> 要更改公开哪些端点,请使用以下技术特定的`include`和`exclude`属性: <table> <thead> <tr> <th>Property</th> <th>Default</th> </tr> </thead> <tbody> <tr> <td>management.endpoints.jmx.exposure.exclude</td> <td>*</td> </tr> <tr> <td>management.endpoints.jmx.exposure.include</td> <td>*</td> </tr> <tr> <td>management.endpoints.web.exposure.exclude</td> <td>*</td> </tr> <tr> <td>management.endpoints.web.exposure.include</td> <td>info, health</td> </tr> </tbody> </table> include属性列出了公开的端点的ID,exclude属性列出了不应该公开的端点的ID exclude属性优先于include属性。包含和排除属性都可以使用端点ID列表进行配置。 例如,要停止通过JMX公开所有端点并仅公开**health**和**info**端点,请使用以下属性: management.endpoints.jmx.exposure.include=health,info 可以用来选择所有端点。例如,要通过HTTP公开除env和beans端点之外的所有内容,请使用以下属性: management.endpoints.web.exposure.include=* management.endpoints.web.exposure.exclude=env,beans `*`在YAML中有特殊的含义,所以如果你想包含(或排除)所有的端点,一定要加引号,如下例所示: management: endpoints: web: exposure: include: '*' ##### 跨域支持 ##### 跨源资源共享(Cross-origin resource sharing,CORS)是W3C规范,允许您以灵活的方式指定授权哪种跨域请求。如果您使用Spring MVC或Spring WebFlux,则可以配置Actuator的Web端点来支持这些场景。 默认情况下,CORS支持处于禁用状态,只有在设置了`management.endpoints.web.cors.allowed-origins`属性后才能启用。以下配置允许来自example.com域的GET和POST调用: management.endpoints.web.cors.allowed-origins=http://example.com management.endpoints.web.cors.allowed-methods=GET,POST ##### 自定义管理服务器地址 ##### 您可以通过设置`management.server.address`属性来自定义管理端点可用的地址。如果您只想在内部网络或面向操作系统的网络上收听,或只收听本地主机的连接,那么这样做会很有用。 > 只有当端口与主服务器端口不同时,您才可以监听其他地址。 以下示例application.properties不允许远程管理连接: management.server.port=8081 management.server.address=127.0.0.1 * 2禁用HTP端点 如果您不想通过HTTP公开端点,则可以将管理端口设置为-1,如以下示例所示: management.server.port=-1 我的spring配置文件: management: endpoints: web: base-path: /actuator exposure: include: '*' 程序启动时检测到的端点: ![70 1][] [我的github地址][github] ##### 参考: ##### [Spring Boot Actuator监控端点小结 ][Spring Boot Actuator_] [Spring Boot 2.0官方文档之 Actuator][Spring Boot 2.0_ Actuator] [70]: /images/20220523/2607704928274da9a1ba35e6d50cd81d.png [70 1]: /images/20220523/485edd338d7c4687bc775594f66b8af0.png [github]: https://github.com/xuhaixing/myDocument.git [Spring Boot Actuator_]: http://blog.didispace.com/spring-boot-actuator-1/ [Spring Boot 2.0_ Actuator]: https://blog.csdn.net/alinyua/article/details/80009435
还没有评论,来说两句吧...