public MetricsReportingFixture() { var healthFactoryLogger = _loggerFactory.CreateLogger <HealthCheckFactory>(); var options = new AppMetricsOptions(); var clock = new TestClock(); IMetricContextRegistry NewContextRegistry(string name) => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry(_loggerFactory, options, clock, new EnvironmentInfoProvider(), NewContextRegistry); var healthCheckFactory = new HealthCheckFactory(healthFactoryLogger); var metricBuilderFactory = new DefaultMetricsBuilderFactory(); var filter = new DefaultMetricsFilter(); var healthManager = new DefaultHealthProvider(new Lazy <IMetrics>(() => Metrics), _loggerFactory.CreateLogger <DefaultHealthProvider>(), healthCheckFactory); var dataManager = new DefaultMetricValuesProvider( filter, registry); var metricsManagerFactory = new DefaultMeasureMetricsProvider(registry, metricBuilderFactory, clock); var metricsManagerAdvancedFactory = new DefaultMetricsProvider(registry, metricBuilderFactory, clock); var metricsManager = new DefaultMetricsManager(registry, _loggerFactory.CreateLogger <DefaultMetricsManager>()); Metrics = new DefaultMetrics( clock, filter, metricsManagerFactory, metricBuilderFactory, metricsManagerAdvancedFactory, dataManager, metricsManager, healthManager); RecordSomeMetrics(); }
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")); }
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 .AddLogging() .AddRouting(options => { options.LowercaseUrls = true; }); services.AddMvc(options => options.AddMetricsResourceFilter()); var filter = new DefaultMetricsFilter(); filter.WhereContext(c => c == MetricsRegistry.Context); services .AddMetrics() .AddGlobalFilter(filter) .AddJsonSerialization() .AddReporting( factory => { factory.AddInfluxDb( new InfluxDBReporterSettings { InfluxDbSettings = new InfluxDBSettings("appmetricsreservoirs", InfluxDbUri), ReportInterval = TimeSpan.FromSeconds(5) }); }) .AddMetricsMiddleware(options => options.HealthEndpointEnabled = false); }
public HealthCheckRegistryTests() { _metircsSetup = healthCheckFactory => { var clock = new TestClock(); var options = new AppMetricsOptions(); Func <string, IMetricContextRegistry> newContextRegistry = name => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry( LoggerFactory, options, clock, new EnvironmentInfoProvider(), newContextRegistry); var metricBuilderFactory = new DefaultMetricsBuilderFactory(); var filter = new DefaultMetricsFilter(); var healthManager = new DefaultHealthProvider(LoggerFactory.CreateLogger <DefaultHealthProvider>(), healthCheckFactory); var dataManager = new DefaultMetricValuesProvider( filter, registry); var metricsManagerFactory = new DefaultMeasureMetricsProvider(registry, metricBuilderFactory, clock); var metricsManagerAdvancedFactory = new DefaultMetricsProvider(registry, metricBuilderFactory, clock); var metricsManager = new DefaultMetricsManager(registry, LoggerFactory.CreateLogger <DefaultMetricsManager>()); return(new DefaultMetrics( clock, filter, metricsManagerFactory, metricBuilderFactory, metricsManagerAdvancedFactory, dataManager, metricsManager, healthManager)); }; }
public async Task can_pack_metrics() { // Arrange var token = CancellationToken.None; var payloadBuilder = new TestPayloadBuilder(); var reporter = new TestReporter(payloadBuilder); var filter = new DefaultMetricsFilter().WithEnvironmentInfo(false); // Act await _fixture.ReportGenerator.GenerateAsync(reporter, _fixture.Metrics(), filter, token); var payload = payloadBuilder.PayloadFormatted(); // Assert payload.Should(). Be( "application__test_counter tag1=value mtype=counter unit=req value=1i" + Environment.NewLine + "application__test_gauge mtype=gauge unit=none value=8" + Environment.NewLine + "application__test_histogram mtype=histogram unit=req samples=1i last=5 count.hist=1i sum=5 min=5 max=5 mean=5 median=5 stddev=0 p999=5 p99=5 p98=5 p95=5 p75=5" + Environment.NewLine + "application__test_meter tag2=value mtype=meter unit=none unit_rate=min count.meter=1i rate1m=0 rate5m=0 rate15m=0 rate.mean=3000" + Environment.NewLine + "application__test_timer mtype=timer unit=req unit_dur=ms unit_rate=min count.meter=1i rate1m=0 rate5m=0 rate15m=0 rate.mean=3000 samples=1i last=10 count.hist=1i sum=10 min=10 max=10 mean=10 median=10 stddev=0 p999=10 p99=10 p98=10 p95=10 p75=10" + Environment.NewLine); }
public MetricsFixture() { var healthFactoryLogger = _loggerFactory.CreateLogger <HealthCheckFactory>(); var clock = new TestClock(); var options = new AppMetricsOptions(); Func <string, IMetricContextRegistry> newContextRegistry = name => new DefaultMetricContextRegistry(name); var registry = new DefaultMetricsRegistry(_loggerFactory, options, clock, new EnvironmentInfoProvider(), newContextRegistry); var healthCheckFactory = new HealthCheckFactory(healthFactoryLogger); var metricBuilderFactory = new DefaultMetricsBuilderFactory(); var filter = new DefaultMetricsFilter(); var dataManager = new DefaultMetricValuesProvider(filter, registry); var healthStatusProvider = new DefaultHealthProvider(_loggerFactory.CreateLogger <DefaultHealthProvider>(), healthCheckFactory); var metricsManagerFactory = new DefaultMeasureMetricsProvider(registry, metricBuilderFactory, clock); var metricsManagerAdvancedFactory = new DefaultMetricsProvider(registry, metricBuilderFactory, clock); var metricsManager = new DefaultMetricsManager(registry, _loggerFactory.CreateLogger <DefaultMetricsManager>()); Metrics = new DefaultMetrics( clock, filter, metricsManagerFactory, metricBuilderFactory, metricsManagerAdvancedFactory, dataManager, metricsManager, healthStatusProvider); }
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")); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services .AddLogging() .AddRouting(options => { options.LowercaseUrls = true; }); services.AddMvc(options => options.AddMetricsResourceFilter()); services .AddMetrics(Configuration.GetSection("AppMetrics")) //.AddGlobalFilter(new DefaultMetricsFilter().WhereMetricTaggedWithKeyValue(new TagKeyValueFilter { { "reporter", "influxdb" } })) .AddJsonSerialization() .AddReporting(factory => { var influxFilter = new DefaultMetricsFilter() //.WhereMetricTaggedWithKeyValue(new TagKeyValueFilter { { "reporter", "influxdb" } }) .WithHealthChecks(true) .WithEnvironmentInfo(true); factory.AddInfluxDb(new InfluxDbReporterSettings { BaseAddress = "http://127.0.0.1:8086", Database = "appmetricsapi", ReportInterval = TimeSpan.FromSeconds(5) }, influxFilter); }) .AddHealthChecks() .AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics")); }
public void ConfigureServices(IServiceCollection services) { services.AddTransient <IDatabase, Database>(); services.AddMvc(options => options.AddMetricsResourceFilter()); services .AddMetrics(Configuration.GetSection("AppMetrics")) .AddJsonSerialization() .AddReporting(factory => { var influxFilter = new DefaultMetricsFilter() .WithHealthChecks(true) .WithEnvironmentInfo(true); factory.AddInfluxDb(new InfluxDbReporterSettings { BaseAddress = new Uri("http://127.0.0.1:8086"), Database = "appmetricsapi", ReportInterval = TimeSpan.FromSeconds(5) }, influxFilter); }) .AddHealthChecks(factory => { //factory.RegisterProcessPrivateMemorySizeHealthCheck("Private Memory Size", 200); //factory.RegisterProcessVirtualMemorySizeHealthCheck("Virtual Memory Size", 200); //factory.RegisterProcessPhysicalMemoryHealthCheck("Working Set", 200); }) .AddMetricsMiddleware(Configuration.GetSection("AspNetMetrics")); }
public async Task can_pack_metrics_with_custom_histogram_keys() { // Arrange var dataKeys = new MetricValueDataKeys( histogram: new Dictionary <HistogramValueDataKeys, string> { { HistogramValueDataKeys.P75, "75th_percentile" } }); var token = CancellationToken.None; var payloadBuilder = new TestPayloadBuilder(); var reporter = new TestReporter( payloadBuilder, dataKeys); var filter = new DefaultMetricsFilter().WithEnvironmentInfo(false); // Act await _reportGenerator.GenerateAsync(reporter, _metrics, filter, token); var payload = payloadBuilder.PayloadFormatted(); // Assert payload.Should(). Be( "application__test_counter tag1=value mtype=counter value=1i" + Environment.NewLine + "application__test_gauge mtype=gauge value=8" + Environment.NewLine + "application__test_histogram mtype=histogram samples=1i last=5 count.hist=1i sum=5 min=5 max=5 mean=5 median=5 stddev=0 p999=5 p99=5 p98=5 p95=5 75th_percentile=5" + Environment.NewLine + "application__test_meter tag2=value mtype=meter count.meter=1i rate1m=0 rate5m=0 rate15m=0 rate.mean=6000" + Environment.NewLine + "application__test_timer mtype=timer count.meter=1i rate1m=0 rate5m=0 rate15m=0 rate.mean=6000 samples=1i last=10 count.hist=1i sum=10 min=10 max=10 mean=10 median=10 stddev=0 p999=10 p99=10 p98=10 p95=10 75th_percentile=10" + Environment.NewLine); }
private static void ConfigureMetrics(IServiceCollection services) { services .AddMetrics(options => { options.ReportingEnabled = true; options.GlobalTags.Add("env", "stage"); }) .AddHealthChecks(factory => { factory.RegisterProcessPrivateMemorySizeHealthCheck("Private Memory Size", 200); factory.RegisterProcessVirtualMemorySizeHealthCheck("Virtual Memory Size", 200); factory.RegisterProcessPhysicalMemoryHealthCheck("Working Set", 200); factory.Register("DatabaseConnected", () => Task.FromResult("Database Connection OK")); factory.Register("DiskSpace", () => { var freeDiskSpace = GetFreeDiskSpace(); return(Task.FromResult(freeDiskSpace <= 512 ? HealthCheckResult.Unhealthy("Not enough disk space: {0}", freeDiskSpace) : HealthCheckResult.Unhealthy("Disk space ok: {0}", freeDiskSpace))); }); }) .AddReporting(factory => { factory.AddConsole(new ConsoleReporterSettings { ReportInterval = TimeSpan.FromSeconds(5), }); factory.AddTextFile(new TextFileReporterSettings { ReportInterval = TimeSpan.FromSeconds(30), FileName = @"C:\metrics\sample.txt" }); var influxFilter = new DefaultMetricsFilter() .WhereMetricTaggedWithKeyValue(new TagKeyValueFilter { { "reporter", "influxdb" } }) .WithHealthChecks(true) .WithEnvironmentInfo(true); factory.AddInfluxDb(new InfluxDBReporterSettings { HttpPolicy = new HttpPolicy { FailuresBeforeBackoff = 3, BackoffPeriod = TimeSpan.FromSeconds(30), Timeout = TimeSpan.FromSeconds(3) }, InfluxDbSettings = new InfluxDBSettings("appmetrics", new Uri("http://127.0.0.1:8086")), ReportInterval = TimeSpan.FromSeconds(5) }, influxFilter); }); }
public async Task <MetricsContextValueSource> ReadContextAsync(string context) { var data = await ReadDataAsync(); var filter = new DefaultMetricsFilter().WhereContext(context); var contextData = data.Filter(filter); return(contextData.Contexts.Single()); }
public MetricsContextValueSource ReadContext(string context) { var data = ReadData(); var filter = new DefaultMetricsFilter().WhereContext(context); var contextData = data.Filter(filter); return(contextData.Contexts.Single()); }
/// <inheritdoc /> public MetricsContextValueSource GetForContext(string context) { var data = Get(); var filter = new DefaultMetricsFilter().WhereContext(context); var contextData = data.Filter(filter); return(contextData.Contexts.FirstOrDefault() ?? MetricsContextValueSource.Empty); }
private static void ConfigureMetrics(IServiceCollection services) { services .AddMetrics(options => { options.ReportingEnabled = true; options.GlobalTags.Add("env", "stage"); }) .AddHealthChecks(factory => { factory.Register("DatabaseConnected", () => Task.FromResult("Database Connection OK")); factory.Register("DiskSpace", () => { var freeDiskSpace = GetFreeDiskSpace(); return(Task.FromResult(freeDiskSpace <= 512 ? HealthCheckResult.Unhealthy("Not enough disk space: {0}", freeDiskSpace) : HealthCheckResult.Unhealthy("Disk space ok: {0}", freeDiskSpace))); }); }) .AddReporting(factory => { var filter = new DefaultMetricsFilter() .WithHealthChecks(true) .WithEnvironmentInfo(true); factory.AddConsole(new ConsoleReporterSettings { ReportInterval = TimeSpan.FromSeconds(5), }, filter); factory.AddTextFile(new TextFileReporterSettings { ReportInterval = TimeSpan.FromSeconds(30), FileName = @"C:\metrics\sample.txt" }); var influxFilter = new DefaultMetricsFilter() //.WhereType(MetricType.Counter) .WhereMetricTaggedWithKeyValue(new TagKeyValueFilter { { "reporter", "influxdb" } }) .WithHealthChecks(true) .WithEnvironmentInfo(true); factory.AddInfluxDb(new InfluxDbReporterSettings { BaseAddress = "http://127.0.0.1:8086", Database = "appmetrics", ReportInterval = TimeSpan.FromSeconds(5) }, influxFilter); }); }
public async Task can_disable_reporting_environment_info() { var metricReporter = new Mock <IMetricReporter>(); metricReporter.Setup(x => x.ReportEnvironment(It.IsAny <EnvironmentInfo>())); var token = CancellationToken.None; var filter = new DefaultMetricsFilter().WithEnvironmentInfo(false); await _reportGenerator.GenerateAsync(metricReporter.Object, _metrics, filter, token); metricReporter.Verify(p => p.ReportEnvironment(It.IsAny <EnvironmentInfo>()), Times.Never); }
public static IServiceCollection ConfigureMetrics(this IServiceCollection services) { var assemblyName = Assembly.GetExecutingAssembly().GetName(); services .AddMetrics(options => { options.ReportingEnabled = true; options.GlobalTags.Add("env", "stage"); }, assemblyName) .AddHealthChecks(factory => { factory.RegisterProcessPrivateMemorySizeHealthCheck("Private Memory Size", 200); factory.RegisterProcessVirtualMemorySizeHealthCheck("Virtual Memory Size", 200); factory.RegisterProcessPhysicalMemoryHealthCheck("Working Set", 200); }) .AddReporting(factory => { factory.AddConsole(new ConsoleReporterSettings { ReportInterval = TimeSpan.FromSeconds(5), }); factory.AddTextFile(new TextFileReporterSettings { ReportInterval = TimeSpan.FromSeconds(30), FileName = $@"C:\metrics\{assemblyName.Name}.txt" }); var influxFilter = new DefaultMetricsFilter() .WhereMetricTaggedWithKeyValue(new TagKeyValueFilter { { "reporter", "influxdb" } }) .WithHealthChecks(true) .WithEnvironmentInfo(true); factory.AddInfluxDb(new InfluxDBReporterSettings { HttpPolicy = new HttpPolicy { FailuresBeforeBackoff = 3, BackoffPeriod = TimeSpan.FromSeconds(10), Timeout = TimeSpan.FromSeconds(3) }, InfluxDbSettings = new InfluxDBSettings("appmetricsnet452", new Uri("http://127.0.0.1:8086")), ReportInterval = TimeSpan.FromSeconds(5) }, influxFilter); }); return(services); }
public static IServiceCollection ConfigureMetrics(this IServiceCollection services) { var assemblyName = Assembly.GetExecutingAssembly().GetName(); services.AddMetrics(p => { p.DefaultContextLabel = "Demo"; p.ReportingEnabled = true; p.GlobalTags.Add("env", "stage"); p.MetricsEnabled = true; }, assemblyName) .AddHealthChecks(factory => { factory.RegisterProcessPrivateMemorySizeHealthCheck("Private Memory Size", 200); factory.RegisterProcessVirtualMemorySizeHealthCheck("Virtual Memory Size", 200); factory.RegisterProcessPhysicalMemoryHealthCheck("Working Set", 200); }) .AddReporting(factory => { factory.AddConsole(new ConsoleReporterSettings { ReportInterval = TimeSpan.FromSeconds(5) }); var influxFilter = new DefaultMetricsFilter() .WhereMetricTaggedWithKeyValue(new TagKeyValueFilter { { "reporter", "influxdb" } }) .WithHealthChecks(true) .WithEnvironmentInfo(true); factory.AddInfluxDb(new InfluxDBReporterSettings { HttpPolicy = new HttpPolicy { FailuresBeforeBackoff = 3, BackoffPeriod = TimeSpan.FromSeconds(10), Timeout = TimeSpan.FromSeconds(3) }, InfluxDbSettings = new InfluxDBSettings(AppSetting.InfluxDB.DatabaseName, new Uri(AppSetting.InfluxDB.Url)), ReportInterval = TimeSpan.FromSeconds(5) }, influxFilter); }) .AddMetricsMiddleware() ; return(services); }
public void can_filter_metrics_by_context() { var filter = new DefaultMetricsFilter().WhereMetricName(name => name == "test_gauge"); var currentData = _metrics.Snapshot.Get(filter); var context = currentData.Contexts.Single(); var gaugeValue = context.Gauges.FirstOrDefault(); gaugeValue.Should().NotBeNull(); Assert.Null(context.Counters.FirstOrDefault()); Assert.Null(context.Meters.FirstOrDefault()); Assert.Null(context.Histograms.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); }
public async Task can_filter_metrics_by_context() { var filter = new DefaultMetricsFilter().WhereMetricName(name => name == "test_gauge"); var currentData = await _metrics.Advanced.Data.ReadDataAsync(filter); var context = currentData.Contexts.Single(); var gaugeValue = context.Gauges.FirstOrDefault(); gaugeValue.Should().NotBeNull(); Assert.Null(context.Counters.FirstOrDefault()); Assert.Null(context.Meters.FirstOrDefault()); Assert.Null(context.Histograms.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); }
public void can_filter_metrics_by_context() { var filter = new DefaultMetricsFilter().WhereContext("test_context1"); var currentData = _metrics.Advanced.Data.ReadData(filter); var context = currentData.Contexts.Single(); var counterValue = context.Counters.Single(); counterValue.Name.Should().Be("test_counter"); counterValue.Value.Count.Should().Be(1); Assert.Null(context.Meters.FirstOrDefault()); Assert.Null(context.Gauges.FirstOrDefault()); Assert.Null(context.Histograms.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); }
public void can_filter_metrics_by_meters() { var filter = new DefaultMetricsFilter().WhereType(MetricType.Meter); var currentData = _metrics.Snapshot.Get(filter); var context = currentData.Contexts.Single(); var meterValue = context.Meters.Single(); meterValue.Name.Should().Be("test_meter"); meterValue.Value.Count.Should().Be(1); Assert.Null(context.Counters.FirstOrDefault()); Assert.Null(context.Gauges.FirstOrDefault()); Assert.Null(context.Histograms.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); }
public void can_filter_metrics_by_tags_keys() { var filter = new DefaultMetricsFilter().WhereMetricTaggedWithKey("tag1", "tag2"); var currentData = _metrics.Snapshot.Get(filter); var context = currentData.Contexts.Single(); var counterValue = context.Counters.Single(); var meterValue = context.Meters.Single(); counterValue.Tags.Keys.Should().Contain("tag1"); meterValue.Tags.Keys.Should().Contain("tag2"); Assert.Null(context.Gauges.FirstOrDefault()); Assert.Null(context.Histograms.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); }
public void can_filter_metrics_by_histograms() { var filter = new DefaultMetricsFilter().WhereType(MetricType.Histogram); var currentData = _metrics.Advanced.Data.ReadData(filter); var context = currentData.Contexts.Single(); var histogramValue = context.Histograms.Single(); histogramValue.Name.Should().Be("test_histogram"); histogramValue.Value.LastValue.Should().Be(5); Assert.Null(context.Counters.FirstOrDefault()); Assert.Null(context.Gauges.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); Assert.Null(context.Meters.FirstOrDefault()); }
public async Task can_filter_metrics_by_meters() { var filter = new DefaultMetricsFilter().WhereType(MetricType.Meter); var currentData = await _metrics.Advanced.Data.ReadDataAsync(filter); var context = currentData.Contexts.Single(); var meterValue = context.Meters.Single(); meterValue.Name.Should().Be("test_meter"); meterValue.Value.Count.Should().Be(1); Assert.Null(context.Counters.FirstOrDefault()); Assert.Null(context.Gauges.FirstOrDefault()); Assert.Null(context.Histograms.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); }
public async Task can_filter_metrics_by_tags_keys() { var filter = new DefaultMetricsFilter().WhereMetricTaggedWithKey("tag1", "tag2"); var currentData = await _metrics.Advanced.Data.ReadDataAsync(filter); var context = currentData.Contexts.Single(); var counterValue = context.Counters.Single(); var meterValue = context.Meters.Single(); counterValue.Tags.Should().ContainKey("tag1"); meterValue.Tags.Should().ContainKey("tag2"); Assert.Null(context.Gauges.FirstOrDefault()); Assert.Null(context.Histograms.FirstOrDefault()); Assert.Null(context.Timers.FirstOrDefault()); }
public async Task can_disable_reporting_health() { var metricReporter = new Mock <IMetricReporter>(); metricReporter.Setup(x => x.StartMetricTypeReport(typeof(HealthStatus))); metricReporter.Setup(x => x.EndMetricTypeReport(typeof(HealthStatus))); metricReporter.Setup(x => x.ReportHealth(It.IsAny <IEnumerable <HealthCheck.Result> >(), It.IsAny <IEnumerable <HealthCheck.Result> >(), It.IsAny <IEnumerable <HealthCheck.Result> >())); var token = CancellationToken.None; var filter = new DefaultMetricsFilter().WithHealthChecks(false); await _reportGenerator.Generate(metricReporter.Object, _metrics, filter, token); metricReporter.Verify(p => p.StartMetricTypeReport(typeof(HealthStatus)), Times.Never); metricReporter.Verify(p => p.EndMetricTypeReport(typeof(HealthStatus)), Times.Never); metricReporter.Verify(p => p.ReportHealth(It.IsAny <IEnumerable <HealthCheck.Result> >(), It.IsAny <IEnumerable <HealthCheck.Result> >(), It.IsAny <IEnumerable <HealthCheck.Result> >()), Times.Never); }
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")); }
public void can_filter_metrics_by_name_starting_with() { var filter = new DefaultMetricsFilter().WhereMetricNameStartsWith("test_"); var currentData = _metrics.Snapshot.Get(filter); var context = currentData.Contexts.Single(); var counterValue = context.Counters.FirstOrDefault(); var gaugeValue = context.Gauges.FirstOrDefault(); var meterValue = context.Meters.FirstOrDefault(); var histogramValue = context.Histograms.FirstOrDefault(); var timerValue = context.Timers.FirstOrDefault(); counterValue.Should().NotBeNull(); gaugeValue.Should().NotBeNull(); meterValue.Should().NotBeNull(); histogramValue.Should().NotBeNull(); timerValue.Should().NotBeNull(); }