/// <summary>
        /// Initializes a new instance of the <see cref="SerilogMetricSnapshotWriter"/> class.
        /// </summary>
        /// <param name="options">The Serilog metrics reporter options.</param>
        public SerilogMetricSnapshotWriter(SerilogMetricsReporterOptions options)
        {
            _logEventLevel    = options.LogEventLevel;
            _messageTemplates = options.MessageTemplates;

            MetricNameMapping = new GeneratedMetricNameMapping();
        }
        public void Histogram_can_use_custom_data_keys_and_should_provide_corresponding_values()
        {
            // Arrange
            var value    = new HistogramValue(1, 1, 2, "3", 4, "5", 6, 7, "8", 9, 10, 11, 12, 13, 14, 15, 16);
            var data     = new Dictionary <string, object>();
            var dataKeys = new GeneratedMetricNameMapping(
                histogram: new Dictionary <HistogramValueDataKeys, string>
            {
                { HistogramValueDataKeys.UserLastValue, "userLastValue" },
                { HistogramValueDataKeys.UserMinValue, "userMinValue" },
                { HistogramValueDataKeys.UserMaxValue, "userMaxValue" },
                { HistogramValueDataKeys.P75, "75th_percentile" }
            });

            // Act
            value.AddHistogramValues(data, dataKeys.Histogram);

            // Assert
            data.ContainsKey(DataKeys.Histogram[HistogramValueDataKeys.UserLastValue]).Should().BeFalse();
            data["userLastValue"].Should().Be("3");
            data.ContainsKey(DataKeys.Histogram[HistogramValueDataKeys.UserMaxValue]).Should().BeFalse();
            data["userMaxValue"].Should().Be("5");
            data.ContainsKey(DataKeys.Histogram[HistogramValueDataKeys.UserMinValue]).Should().BeFalse();
            data["userMinValue"].Should().Be("8");
            data.ContainsKey(DataKeys.Histogram[HistogramValueDataKeys.P75]).Should().BeFalse();
            data["75th_percentile"].Should().Be(11.0);
        }
 public MetricsTextOptions()
 {
     Padding   = MetricsTextFormatterConstants.OutputFormatting.Padding;
     Separator = MetricsTextFormatterConstants.OutputFormatting.Separator;
     Encoding  = Encoding.ASCII;
     DataKeys  = new GeneratedMetricNameMapping();
 }
 public MetricsGraphitePlainTextProtocolOptions()
 {
     MetricNameMapping = new GeneratedMetricNameMapping(
         GraphiteFormatterConstants.GraphiteDefaults.CustomHistogramDataKeys,
         GraphiteFormatterConstants.GraphiteDefaults.CustomMeterDataKeys,
         GraphiteFormatterConstants.GraphiteDefaults.CustomApdexKeys,
         GraphiteFormatterConstants.GraphiteDefaults.CustomCounterDataKeys);
     MetricPointTextWriter = GraphiteFormatterConstants.GraphiteDefaults.MetricPointTextWriter;
 }
Example #5
0
        public MetricSnapshotHostedMetricsJsonWriter(
            TextWriter textWriter,
            Func <IHostedMetricsPointTextWriter> metricPointTextWriter = null,
            GeneratedMetricNameMapping dataKeys = null)
        {
            _textWriter = textWriter ?? throw new ArgumentNullException(nameof(textWriter));
            _points     = new HostedMetricsPoints();

            _metricPointTextWriter = metricPointTextWriter != null?metricPointTextWriter() : HostedMetricsFormatterConstants.GraphiteDefaults.MetricPointTextWriter();

            MetricNameMapping = dataKeys ?? new GeneratedMetricNameMapping();
        }
        public MetricSnapshotGraphitePlainTextProtocolWriter(
            TextWriter textWriter,
            IGraphitePointTextWriter metricNameFormatter = null,
            GeneratedMetricNameMapping dataKeys          = null)
        {
            _textWriter = textWriter ?? throw new ArgumentNullException(nameof(textWriter));
            _points     = new GraphitePoints();

            _metricNameFormatter = metricNameFormatter ?? new DefaultGraphitePointTextWriter();

            MetricNameMapping = dataKeys ?? new GeneratedMetricNameMapping();
        }
        public void Apdex_can_use_custom_data_keys_and_should_provide_corresponding_values()
        {
            // Arrange
            var value    = new ApdexValue(1, 2, 3, 4, 5);
            var data     = new Dictionary <string, object>();
            var dataKeys = new GeneratedMetricNameMapping(
                apdex: new Dictionary <ApdexValueDataKeys, string>
            {
                { ApdexValueDataKeys.Samples, "size_of_sample" }
            });

            // Act
            value.AddApdexValues(data, dataKeys.Apdex);

            // Assert
            data.ContainsKey(DataKeys.Apdex[ApdexValueDataKeys.Samples]).Should().BeFalse();
            data["size_of_sample"].Should().Be(5);
        }
