Exemple #1
0
        private async Task Should_collect_and_publish_metrics_and_gossip_them_around_the_node_ring()
        {
            await AwaitAssertAsync(() =>
            {
                AwaitClusterUp(Roles.ToArray());
            }, TimeSpan.FromSeconds(30));

            EnterBarrier("cluster_started");
            await AwaitAssertAsync(() =>
            {
                Cluster.State.Members.Count(m => m.Status == MemberStatus.Up).Should().Be(Roles.Count);
            }, TimeSpan.FromSeconds(30));

            await AwaitAssertAsync(() =>
            {
                MetricsView.ClusterMetrics.Count.Should().Be(Roles.Count);
            }, TimeSpan.FromSeconds(30));

            await WithinAsync(10.Seconds(), async() =>
            {
                var collector = new MetricsCollectorBuilder().Build(Cluster.System);
                collector.Sample().Metrics.Count.Should().BeGreaterThan(3);
                EnterBarrier("after");
            });
        }
Exemple #2
0
        public static IServiceCollection AddBuiltInMetrics(this IServiceCollection services, MetricsCollectorBuilder?builder = null)
        {
            services.TryAddSingleton <ICpuUsageMonitor, CpuUsageMonitor>();
            services.AddHostedService(sp => (CpuUsageMonitor)sp.GetRequiredService <ICpuUsageMonitor>());

            if (builder == null)
            {
                builder = MetricsCollectorBuilder.Default();
            }

            services.AddHostedService(sp => ActivatorUtilities.CreateInstance <MetricsCollectorService>(sp, builder.Build(sp)));

            return(services);
        }
        /// <summary>
        /// Configures a <see cref="IMetricsCollector" /> and adds it to the service collection.
        /// </summary>
        /// <param name="services">
        /// An <see cref="IServiceCollection" /> to add the collector to.
        /// </param>
        public static IMetricsCollectorBuilder AddMetricsCollector(this IServiceCollection services)
        {
            var builder = new MetricsCollectorBuilder(services);

            services
            .AddSingleton <MetricsCollector>()
            .AddSingleton <IMetricsCollector>(s => s.GetService <MetricsCollector>())
            .AddSingleton <IHostedService>(s => s.GetService <MetricsCollector>())
            .AddSingleton <MetricSourceOptions>()
            .AddSingleton <MetricsCollectorOptions>(s => builder.Build(s));
#if NETCOREAPP
            services
            .AddSingleton <DiagnosticsCollector>()
            .AddSingleton <IDiagnosticsCollector>(s => s.GetService <DiagnosticsCollector>())
            .AddSingleton <IHostedService>(s => s.GetService <DiagnosticsCollector>());
#endif

            return(builder);
        }