Esempio n. 1
0
        /// <summary>
        /// If the user as explictity set a formatter us this as the default formatter to output metrics.
        /// </summary>
        /// <param name="reporter">The reporter to set the user configured formatter</param>
        private void UseUserConfiguredFormatter(IReportMetrics reporter)
        {
            var formatter = _formatters.FirstOrDefault();

            if (formatter != null)
            {
                reporter.Formatter = formatter;
            }
        }
Esempio n. 2
0
        private static void EnsureRequiredProperties(IReportMetrics reporter)
        {
            reporter.FlushInterval = reporter.FlushInterval <= TimeSpan.Zero
                ? AppMetricsConstants.Reporting.DefaultFlushInterval
                : reporter.FlushInterval;

            reporter.Filter = reporter.Filter == default(IFilterMetrics)
                ? NullMetricsFilter
                : reporter.Filter;
        }
Esempio n. 3
0
        public static void ReportRan(this ILog logger, IReportMetrics reportMetricsReporter, long startTimestamp)
        {
            if (startTimestamp == 0)
            {
                return;
            }

            var currentTimestamp = Stopwatch.GetTimestamp();
            var elapsed          = new TimeSpan((long)(TimestampToTicks * (currentTimestamp - startTimestamp)));

            logger.Info("Report {ReportType} ran in {ElapsedMilliseconds}ms", reportMetricsReporter.GetType().FullName, elapsed.Milliseconds);
        }
Esempio n. 4
0
        /// <inheritdoc />
        public IMetricsBuilder Using(IReportMetrics reporter)
        {
            if (reporter == null)
            {
                throw new ArgumentNullException(nameof(reporter));
            }

            EnsureRequiredProperties(reporter);

            _reporters(reporter);

            return(Builder);
        }
Esempio n. 5
0
        public MackerelMetricsReporter(MetricsReportingMackerelOptions options)
        {
            this.Options = options;

            var httpOptions = Options.HttpOptions;

            // https://mackerel.io/ja/api-docs/entry/host-metrics#post
            httpOptions.HttpSettings.RequestUri = new Uri(Options.ApiBase + "/tsdb");
            httpOptions.MetricsOutputFormatter  = new HostMetricsJsonOutputFormatter(Options.HostId);
            httpOptions.InnerHttpMessageHandler = new MackerelApiMessageHandler(Options.ApiKey);

            _httpReporter = new HttpMetricsReporter(httpOptions);
        }
Esempio n. 6
0
 public static void ReportRunning(this ILog logger, IReportMetrics reportMetrics)
 {
     logger.Trace($"Running {reportMetrics.GetType()}");
 }
Esempio n. 7
0
 public static void ReportFailed(this ILog logger, IReportMetrics reporter)
 {
     logger.Error($"{reporter.GetType()} failed during execution");
 }
Esempio n. 8
0
        private async Task FlushMetrics(IMetrics metrics, CancellationToken cancellationToken, IReportMetrics reporter)
        {
            try
            {
                Logger.ReportRunning(reporter);

                var result = await reporter.FlushAsync(metrics.Snapshot.Get(reporter.Filter), cancellationToken);

                if (result)
                {
                    metrics.Measure.Counter.Increment(_successCounter, reporter.GetType().FullName);
                }
                else
                {
                    metrics.Measure.Counter.Increment(_failedCounter, reporter.GetType().FullName);
                    Logger.ReportFailed(reporter);
                }
            }
            catch (Exception ex)
            {
                metrics.Measure.Counter.Increment(_failedCounter, reporter.GetType().FullName);
                Logger.ReportFailed(reporter, ex);
            }
        }