parent
0a4ba499df
commit
d12e42e8d5
|
|
@ -264,6 +264,11 @@
|
||||||
<artifactId>jetty-server</artifactId>
|
<artifactId>jetty-server</artifactId>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.elasticsearch</groupId>
|
||||||
|
<artifactId>elasticsearch</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.elasticsearch.client</groupId>
|
<groupId>org.elasticsearch.client</groupId>
|
||||||
<artifactId>elasticsearch-rest-client</artifactId>
|
<artifactId>elasticsearch-rest-client</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ import org.springframework.context.annotation.Configuration;
|
||||||
* {@link ElasticsearchRestHealthIndicator} using the {@link RestClient}.
|
* {@link ElasticsearchRestHealthIndicator} using the {@link RestClient}.
|
||||||
*
|
*
|
||||||
* @author Artsiom Yudovin
|
* @author Artsiom Yudovin
|
||||||
* @since 2.1.0
|
* @since 2.1.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseHealthIndicato
|
||||||
org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseReactiveHealthIndicatorAutoConfiguration,\
|
org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseReactiveHealthIndicatorAutoConfiguration,\
|
||||||
org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchClientHealthIndicatorAutoConfiguration,\
|
org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchClientHealthIndicatorAutoConfiguration,\
|
||||||
org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchJestHealthIndicatorAutoConfiguration,\
|
org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchJestHealthIndicatorAutoConfiguration,\
|
||||||
|
org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchRestHealthIndicatorAutoConfiguration,\
|
||||||
org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration,\
|
org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration,\
|
||||||
org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration,\
|
org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration,\
|
||||||
org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration,\
|
org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration,\
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,10 @@
|
||||||
|
|
||||||
package org.springframework.boot.actuate.elasticsearch;
|
package org.springframework.boot.actuate.elasticsearch;
|
||||||
|
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStream;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
|
||||||
import com.google.gson.JsonParser;
|
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
import org.elasticsearch.client.Request;
|
import org.elasticsearch.client.Request;
|
||||||
import org.elasticsearch.client.Response;
|
import org.elasticsearch.client.Response;
|
||||||
|
|
@ -29,22 +28,29 @@ import org.elasticsearch.client.RestClient;
|
||||||
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
|
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
|
||||||
import org.springframework.boot.actuate.health.Health;
|
import org.springframework.boot.actuate.health.Health;
|
||||||
import org.springframework.boot.actuate.health.HealthIndicator;
|
import org.springframework.boot.actuate.health.HealthIndicator;
|
||||||
|
import org.springframework.boot.json.JsonParser;
|
||||||
|
import org.springframework.boot.json.JsonParserFactory;
|
||||||
|
import org.springframework.util.StreamUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link HealthIndicator} for an Elasticsearch cluster by REST.
|
* {@link HealthIndicator} for an Elasticsearch cluster using a {@link RestClient}.
|
||||||
*
|
*
|
||||||
* @author Artsiom Yudovin
|
* @author Artsiom Yudovin
|
||||||
* @since 2.1.0
|
* @author Brian Clozel
|
||||||
|
* @since 2.1.1
|
||||||
*/
|
*/
|
||||||
public class ElasticsearchRestHealthIndicator extends AbstractHealthIndicator {
|
public class ElasticsearchRestHealthIndicator extends AbstractHealthIndicator {
|
||||||
|
|
||||||
|
private static final String RED_STATUS = "red";
|
||||||
|
|
||||||
private final RestClient client;
|
private final RestClient client;
|
||||||
|
|
||||||
private final JsonParser jsonParser = new JsonParser();
|
private final JsonParser jsonParser;
|
||||||
|
|
||||||
public ElasticsearchRestHealthIndicator(RestClient client) {
|
public ElasticsearchRestHealthIndicator(RestClient client) {
|
||||||
super("Elasticsearch health check failed");
|
super("Elasticsearch health check failed");
|
||||||
this.client = client;
|
this.client = client;
|
||||||
|
this.jsonParser = JsonParserFactory.getJsonParser();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -56,12 +62,11 @@ public class ElasticsearchRestHealthIndicator extends AbstractHealthIndicator {
|
||||||
builder.down();
|
builder.down();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try (InputStreamReader reader = new InputStreamReader(
|
try (InputStream is = response.getEntity().getContent()) {
|
||||||
response.getEntity().getContent(), StandardCharsets.UTF_8)) {
|
Map<String, Object> root = this.jsonParser
|
||||||
JsonElement root = this.jsonParser.parse(reader);
|
.parseMap(StreamUtils.copyToString(is, StandardCharsets.UTF_8));
|
||||||
JsonElement status = root.getAsJsonObject().get("status");
|
String status = (String) root.get("status");
|
||||||
if (status.getAsString()
|
if (status.equals(RED_STATUS)) {
|
||||||
.equals(io.searchbox.cluster.Health.Status.RED.getKey())) {
|
|
||||||
builder.outOfService();
|
builder.outOfService();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue