Exemplo n.º 1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTestStuff();
            services.AddLogging().AddRouting(options => { options.LowercaseUrls = true; });

            services.AddMvc(options => options.AddMetricsResourceFilter());

            var reportFilter = new DefaultMetricsFilter();

            reportFilter.WithHealthChecks(false);

            services.AddMetrics(
                Configuration.GetSection("AppMetrics"),
                options =>
            {
                options.WithGlobalTags(
                    (globalTags, info) =>
                {
                    globalTags.Add("app", info.EntryAssemblyName);
                    globalTags.Add("server", info.MachineName);
                    globalTags.Add("version", info.EntryAssemblyVersion);
                });
            }).
            AddPrometheusSerialization().
            AddJsonHealthSerialization().
            AddHealthChecks(
                factory =>
            {
                factory.RegisterPingHealthCheck("google ping", "google.com", TimeSpan.FromSeconds(10));
                factory.RegisterHttpGetHealthCheck("github", new Uri("https://github.com/"), TimeSpan.FromSeconds(10));
            }).
            AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics"));
        }
Exemplo n.º 2
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTestStuff();
            services.AddLogging().AddRouting(options => { options.LowercaseUrls = true; });

            services.AddMvc(options => options.AddMetricsResourceFilter());

            var reportFilter = new DefaultMetricsFilter();

            reportFilter.WithHealthChecks(false);

            services.AddMetrics(Configuration.GetSection("AppMetrics")).
            AddAsciiHealthSerialization().
            AddInfluxDBLineProtocolMetricsSerialization().
            AddInfluxDBLineProtocolMetricsTextSerialization().
            AddReporting(
                factory =>
            {
                factory.AddInfluxDb(
                    new InfluxDBReporterSettings
                {
                    InfluxDbSettings = new InfluxDBSettings(InfluxDbDatabase, InfluxDbUri)
                },
                    reportFilter);
            }).
            AddHealthChecks(
                factory =>
            {
                factory.RegisterPingHealthCheck("google ping", "google.com", TimeSpan.FromSeconds(10));
                factory.RegisterHttpGetHealthCheck("github", new Uri("https://github.com/"), TimeSpan.FromSeconds(10));
            }).
            AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics"));
        }
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTestStuff();
            services.AddLogging().AddRouting(options => { options.LowercaseUrls = true; });

            services.AddMvc(options => options.AddMetricsResourceFilter());

            var reportFilter = new DefaultMetricsFilter();

            reportFilter.WithHealthChecks(false);

            services.AddMetrics(Configuration.GetSection("AppMetrics")).
            AddJsonHealthSerialization().
            // AddJsonMetricsTextSerialization().
            AddElasticsearchMetricsTextSerialization(ElasticSearchIndex).
            AddElasticsearchMetricsSerialization(ElasticSearchIndex).
            AddReporting(
                factory =>
            {
                factory.AddElasticSearch(
                    new ElasticSearchReporterSettings
                {
                    ElasticSearchSettings = new ElasticSearchSettings(ElasticSearchUri, ElasticSearchIndex)
                },
                    reportFilter);
            }).
            AddHealthChecks(
                factory =>
            {
                factory.RegisterPingHealthCheck("google ping", "google.com", TimeSpan.FromSeconds(10));
                factory.RegisterHttpGetHealthCheck("github", new Uri("https://github.com/"), TimeSpan.FromSeconds(10));
            }).
            AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics"));
        }
Exemplo n.º 4
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTestStuff();
            services.AddLogging().AddRouting(options => { options.LowercaseUrls = true; });

            services.AddMvc(options => options.AddMetricsResourceFilter());

            var reportFilter = new DefaultMetricsFilter();

            reportFilter.WithHealthChecks(false);

            services.AddMetrics(Configuration.GetSection("AppMetrics"),
                                options =>
            {
                options.WithGlobalTags(
                    (globalTags, info) =>
                {
                    globalTags.Add("app", info.EntryAssemblyName);
                });
            }).
            AddJsonSerialization().
            AddReporting(
                factory =>
            {
                factory.AddInfluxDb(
                    new InfluxDBReporterSettings
                {
                    HttpPolicy = new HttpPolicy
                    {
                        FailuresBeforeBackoff = 3,
                        BackoffPeriod         = TimeSpan.FromSeconds(30),
                        Timeout = TimeSpan.FromSeconds(10)
                    },
                    InfluxDbSettings = new InfluxDBSettings(InfluxDbDatabase, InfluxDbUri),
                    ReportInterval   = TimeSpan.FromSeconds(5)
                }, reportFilter);
            }).
            AddHealthChecks(
                factory =>
            {
                factory.RegisterPingHealthCheck("google ping", "google.com", TimeSpan.FromSeconds(10));
                factory.RegisterHttpGetHealthCheck("github", new Uri("https://github.com/"), TimeSpan.FromSeconds(10));
            }).
            AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics"));
        }
