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());
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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");
                }
            }
        }