/// <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; } }
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; }
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); }
/// <inheritdoc /> public IMetricsBuilder Using(IReportMetrics reporter) { if (reporter == null) { throw new ArgumentNullException(nameof(reporter)); } EnsureRequiredProperties(reporter); _reporters(reporter); return(Builder); }
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); }
public static void ReportRunning(this ILog logger, IReportMetrics reportMetrics) { logger.Trace($"Running {reportMetrics.GetType()}"); }
public static void ReportFailed(this ILog logger, IReportMetrics reporter) { logger.Error($"{reporter.GetType()} failed during execution"); }
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); } }