public void TestSummaryDecay() { var baseTime = new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc); DateTimeOffset currentTime = baseTime; var summaryConfig = new SummaryConfiguration("test_summary", "helpless", Array.Empty <string>(), false, new List <QuantileEpsilonPair> { new QuantileEpsilonPair(0.1d, 0.001d) }, TimeSpan.FromSeconds(100), 10); var child = new Summary(summaryConfig, Array.Empty <string>(), () => currentTime); var values = new double[summaryConfig.Objectives.Count]; for (int i = 1; i <= 1000; i++) { currentTime = baseTime.AddSeconds(i); child.Observe(i, null); if (i % 10 == 0) { child.ForkState(out var _, out var _, values); double got = values[0]; double want = Math.Max((double)i / 10, (double)i - 90); Assert.True(Math.Abs(got - want) <= 1, $"{i}. got {got} want {want}"); } } currentTime = baseTime.AddSeconds(1000).AddSeconds(100); // Wait for MaxAge without observations and make sure quantiles are NaN. child.ForkState(out _, out _, values); Assert.True(double.IsNaN(values[0])); }
public Summary CreateSummary(string name, string help, string[] labelNames, IList <QuantileEpsilonPair> objectives, TimeSpan?maxAge, int?ageBuckets, int?bufCap) { var config = new SummaryConfiguration { LabelNames = labelNames }; if (objectives != null) { config.Objectives = objectives.ToArray(); } if (maxAge != null) { config.MaxAge = maxAge.Value; } if (ageBuckets != null) { config.AgeBuckets = ageBuckets.Value; } if (bufCap != null) { config.BufferSize = bufCap.Value; } return(CreateSummary(name, help, config)); }
public Summary CreateSummary(string name, string help, SummaryConfiguration configuration) { configuration = configuration ?? SummaryConfiguration.Default; var metric = new Summary(name, help, configuration.LabelNames, configuration.SuppressInitialValue, configuration.Objectives, configuration.MaxAge, configuration.AgeBuckets, configuration.BufferSize); return((Summary)_registry.GetOrAdd(metric)); }
private static Summary GetRequestDurationSummary() { var config = new SummaryConfiguration { LabelNames = new[] { "method" } }; return(Metrics.CreateSummary("personal_data_request_duration", "Average request duration", config)); }
protected virtual ICollector <IObserver> CreateHttpRequestDurationSummary() { var configuration = new SummaryConfiguration { SuppressInitialValue = true, LabelNames = DefaultRequestDurationLabels, Objectives = new[] { new QuantileEpsilonPair(0.5, 0.05), new QuantileEpsilonPair(0.9, 0.05), new QuantileEpsilonPair(0.95, 0.01), new QuantileEpsilonPair(0.99, 0.005), } }; _options.ConfigureRequestDurationSummary?.Invoke(configuration); if (configuration.LabelNames != DefaultRequestDurationLabels) { throw new ArgumentException("The requests in progress summary configuration is missing the required default labels"); } return(_metrics.CreateSummary("http_server_request_duration_seconds", "The duration in seconds that HTTP requests take to process", configuration)); }
private Summary CreateSummary() { var config = new SummaryConfiguration("test", string.Empty, Array.Empty <string>(), false); return(new Summary(config, Array.Empty <string>())); }
/// <summary> /// Summaries track the trends in events over time (10 minutes by default). /// </summary> public static Summary CreateSummary(string name, string help, SummaryConfiguration configuration = null) => _defaultFactory.CreateSummary(name, help, configuration);
public Summary GetOrdAddSummary(string name, string description, SummaryConfiguration config = null) { return(Summaries.GetOrAdd(name, Prometheus.Metrics.CreateSummary(name, description, config))); }
/// <inheritdoc/> public Summary Summary(string name, string help, SummaryConfiguration configuration = null) { return(_innerMetricFactory.CreateSummary(name, help, configuration)); }