转载请注明出处:
Spring Boot Actuator是Spring Boot提供的一个非常强大的工具,它可以帮助我们监控和管理我们的Spring Boot应用。Actuator提供了一系列的端点,我们可以通过这些端点来查看我们的应用的运行状态,例如健康状态、指标、信息、数据库连接、Redis连接等等
1.配置Spring Boot Actuator
要使用Spring Boot Actuator,我们首先需要在我们的Spring Boot项目中添加spring-boot-starter-actuator
依赖。在Maven项目中,我们可以通过以下方式添加这个依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
添加了这个依赖之后,Spring Boot Actuator会自动配置各种端点,使我们可以在生产环境中监控和管理我们的Spring Boot应用。
Spring Boot Actuator提供了一系列的端点,可以通过访问这些端点来查看我们的应用的运行状态。例如,通过访问/actuator/health
端点来查看应用的健康状态,通过访问/actuator/metrics
端点来查看我们的应用的指标,通过访问/actuator/info
端点来查看我们的应用的信息等。
以下是一个示例,展示了如何在我们的Spring Boot应用中使用Spring Boot Actuator:
curl http://localhost:8080/actuator/health
通过curl
命令访问了/actuator/health
端点,查看了我们的应用的健康状态。
2.Spring Boot Actuator默认配置项:
1.management.endpoints.web.exposure.include
:这个配置项用于指定哪些端点应该被暴露出来。默认情况下,它的值是*
,表示所有的端点都会被暴露出来。如果你想关闭某个端点,你可以将它的值从*
改为你想要暴露的端点的名称,用逗号分隔。
2.management.endpoints.web.exposure.exclude
:这个配置项用于指定哪些端点不应该被暴露出来。默认情况下,它的值是空字符串,表示没有端点被排除。如果你想关闭某个端点,你可以将它的值改为你想要关闭的端点的名称,用逗号分隔。
3.management.endpoints.web.base-path
:这个配置项用于指定所有端点的基础路径。默认情况下,它的值是/actuator
,表示所有的端点的路径都会以/actuator
开始。
4.management.endpoints.web.path-mapping
:这个配置项用于指定端点的路径映射。默认情况下,它的值是空字符串,表示没有端点的路径被映射。如果你想改变某个端点的路径,你可以将它的值改为端点的名称和新的路径,用冒号分隔。
5.management.endpoints.web.cors.allowed-origins
:这个配置项用于指定哪些源站点可以访问端点。默认情况下,它的值是空字符串,表示没有源站点被允许。如果你想允许某个源站点访问端点,你可以将它的值改为源站点的URL,用逗号分隔。
以下是一个示例,展示了如何在Spring Boot的配置文件中设置Actuator的默认配置项:
management: endpoints: web: exposure: include: '*' base-path: '/actuator' path-mapping: 'health=healthcheck' cors: allowed-origins: 'http://localhost:8080'
在这个示例中,设置了所有的端点都会被暴露出来,所有的端点的路径都会以/actuator
开始,health
端点的路径被映射为healthcheck
,http://localhost:8080
被允许访问所有的端点.
3.关闭健康检查
在Spring Boot中,你可以通过配置文件来关闭Actuator的检查。具体来说,你可以使用management.endpoints.web.exposure.include
和management.endpoints.web.exposure.exclude
配置项来控制哪些端点被暴露出来。
如果你想关闭所有的Actuator端点,你可以将management.endpoints.web.exposure.include
配置项设置为空字符串。这样,Actuator就不会暴露任何端点,也就意味着Actuator的检查就不会被执行。
以下是一个示例,展示了如何在Spring Boot的配置文件中关闭所有的Actuator端点:
management: endpoints: web: exposure: include: ''
在这个示例中,我们将management.endpoints.web.exposure.include
配置项设置为空字符串,这样Actuator就不会暴露任何端点,也就意味着Actuator的检查就不会被执行。
需要注意的是,关闭Actuator的检查可能会影响到你的应用程序的监控和管理。因此,你应该在关闭Actuator的检查之前,确保你已经准备好了其他的监控和管理方案。
4.健康检查检查示例
如果你的management.endpoint.health.show-details=always
配置项设置为always
,那么/actuator/health
端点会返回所有的健康检查结果,包括应用程序的各种状态信息,如数据库连接、Redis连接等。
以下是一个示例,展示了/actuator/health
端点返回的健康检查结果:
{ "status": "UP", "components": { "db": { "status": "UP", "details": { "database": "MySQL", "hello": 1 } }, "diskSpace": { "status": "UP", "details": { "total": 250685575168, "free": 66978721536, "threshold": 10485760 } }, "redis": { "status": "UP", "details": { "version": "4.0.10", "redis_version": "4.0.10", "uptime": 11038, "os": "Linux 3.10.0-862.11.6.el7.x86_64 x86_64", "redis_mode": "standalone", "role": "master", "connected_clients": 1, "used_memory": 610024, "used_memory_human": "594.09K", "used_memory_rss": 737008, "used_memory_peak": 610024, "used_memory_peak_human": "594.09K", "used_memory_lua": 37888, "mem_fragmentation_ratio": "1.44", "mem_allocator": "jemalloc-3.6.0", "loading": 0, "rdb_changes_since_last_save": 0, "rdb_bgsave_in_progress": 0, "rdb_last_save_time": 1577023058, "rdb_last_bgsave_status": "ok", "rdb_last_bgsave_time_sec": -1, "rdb_current_bgsave_time_sec": -1, "aof_enabled": 0, "aof_rewrite_in_progress": 0, "aof_rewrite_scheduled": 0, "aof_last_rewrite_time_sec": -1, "aof_current_rewrite_time_sec": -1, "aof_last_bgrewrite_status": "ok", "aof_last_write_status": "ok", "total_connections_received": 1, "total_commands_processed": 1, "instantaneous_ops_per_sec": 0, "total_net_input_bytes": 73, "total_net_output_bytes": 394, "instantaneous_input_kbps": 0.0, "instantaneous_output_kbps": 0.0, "rejected_connections": 0, "sync_full": 0, "sync_partial_ok": 0, "sync_partial_err": 0, "expired_keys": 0, "evicted_keys": 0, "keyspace_hits": 0, "keyspace_misses": 0, "pubsub_channels": 0, "pubsub_patterns": 0, "latest_fork_usec": 0, "migrate_cached_sockets": 0, "slave_expires_tracked_keys": 0, "active_defrag_hits": 0, "active_defrag_misses": 0, "active_defrag_key_hits": 0, "active_defrag_key_misses": 0, "active_defrag_key_hits_perc": 0.0, "active_defrag_key_misses_perc": 0.0, "active_defrag_scanned": 0, "active_defrag_scanned_perc": 0.0, ```
标签: spring boot