/// <summary> /// Determines whether Elasticsearch cluster is ready. /// </summary> public async Task <Status> IsReadyAsync(CancellationToken cancellationToken) { var healthRequest = new ClusterHealthRequest { WaitForStatus = WaitForStatus.Green }; ClusterHealthResponse healthResponse = await _client .Cluster.HealthAsync(healthRequest, cancellationToken); return(new Status { IsReady = healthResponse.IsValid, Message = healthResponse.DebugInformation }); }
/// <summary> /// Retrieves cluster heaşth status /// </summary> /// <param name="cancellationToken">Token to cancel Elasticsearch request</param> /// <returns>Cluster health status</returns> public virtual async Task <ClusterHealthResponse> HealthAsync(CancellationToken cancellationToken) { ClusterHealthResponse result; try { HttpResponseMessage responseMessage = await GetAsync("/_cluster/health", null, cancellationToken); var response = await responseMessage.Content.ReadAsStringAsync(); result = JsonConvert.DeserializeObject <ClusterHealthResponse>(response); result.IsValid = true; } catch (Exception ex) { result = new ClusterHealthResponse { IsValid = false, OriginalException = ex }; } return(result); }
public ActionResult Status() { ClusterHealthResponse res = null; int num = 0; string status = "unknown"; string nodes = "-------------------------\n"; try { res = HlidacStatu.Lib.ES.Manager.GetESClient().Cluster.Health(); num = res?.NumberOfNodes ?? 0; status = res?.Status.ToString() ?? "unknown"; //GET /_cat/nodes?v&h=m,name,ip,u&s=name var catr = Lib.ES.Manager.GetESClient() .LowLevel.Cat.Nodes <Elasticsearch.Net.StringResponse>( new Elasticsearch.Net.Specification.CatApi.CatNodesRequestParameters() { Headers = new[] { "m", "name", "ip", "u" }, SortByColumns = new[] { "name" }, Verbose = true } ).Body ?.Replace("10.10.", ""); ; nodes = nodes + catr; } catch (Exception e) { HlidacStatu.Util.Consts.Logger.Error("Status page error", e); ViewBag.Error = e; } return(Content(string.Format("{0}-{1}\n\n" + nodes, num, status), "text/plain")); }