Exemplo n.º 5
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTestStuff();
            services.AddLogging().AddRouting(options => { options.LowercaseUrls = true; });

            services.AddMvc(options => options.AddMetricsResourceFilter());

            var reportFilter = new DefaultMetricsFilter();

            reportFilter.WithHealthChecks(false);

            services.AddMetrics(Configuration.GetSection("AppMetrics")).
            AddGraphiteMetricsTextSerialization().
            AddGraphiteMetricsSerialization().
            AddAsciiEnvironmentInfoSerialization().
            AddAsciiHealthSerialization().
            AddReporting(
                factory =>
            {
                factory.AddGraphite(
                    new GraphiteReporterSettings
                {
                    HttpPolicy = new HttpPolicy
                    {
                        FailuresBeforeBackoff = 3,
                        BackoffPeriod         = TimeSpan.FromSeconds(30),
                        Timeout = TimeSpan.FromSeconds(10)
                    },
                    GraphiteSettings = new GraphiteSettings(new Uri("net.tcp://localhost:32771")),
                    // GraphiteSettings = new GraphiteSettings(new Uri("net.udp://localhost:32771")),
                    ReportInterval = TimeSpan.FromSeconds(5)
                });
            }).
            AddHealthChecks(
                factory =>
            {
                factory.RegisterPingHealthCheck("google ping", "google.com", TimeSpan.FromSeconds(10));
                factory.RegisterHttpGetHealthCheck("github", new Uri("https://github.com/"), TimeSpan.FromSeconds(10));
            }).
            AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics"));
        }
Exemplo n.º 6
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTestStuff();
            services.AddLogging().AddRouting(options => { options.LowercaseUrls = true; });

            services.AddMvc(options => options.AddMetricsResourceFilter());

            var reportFilter = new DefaultMetricsFilter();

            reportFilter.WithHealthChecks(false);

            services.AddMetrics(
                Configuration.GetSection("AppMetrics"),
                options =>
            {
                options.WithGlobalTags(
                    (globalTags, info) =>
                {
                    globalTags.Add("app", info.EntryAssemblyName);
                    globalTags.Add("server", info.MachineName);
                    globalTags.Add("env", Env.IsStaging() ? "stage" : Env.IsProduction() ? "prod" : "dev");
                    globalTags.Add("version", info.EntryAssemblyVersion);
                });
            }).
            AddJsonSerialization().
            AddReporting(
                factory =>
            {
                if (ReportTypes.Any(r => r == ReportType.InfluxDB))
                {
                    factory.AddInfluxDb(
                        new InfluxDBReporterSettings
                    {
                        HttpPolicy = new HttpPolicy
                        {
                            FailuresBeforeBackoff = 3,
                            BackoffPeriod         = TimeSpan.FromSeconds(30),
                            Timeout = TimeSpan.FromSeconds(10)
                        },
                        InfluxDbSettings = new InfluxDBSettings(InfluxDbDatabase, InfluxDbUri),
                        ReportInterval   = TimeSpan.FromSeconds(5)
                    },
                        reportFilter);
                }

                if (ReportTypes.Any(r => r == ReportType.ElasticSearch))
                {
                    factory.AddElasticSearch(
                        new ElasticSearchReporterSettings
                    {
                        HttpPolicy = new Extensions.Reporting.ElasticSearch.HttpPolicy
                        {
                            FailuresBeforeBackoff = 3,
                            BackoffPeriod         = TimeSpan.FromSeconds(30),
                            Timeout = TimeSpan.FromSeconds(10)
                        },
                        ElasticSearchSettings = new ElasticSearchSettings(ElasticSearchUri, ElasticSearchIndex),
                        ReportInterval        = TimeSpan.FromSeconds(5)
                    },
                        reportFilter);
                }
            }).
            AddHealthChecks(
                factory =>
            {
                factory.RegisterPingHealthCheck("google ping", "google.com", TimeSpan.FromSeconds(10));
                factory.RegisterHttpGetHealthCheck("github", new Uri("https://github.com/"), TimeSpan.FromSeconds(10));
            }).
            AddMetricsMiddleware();
        }
