public ConsoleExecuteResult EnableMetrics() { if (Metrics != null) { return(new ConsoleExecuteResult("Metrics already enabled")); } _metricsRoot = new App.Metrics.MetricsBuilder() .Configuration.Configure( options => { options.DefaultContextLabel = "ExampleApp"; options.Enabled = true; options.ReportingEnabled = true; }) .Report.ToConsole( options => { options.FlushInterval = TimeSpan.FromSeconds(5); }) .Build(); Metrics = new DotNetWorkQueue.AppMetrics.Metrics(_metricsRoot); return(new ConsoleExecuteResult($"Metrics enabled")); }
public void GetMetrics() { var metrics = new DotNetWorkQueue.AppMetrics.Metrics("test"); var data = metrics.GetCurrentMetrics(); Assert.NotNull(data); var metrics2 = new DotNetWorkQueue.AppMetrics.Metrics("test2"); var data2 = metrics2.GetCurrentMetrics(); Assert.NotNull(data2); }
public void Create(string name, string name2, string name3) { using (var metric = new DotNetWorkQueue.AppMetrics.Metrics(name)) { metric.Gauge(name, () => 1, Units.Bytes); Assert.NotNull(metric.Meter(name, Units.Bytes, TimeUnits.Seconds)); Assert.NotNull(metric.Meter(name2, name2, TimeUnits.Seconds)); Assert.NotNull(metric.Counter(name, Units.Bytes)); Assert.NotNull(metric.Counter(name2, name2)); Assert.NotNull(metric.Histogram(name, Units.Bytes, SamplingTypes.FavorRecent)); Assert.NotNull(metric.Timer(name, Units.Bytes, SamplingTypes.FavorRecent, TimeUnits.Seconds, TimeUnits.Seconds)); var context = metric.Context(name3); Assert.NotNull(context); metric.ShutdownContext(name3); Assert.NotNull(metric.CollectedMetrics); } }
private static void AddMetrics(IContainer container, string appName) { if (_metrics != null) { container.RegisterNonScopedSingleton <IMetrics>(_metrics); return; } var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("metricsettings.json") .Build(); var influxOptions = new MetricsReportingInfluxDbOptions(); configuration.GetSection(nameof(MetricsReportingInfluxDbOptions)).Bind(influxOptions); var metricsRoot = new MetricsBuilder() .Configuration.ReadFrom(configuration) .Configuration.Configure( options => { options.AddServerTag(); options.AddAppTag(appName); }) .Report.ToInfluxDb(influxOptions) .Build(); var metrics = new DotNetWorkQueue.AppMetrics.Metrics(metricsRoot); container.RegisterNonScopedSingleton <IMetrics>(metrics); var scheduler = new AppMetricsTaskScheduler( TimeSpan.FromSeconds(3), async() => { await Task.WhenAll(metricsRoot.ReportRunner.RunAllAsync()); }); scheduler.Start(); _metricScheduler = scheduler; _metrics = metrics; }