private static void Init()
        {
            var cfg = new ConfigurationBuilder()
                      .SetBasePath(AppContext.BaseDirectory)
                      .AddJsonFile("appsettings.json", optional: false)
                      .Build();

            var logFile = ResolveLogFilePath(cfg);

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.Async(x => x.File(logFile))
                         .CreateLogger();
            Logger = Log.Logger.ForContext(typeof(Program));

            var metricsOptions     = cfg.GetSection("metrics").Get <MetricsOptions>();
            var instrumentationKey = ResolveInstrumentationKey(cfg);

            metrics = new MetricsBuilder()
                      .Configuration.Configure(metricsOptions)
                      .Report.ToApplicationInsights(opts =>
            {
                opts.InstrumentationKey      = instrumentationKey;
                opts.ItemsAsCustomDimensions = true;
            })
                      .Build();

            reporter = metrics.ReportRunner;
        }
Пример #2
0
        private static void Init()
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json");

            Configuration = configurationBuilder.Build();

            var metricsConfigSection = Configuration.GetSection(nameof(MetricsOptions));

            Metrics = new MetricsBuilder()
                      .Configuration.Configure(metricsConfigSection.AsEnumerable())
                      .MetricFields.Configure(
                fields =>
            {
                if (FilterMetricFields)
                {
                    fields.Meter.OnlyInclude(MeterFields.Rate1M);
                    fields.Apdex.Exclude();
                    fields.Counter.OnlyInclude(CounterFields.Value);
                    fields.Gauge.Exclude();
                    fields.Histogram.Exclude();
                }
            })
                      // Adds LineProtocolFormatter with default options, can override fields reported to influx using fields => fields...
                      .Report.ToInfluxDb(InfluxDbUri, InfluxDbDatabase, TimeSpan.FromSeconds(5))
                      .Build();

            Reporter = Metrics.ReportRunner;
        }
Пример #3
0
        static void Init()
        {
            var configuration = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json", false)
                                .Build();

            var logFile = configuration.GetValue("logFile", "ApplicationInsightsSandbox.log");

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.Async(x => x.File(logFile))
                         .CreateLogger();

            Logger = Log.Logger.ForContext(typeof(Program));

            // read configuration
            var metricsOptions     = configuration.GetSection("metrics").Get <MetricsOptions>();
            var instrumentationKey = GetAppInsightsInstrumentationKey(configuration);

            metrics = new MetricsBuilder()
                      .Configuration.Configure(metricsOptions)
                      .Report.ToApplicationInsights(instrumentationKey)
                      .Build();

            reporter = metrics.ReportRunner;
        }
Пример #4
0
        private static void Init()
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json");

            Configuration = configurationBuilder.Build();

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.LiterateConsole()
                         .WriteTo.Seq("http://localhost:5341")
                         .CreateLogger();

            var metricsConfigSection = Configuration.GetSection(nameof(MetricsOptions));

            Metrics = new MetricsBuilder()
                      .Configuration.Configure(metricsConfigSection.AsEnumerable())
                      // Adds GraphitePlainTextProtocolFormatter with default options
                      .Report.ToGraphite(GraphiteUrl, TimeSpan.FromSeconds(5), fields =>
            {
                fields.Meter.OnlyInclude(MeterFields.Rate1M);
                fields.Apdex.Exclude();
                fields.Counter.OnlyInclude(CounterFields.Value);
                fields.Gauge.Exclude();
                fields.Histogram.Exclude();
            })
                      .Build();

            Reporter = Metrics.ReportRunner;
        }
Пример #5
0
        /// <inheritdoc />
        public IMetricsRoot Build()
        {
            IMetricsRegistry registry = new NullMetricsRegistry();

            if (_options == null)
            {
                _options = new MetricsOptions();
            }

            if (_options.Enabled)
            {
                registry = new DefaultMetricsRegistry(_options.DefaultContextLabel, _clock, ContextRegistry);
            }

            if (_metricsOutputFormatters.Count == 0)
            {
                _metricsOutputFormatters.Add(new MetricsTextOutputFormatter());
            }

            if (_envFormatters.Count == 0)
            {
                _envFormatters.Add(new EnvInfoTextOutputFormatter());
            }

            var builderFactory = new DefaultMetricsBuilderFactory(_defaultSamplingReservoir);
            var measure        = new DefaultMeasureMetricsProvider(registry, builderFactory, _clock);
            var provider       = new DefaultMetricsProvider(registry, builderFactory, _clock);
            var snapshot       = new DefaultMetricValuesProvider(_metricsFilter, registry);
            var manage         = new DefaultMetricsManager(registry);
            var metrics        = new DefaultMetrics(_clock, _metricsFilter, measure, builderFactory, provider, snapshot, manage);
            var defaultMetricsOutputFormatter = _defaultMetricsOutputFormatter ?? _metricsOutputFormatters.FirstOrDefault();
            var defaultEnvOutputFormatter     = _defauEnvOutputFormatter ?? _envFormatters.FirstOrDefault();

            if (CanReport())
            {
                _metricsReportRunner = new DefaultMetricsReportRunner(metrics, _reporters);
            }

            return(new MetricsRoot(
                       metrics,
                       _options,
                       _metricsOutputFormatters,
                       _envFormatters,
                       defaultMetricsOutputFormatter,
                       defaultEnvOutputFormatter,
                       _environmentInfoProvider,
                       _reporters,
                       _metricsReportRunner));

            IMetricContextRegistry ContextRegistry(string context) =>
            new DefaultMetricContextRegistry(context, new GlobalMetricTags(_options.GlobalTags));
        }