Exemplo n.º 7
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTestStuff();
            services.AddLogging().AddRouting(options => { options.LowercaseUrls = true; });

            services.AddMvc(options => options.AddMetricsResourceFilter());

            var reportFilter = new DefaultMetricsFilter();

            reportFilter.WithHealthChecks(false);

            services.AddMetrics(Configuration.GetSection("AppMetrics")).
            // AddJsonMetricsSerialization().
            // AddElasticsearchMetricsSerialization(ElasticSearchIndex).
            AddJsonMetricsSerialization().
            AddAsciiHealthSerialization().
            AddAsciiMetricsTextSerialization().
            // AddPrometheusPlainTextSerialization().
            // AddInfluxDBLineProtocolMetricsTextSerialization().
            // AddAsciiEnvironmentInfoSerialization().
            AddJsonEnvironmentInfoSerialization().
            AddReporting(
                factory =>
            {
                if (ReportTypes.Any(r => r == ReportType.InfluxDB))
                {
                    factory.AddInfluxDb(
                        new InfluxDBReporterSettings
                    {
                        HttpPolicy = new HttpPolicy
                        {
                            FailuresBeforeBackoff = 3,
                            BackoffPeriod         = TimeSpan.FromSeconds(30),
                            Timeout = TimeSpan.FromSeconds(10)
                        },
                        InfluxDbSettings = new InfluxDBSettings(InfluxDbDatabase, InfluxDbUri),
                        ReportInterval   = TimeSpan.FromSeconds(5)
                    },
                        reportFilter);

                    if (ReportTypes.Any(r => r == ReportType.ElasticSearch))
                    {
                        factory.AddElasticSearch(
                            new ElasticSearchReporterSettings
                        {
                            HttpPolicy = new Extensions.Reporting.ElasticSearch.HttpPolicy
                            {
                                FailuresBeforeBackoff = 3,
                                BackoffPeriod         = TimeSpan.FromSeconds(30),
                                Timeout = TimeSpan.FromSeconds(10)
                            },
                            ElasticSearchSettings = new ElasticSearchSettings(ElasticSearchUri, ElasticSearchIndex),
                            ReportInterval        = TimeSpan.FromSeconds(5)
                        },
                            reportFilter);
                    }

                    //if (ReportTypes.Any(r => r == ReportType.Graphite))
                    //{
                    //    factory.AddGraphite(
                    //        new GraphiteReporterSettings
                    //        {
                    //            HttpPolicy = new Extensions.Reporting.Graphite.HttpPolicy
                    //            {
                    //                FailuresBeforeBackoff = 3,
                    //                BackoffPeriod = TimeSpan.FromSeconds(30),
                    //                Timeout = TimeSpan.FromSeconds(3)
                    //            },
                    //            GraphiteSettings = new GraphiteSettings(GraphiteUri),
                    //            ReportInterval = TimeSpan.FromSeconds(5)
                    //        });
                    //}
                }
            }).
            AddHealthChecks(
                factory =>
            {
                factory.RegisterPingHealthCheck("google ping", "google.com", TimeSpan.FromSeconds(10));

                factory.RegisterHttpGetHealthCheck("github", new Uri("https://github.com/"), TimeSpan.FromSeconds(10));

                factory.RegisterMetricCheck(
                    name: "Database Call Duration",
                    options: SandboxMetricsRegistry.DatabaseTimer,
                    tags: new MetricTags("client_id", "client-9"),
                    passing: value => (message: $"OK. 98th Percentile < 100ms ({value.Histogram.Percentile98}{SandboxMetricsRegistry.DatabaseTimer.DurationUnit.Unit()})", result: value.Histogram.Percentile98 < 100),
                    warning: value => (message: $"WARNING. 98th Percentile > 100ms ({value.Histogram.Percentile98}{SandboxMetricsRegistry.DatabaseTimer.DurationUnit.Unit()})", result: value.Histogram.Percentile98 < 200),
                    failing: value => (message: $"FAILED. 98th Percentile > 200ms ({value.Histogram.Percentile98}{SandboxMetricsRegistry.DatabaseTimer.DurationUnit.Unit()})", result: value.Histogram.Percentile98 > 200));
            }).
            AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics"));
        }