SpringBoot | 第二十七章:监控管理之Actuator使用 (2)

0.加入POM依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 加入doc文档 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator-docs</artifactId> </dependency> <!-- 开启安全认证 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>

加入spring-boot-actuator-docs可查看相关文档,如

docs

1.配置文件(可无),具体的可根据实际业务来配置。

# actuator的访问路径 management.context-path=http://www.likecs.com/monitor # 管理的端口调整成1234 management.port=1234 # 有些需要身份认证才能访问,可直接关闭鉴权 #management.security.enabled=true # 开启关闭应用端点 endpoints.shutdown.enabled=true # 安全验证的账号密码 security.user.name=oKong security.user.password=123456

2.编写启动类(普通的启动类),启动后,访问::1234/monitor/ (因为我们重新指定了访问端口的上下文为monitor了)

monitor首页

访问/monitor/beans,是需要授权的,可以看见需要输入用户名和密码了:

身份鉴权

输入配置文件里面配置的用户名和密码,就可以正常访问了:

beans

自定义端点

虽然本身SpringBoot已经自带了很多端点,大部分情况下是够用了。但对于某些特殊需要时,还是需要自定义端点来满足的。接下来就简单讲解下自定义端点的创建。

自定义健康端点

健康信息可以用来检查应用的运行状态。所以经常被监控软件用来提醒生产系统是否停止,数据库是否正常,或者redis是否启动等等,而且一般上健康端点的信息都是比较敏感的,应加入身份鉴权。

自动配置的健康端点有:

Auto-configured HealthIndicators

简单说明下:

名称 描述
CassandraHealthIndicator   检查 Cassandra 数据库是否启动。  
DiskSpaceHealthIndicator   检查磁盘空间不足。  
DataSourceHealthIndicator   检查是否可以获得连接 DataSource。  
ElasticsearchHealthIndicator   检查 Elasticsearch 集群是否启动。  
InfluxDbHealthIndicator   检查 InfluxDB 服务器是否启动。  
JmsHealthIndicator   检查 JMS 代理是否启动。  
MailHealthIndicator   检查邮件服务器是否启动。  
MongoHealthIndicator   检查 Mongo 数据库是否启动。  
Neo4jHealthIndicator   检查 Neo4j 服务器是否启动。  
RabbitHealthIndicator   检查 Rabbit 服务器是否启动。  
RedisHealthIndicator   检查 Redis 服务器是否启动。  
SolrHealthIndicator   检查 Solr 服务器是否已启动。  

这些端点,在spring-boot-starter-xxx包被依赖导入后,利用@Conditional等注解进行自动加载的,具体可以看看org.springframework.boot.actuate.autoconfigure包下的自动加载类。

HealthIndicatorAutoConfiguration

比如,上图中的,当我们加入spring-boot-starter-data-redis依赖后,RedisHealthIndicator就会自动被装载了,这个时候我们访问下::1234/monitor/health ,可以看见redis节点有显示了,状态是关闭

health

其他的都是类似的,具体可以看看源码。接下来,我们通过继承AbstractHealthIndicator来自定义一个监控端点(当然也可以实现 HealthIndicator接口的)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfzpd.html