Пример #6
0
        private static void Init()
        {
            var configurationBuilder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");

            Configuration = configurationBuilder.Build();

            Log.Logger = new LoggerConfiguration().MinimumLevel.Verbose().WriteTo.LiterateConsole().CreateLogger();

            var metricsConfigSection = Configuration.GetSection(nameof(MetricsOptions));

            Metrics = new MetricsBuilder().Configuration.Configure(metricsConfigSection.AsEnumerable()).Report.ToStatsDUdp(
                opt =>
            {
                opt.SocketSettings.Address = "localhost";
                opt.SocketSettings.Port    = 8125;
            }).Build();

            Reporter = Metrics.ReportRunner;
        }
Пример #7
0
 public MetricsRoot(
     IMetrics metrics,
     MetricsOptions options,
     MetricsFormatterCollection metricsOutputFormatters,
     EnvFormatterCollection envOutputFormatters,
     IMetricsOutputFormatter defaultMetricsOutputFormatter,
     IEnvOutputFormatter defaultEnvOutputFormatter,
     EnvironmentInfoProvider environmentInfoProvider,
     MetricsReporterCollection reporterCollection,
     IRunMetricsReports reporter)
 {
     Options                       = options ?? throw new ArgumentNullException(nameof(options));
     _metrics                      = metrics ?? throw new ArgumentNullException(nameof(metrics));
     ReportRunner                  = reporter ?? throw new ArgumentNullException(nameof(reporter));
     _environmentInfoProvider      = new EnvironmentInfoProvider();
     Reporters                     = reporterCollection ?? new MetricsReporterCollection();
     OutputMetricsFormatters       = metricsOutputFormatters ?? new MetricsFormatterCollection();
     OutputEnvFormatters           = envOutputFormatters ?? new EnvFormatterCollection();
     DefaultOutputMetricsFormatter = defaultMetricsOutputFormatter;
     DefaultOutputEnvFormatter     = defaultEnvOutputFormatter;
     _environmentInfoProvider      = environmentInfoProvider;
 }
Пример #8
0
        private static void Init()
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json");

            Configuration = configurationBuilder.Build();

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.LiterateConsole(LogEventLevel.Information)
                         .WriteTo.Seq("http://localhost:5341", LogEventLevel.Verbose)
                         .CreateLogger();

            var metricsConfigSection = Configuration.GetSection(nameof(MetricsOptions));

            Metrics = AppMetrics.CreateDefaultBuilder()
                      .Configuration.Configure(metricsConfigSection.AsEnumerable())
                      .Report.Using <SimpleConsoleMetricsReporter>(TimeSpan.FromSeconds(2))
                      .Build();

            Reporter = Metrics.ReportRunner;
        }
Пример #9
0
        private static void Init()
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json");

            Configuration = configurationBuilder.Build();

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.LiterateConsole()
                         .WriteTo.Seq("http://localhost:5341")
                         .CreateLogger();

            var metricsConfigSection = Configuration.GetSection(nameof(MetricsOptions));

            Metrics = new MetricsBuilder()
                      .Configuration.Configure(metricsConfigSection.AsEnumerable())
                      // Adds GrafanaCloud Hosted Metrics with default options
                      .Report.ToHostedMetrics(GrafanaCloudHostedMetricsUri, GrafanaCloudHostedMetricsApiKey, TimeSpan.FromSeconds(5))
                      .Build();

            Reporter = Metrics.ReportRunner;
        }
Пример #10
0
        private static void Init()
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json");

            Configuration = configurationBuilder.Build();

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.LiterateConsole()
                         //.WriteTo.Seq("http://localhost:5341")
                         .CreateLogger();

            var metricsConfigSection = Configuration.GetSection(nameof(MetricsOptions));

            Metrics = new MetricsBuilder()
                      .Configuration.Configure(metricsConfigSection.AsEnumerable())
                      .MetricFields.Configure(
                fields =>
            {
                if (FilterMetricFields)
                {
                    fields.Meter.OnlyInclude(MeterFields.Rate1M);
                    fields.Apdex.Exclude();
                    fields.Counter.OnlyInclude(CounterFields.Value);
                    fields.Gauge.Exclude();
                    fields.Histogram.Exclude();
                }
            })
                      // Adds LineProtocolFormatter with default options, can override fields reported to influx using fields => fields...
                      .Report.ToInfluxDb2(InfluxDbUri, InfluxDbOrganization, InfluxDbBucket, InfluxDbToken, TimeSpan.FromSeconds(5))
                      .Build();

            Reporter = Metrics.ReportRunner;
        }