コード例 #1
0
        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"));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: Metrics.cs プロジェクト: unitysir/DotNetWorkQueue
        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);
            }
        }
コード例 #4
0
        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;
        }