springboot加es健康检查问题

本文介绍了当自定义健康检查路径被默认过滤器拦截导致无法正常工作的问题,并提供了解决方案,即通过配置排除默认的健康检查端点,使自定义的健康检查接口生效。

代码自定义了健康检查路径/actuator/health
但是实际请求的时候走不到自己的代码里
会经过filter拦截掉,拦截之后会经过调用es的健康检查失败,而返回503
解决办法:
application.yaml里
management:
endpoints:
exposure:
exclude: health

排除health,走自己写的健康检查接口

### 检查 Spring Boot 中 Elasticsearch 的健康状态 在 Spring Boot 应用中,默认情况下,如果集成了 Elasticsearch 并启用了 Actuator 功能模块,则会自动对 Elasticsearch 实施健康检查。这一行为由 `management.health.elasticsearch.enabled=true` 控制默认开启[^2]。这意味着即使开发者并未显式配置任何与健康检查相关的选项,在应用启动阶段以及后续运行过程中仍可能会触发针对 Elasticsearch 的健康状况评估操作。 对于希望主动获取 Elasticsearch 健康状态的情况,可以采用以下几种方法实现: #### 方法一:通过 Actuator 提供的标准接口访问 Spring Boot Actuator 已经内置支持多种组件的健康监测功能,其中包括了 Elasticsearch 。只需确保应用程序已正确引入依赖并完成基本设置后,就可以直接调用 `/actuator/health` 或更具体的子路径如 `/actuator/health/elasticsearch` 来获得关于 Elasticsearch 当前健康的报告信息[^3]。 示例请求 URL: ``` GET http://<your-server-address>/actuator/health/elasticsearch ``` 返回结果通常类似于这样: ```json { "status":"UP", "details":{ "cluster_name":"elasticsearch", "status":"GREEN" } } ``` 其中 `"status"` 字段表明整体服务可用性("UP"/"DOWN"),而 details 下面的内容则提供了更多具体指标描述集群内部情况,例如颜色编码代表的不同级别稳定性等[^4]。 #### 方法二:编写自定义逻辑检测 Elasticsearch 连接有效性 除了利用现成工具外,也可以自行构建适合业务需求场景下的连接校验机制。这一般涉及到创建一个新的 RestHighLevelClient 实例指向目标 ES 地址集合,并尝试发起简单的 ping 请求或者检索索引元数据命令来看其响应是否符合预期标准。 以下是使用 Java 编码形式的一个实例片段: ```java import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; public boolean testElasticSearchConnection(String host,int port)throws Exception{ try(RestHighLevelClient client=new RestHighLevelClient( RestClient.builder(new HttpHost(host,port,"http")))){ Map<String,Object> response=client.info(RequestOptions.DEFAULT).toMap(); System.out.println("Connected to "+response.get("name")); return true; }catch(Exception e){ System.err.println("Failed connecting to Elastic Search:"+e.getMessage()); throw e; } } // Usage Example boolean isConnected=testElasticSearchConnection("localhost",9200); if(isConnected){ System.out.println("Successfully connected!"); }else{ System.out.println("Connection failed."); } ``` 以上代码展示了如何建立临时客户端对象并向指定主机发送 info 请求以确认可达性和基本信息回复的能力[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值