public override async Task ProfileAsync(IElasticClient client, ColoredConsoleWriter output) { for (var i = 0; i < _iterations; i++) { var catAllocationAsync = client.CatAllocationAsync(s => s.V()); var catCountAsync = client.CatCountAsync(s => s.V()); var catFielddataAsync = client.CatFielddataAsync(s => s.V()); var catHealthAsync = client.CatHealthAsync(s => s.V()); var catIndicesAsync = client.CatIndicesAsync(s => s.V()); var catNodesAsync = client.CatNodesAsync(s => s.V()); var catPendingTasksAsync = client.CatPendingTasksAsync(s => s.V()); var catThreadPoolAsync = client.CatThreadPoolAsync(s => s.V()); var catAliasesAsync = client.CatAliasesAsync(s => s.V()); await Task.WhenAll( catAllocationAsync, catCountAsync, catFielddataAsync, catHealthAsync, catIndicesAsync, catNodesAsync, catPendingTasksAsync, catThreadPoolAsync, catAliasesAsync ).ConfigureAwait(false); if (!catAllocationAsync.Result.IsValid) output.WriteOrange("invalid response received for cat allocation"); if (!catCountAsync.Result.IsValid) output.WriteOrange("invalid response received for cat count"); if (!catFielddataAsync.Result.IsValid) output.WriteOrange("invalid response received for cat fielddata"); if (!catHealthAsync.Result.IsValid) output.WriteOrange("invalid response received for cat health"); if (!catIndicesAsync.Result.IsValid) output.WriteOrange("invalid response received for cat indices"); if (!catNodesAsync.Result.IsValid) output.WriteOrange("invalid response received for cat nodes"); if (!catPendingTasksAsync.Result.IsValid) output.WriteOrange("invalid response received for cat pending tasks"); if (!catThreadPoolAsync.Result.IsValid) output.WriteOrange("invalid response received for cat thread pool"); if (!catAliasesAsync.Result.IsValid) output.WriteOrange("invalid response received for cat aliases"); } }
public async Task <HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = new CancellationToken()) { var healthDocument = await _elasticClient.CatHealthAsync(cancellationToken : cancellationToken); var response = healthDocument.Records.FirstOrDefault(c => c.Cluster.Contains("advertapies")); if (response.Status == "red") { return(HealthCheckResult.Unhealthy()); } return(HealthCheckResult.Healthy()); }
public override async Task <bool> Health() { try { var elasticHealth = _elasticClient.CatHealthAsync(); var domainHealth = _restClient.ExecuteAsync <bool>(new JsonRestRequest(_configuration.GetDomainApiMonitorHealthUrl(), Method.GET)); await Task.WhenAll(elasticHealth, domainHealth).ConfigureAwait(false); return(elasticHealth.Result.ApiCall.Success && domainHealth.Result.Data); } catch (Exception) { return(false); } }
internal static void SeedElasticsearch(this IApplicationBuilder app) { if (app == null) { throw new ArgumentNullException(nameof(app)); } IElasticClient client = app.ApplicationServices.GetService <IElasticClient>(); AppSettings settings = app.ApplicationServices.GetService <AppSettings>(); string index = settings != null && settings.ElasticConfig != null && string.IsNullOrWhiteSpace(settings.ElasticConfig.DefaultIndex) ? settings.ElasticConfig.DefaultIndex : "friends"; var observable = Observable.Create <bool> (async o => { var elasticHealth = await client.CatHealthAsync(); if (elasticHealth.IsValid) { Console.WriteLine("Elasticsearch is UP!"); o.OnNext(true); o.OnCompleted(); } else { Console.WriteLine("Elasticsearch is down!"); o.OnError(new Exception("Elasticsearch is down")); } }); var observer = Observer.Create <bool> (isElasticsearchUp => { // Remove then create the index client.DeleteIndex(index); client.CreateIndex(index, c => c.Mappings(ms => ms.Map <Friend> (m => m.AutoMap()))); // Bulk insert random friends; bulk for performance client.Bulk((s) => { return(s.IndexMany(Friend.BuildRandomFriends(10))); }); }); observable.DelaySubscription(TimeSpan.FromSeconds(1)).Retry(60).Subscribe(observer); }
public override async Task ProfileAsync(IElasticClient client, ColoredConsoleWriter output) { for (var i = 0; i < _iterations; i++) { var catAllocationAsync = client.CatAllocationAsync(s => s.V()); var catCountAsync = client.CatCountAsync(s => s.V()); var catFielddataAsync = client.CatFielddataAsync(s => s.V()); var catHealthAsync = client.CatHealthAsync(s => s.V()); var catIndicesAsync = client.CatIndicesAsync(s => s.V()); var catNodesAsync = client.CatNodesAsync(s => s.V()); var catPendingTasksAsync = client.CatPendingTasksAsync(s => s.V()); var catThreadPoolAsync = client.CatThreadPoolAsync(s => s.V()); var catAliasesAsync = client.CatAliasesAsync(s => s.V()); await System.Threading.Tasks.Task.WhenAll( catAllocationAsync, catCountAsync, catFielddataAsync, catHealthAsync, catIndicesAsync, catNodesAsync, catPendingTasksAsync, catThreadPoolAsync, catAliasesAsync ).ConfigureAwait(false); if (!catAllocationAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat allocation"); } if (!catCountAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat count"); } if (!catFielddataAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat fielddata"); } if (!catHealthAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat health"); } if (!catIndicesAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat indices"); } if (!catNodesAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat nodes"); } if (!catPendingTasksAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat pending tasks"); } if (!catThreadPoolAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat thread pool"); } if (!catAliasesAsync.Result.IsValid) { output.WriteOrange("invalid response received for cat aliases"); } } }