Example #8
0
        public MetricSnapshotAliTSDBLineProtocolWriter(
            TextWriter textWriter,
            Func <string, string, string> metricNameFormatter = null,
            GeneratedMetricNameMapping dataKeys = null)
        {
            _textWriter = textWriter ?? throw new ArgumentNullException(nameof(textWriter));
            _points     = new LineProtocolPoints();
            if (metricNameFormatter == null)
            {
                _metricNameFormatter = (metricContext, metricName) => string.IsNullOrWhiteSpace(metricContext)
                    ? metricName
                    : $"[{metricContext}] {metricName}";
            }
            else
            {
                _metricNameFormatter = metricNameFormatter;
            }

            MetricNameMapping = dataKeys ?? new GeneratedMetricNameMapping();
        }
Example #9
0
        public void Meter_can_use_custom_data_keys_and_should_provide_corresponding_values()
        {
            // Arrange
            var value    = new MeterValue(1, 2, 3, 4, 5, TimeUnit.Seconds);
            var dataKeys = new GeneratedMetricNameMapping(
                meter: new Dictionary <MeterValueDataKeys, string>
            {
                { MeterValueDataKeys.Rate1M, "1_min_rate" },
                { MeterValueDataKeys.RateMean, "mean_rate" }
            });

            // Act
            value.AddMeterValues(out IDictionary <string, object> data, dataKeys.Meter);

            // Assert
            data.ContainsKey(DataKeys.Meter[MeterValueDataKeys.RateMean]).Should().BeFalse();
            data["mean_rate"].Should().Be(2.0);
            data.ContainsKey(DataKeys.Meter[MeterValueDataKeys.Rate1M]).Should().BeFalse();
            data["1_min_rate"].Should().Be(3.0);
        }
        public MetricSnapshotTextWriter(
            TextWriter textWriter,
            string separator = MetricsTextFormatterConstants.OutputFormatting.Separator,
            int padding      = MetricsTextFormatterConstants.OutputFormatting.Padding,
            Func <string, string, string> metricNameFormatter = null,
            GeneratedMetricNameMapping dataKeys = null)
        {
            _textWriter = textWriter ?? throw new ArgumentNullException(nameof(textWriter));
            _separator  = separator;
            _padding    = padding;
            _textPoints = new MetricsTextPoints();
            if (metricNameFormatter == null)
            {
                _metricNameFormatter = (metricContext, metricName) => string.IsNullOrWhiteSpace(metricContext)
                    ? metricName
                    : $"[{metricContext}] {metricName}";
            }
            else
            {
                _metricNameFormatter = metricNameFormatter;
            }

            MetricNameMapping = dataKeys ?? new GeneratedMetricNameMapping();
        }
 public MetricsInfluxDbLineProtocolOptions()
 {
     MetricNameMapping   = new GeneratedMetricNameMapping();
     MetricNameFormatter = InfluxDbFormatterConstants.LineProtocol.MetricNameFormatter;
 }
 public MetricsHostedMetricsOptions()
 {
     MetricNameMapping   = new GeneratedMetricNameMapping();
     MetricNameFormatter = HostedMetricsFormatterConstants.GraphiteDefaults.MetricPointTextWriter;
 }