背景:
单个springboot应用称之为端点,在微服务架构下单一端点的应用越来越少。多端点应用相互配合,相互协调交互最终为用户提供价值服务已经成为趋势。在这个趋势下,多个分布式应用的管理以及健康度检测已经成为棘手的问题。因为多个微服务可能部署在不同机房,不同服务器,甚至地理位置上跨越多个国家。对端点的状态不便于感知。
1. 版本
SpringBoot:2.0.0.RELEASE
2.添加maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3.application.yml里做配置添加
1.actuator默认的访问端口跟项目端口一致,但也可自己指定
management:
server:
port: 8100
2.actuator访问必须通过JMX和HTTP,但是使用HTTP默认只暴露health和info,因此想访问其他端点需自己配置
management:
endpoints:
web:
exposure:
exclude: shutdown,info # 排除端点,不可访问;多端点之间用逗号分隔
include: httptrace,env # 包含端点,可以访问;多端点之间用逗号分隔
在Spring Boot 2.0.0.RELEAS版本中,访问health端口,只能查询系统的状态,不能查看详细的信息。若想查看所需信息,需进行如下配置:
management:
endpoint:
health:
show-details: always
其中show-details的值有三个:never,when-authorized,always。具体含义如下:
never:从不展示详情(默认)
when-authorized:详情只展示给授权用户,授权角色可使用 management.endpoint.health.roles 进行配置
always:展示详情给所有用户
如想访问全部端点信息:
management:
endpoints:
web:
exposure:
include: "*"
4.访问形式变化
之前报错原因:
书上写的访问方式为:http://ip:port/health;但是我访问一直报错400,百度的结果跟书上一致。
http://localhost:8000/health
正确访问形式:
查询官方文档,
发现2.0.0.RELEASE的访问方式已经变了,
最新访问方式为:
http://ip:port/actuator/