private MetricsContextValueSource CreateValueSource( string context, GaugeValueSource gauges = null, CounterValueSource counters = null, MeterValueSource meters = null, HistogramValueSource histograms = null, BucketHistogramValueSource bucketHistograms = null, TimerValueSource timers = null, BucketTimerValueSource bucketTimers = null, ApdexValueSource apdexScores = null) { var gaugeValues = gauges != null ? new[] { gauges } : Enumerable.Empty <GaugeValueSource>(); var counterValues = counters != null ? new[] { counters } : Enumerable.Empty <CounterValueSource>(); var meterValues = meters != null ? new[] { meters } : Enumerable.Empty <MeterValueSource>(); var histogramValues = histograms != null ? new[] { histograms } : Enumerable.Empty <HistogramValueSource>(); var bucketHistogramValues = bucketHistograms != null ? new[] { bucketHistograms } : Enumerable.Empty <BucketHistogramValueSource>(); var timerValues = timers != null ? new[] { timers } : Enumerable.Empty <TimerValueSource>(); var bucketTimerValues = bucketTimers != null ? new[] { bucketTimers } : Enumerable.Empty <BucketTimerValueSource>(); var apdexScoreValues = apdexScores != null ? new[] { apdexScores } : Enumerable.Empty <ApdexValueSource>(); return(new MetricsContextValueSource( context, gaugeValues, counterValues, meterValues, histogramValues, bucketHistogramValues, timerValues, bucketTimerValues, apdexScoreValues)); }
private IEnumerable <ApdexValueSource> SetupApdexScores() { var apdexValue = new ApdexValue(0.9, 170, 20, 10, 200); var apdex = new ApdexValueSource(ApdexNameDefault, ConstantValue.Provider(apdexValue), Tags); return(new[] { apdex }); }
private static MetricTelemetry Translate(ApdexValueSource source, string contextName, DateTimeOffset now) { var mt = MetricFactory.CreateMetric(source, contextName, now); source.Value.CopyTo(mt); return(mt); }
public IEnumerable <ApdexValueSource> SetupApdexScores() { var apdexValue = new ApdexValue(0.9, 170, 20, 10, 200); var apdex = new ApdexValueSource("test_apdex", ConstantValue.Provider(apdexValue), Tags); return(new[] { apdex }); }
public ApdexSerializationTests(ITestOutputHelper output, MetricProviderTestFixture fixture) { _output = output; _serializer = new MetricDataSerializer(); _apdex = fixture.ApdexScores.First(); _apdex = fixture.ApdexScores.First(x => x.Name == fixture.ApdexNameDefault); }
public IApdex Apdex <T>(ApdexOptions options, Func <T> builder) where T : IApdexMetric { return(_apdexScores.GetOrAdd(options.Name, () => { var apdex = builder(); var valueSource = new ApdexValueSource(options.Name, apdex, AllTags(options.Tags), options.ResetOnReporting); return Tuple.Create((IApdex)apdex, valueSource); })); }
public static void HumanizeApdexScore(this StringBuilder sb, ApdexValueSource apdex) { sb.AppendLine(); sb.AppendLine("Score".FormatReadableMetricValue(apdex.Value.Score.ToString(CultureInfo.CurrentCulture))); sb.AppendLine("Sample Size".FormatReadableMetricValue(apdex.Value.SampleSize.ToString(CultureInfo.CurrentCulture))); sb.AppendLine("Satisfied".FormatReadableMetricValue(apdex.Value.Satisfied.ToString(CultureInfo.CurrentCulture))); sb.AppendLine("Tolerating".FormatReadableMetricValue(apdex.Value.Tolerating.ToString(CultureInfo.CurrentCulture))); sb.AppendLine("Frustrating".FormatReadableMetricValue(apdex.Value.Frustrating.ToString(CultureInfo.CurrentCulture))); }
/// <inheritdoc /> public bool IsApdexMatch(ApdexValueSource apdex) { if (_types != null && !_types.Contains(MetricType.Apdex)) { return(false); } return(IsMetricNameMatch(apdex.Name) && IsTagMatch(apdex.Tags)); }
public IEnumerable <ApdexValueSource> SetupApdexScores() { var apdexValue = new ApdexValue(0.9, 170, 20, 10, 200); var apdex = new ApdexValueSource(ApdexNameDefault, ConstantValue.Provider(apdexValue), Tags); var apdexValueWithGroup = new ApdexValue(0.9, 170, 20, 10, 200); var apdexWithGroup = new ApdexValueSource(ApdexNameWithGroup, GroupDefault, ConstantValue.Provider(apdexValueWithGroup), Tags); return(new[] { apdex, apdexWithGroup }); }
private static MetricTelemetry TranslateApdexSource(ApdexValueSource source, string contextName, DateTimeOffset now) { var mt = MetricFactory.CreateMetric(source, contextName, now); TranslateTags(source.Tags, mt); mt.Properties[Constants.AppMetricsTypeKey] = Constants.ApdexTypeValue; var all = source.Value.Satisfied + source.Value.Tolerating + source.Value.Frustrating; mt.Sum = (source.Value.Satisfied + ((double)source.Value.Tolerating / 2)) / all; return(mt); }
public static ApdexScore ToMetric(this ApdexValueSource source) { return(new ApdexScore { Name = source.Name, Score = source.Value.Score, SampleSize = source.Value.SampleSize, Satisfied = source.Value.Satisfied, Tolerating = source.Value.Tolerating, Frustrating = source.Value.Frustrating, Tags = source.Tags }); }
public static IEnumerable <MetricValue> ToMackerelMetrics(this ApdexValueSource metric) { var result = new List <MetricValue> { new MetricValue { name = "", value = metric.Value.Score.ToDecimal() } }; return(result); }
public void can_report_apdex() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new ApdexMetric(SamplingType.ExponentiallyDecaying, 1028, 0.015, clock, false); var apdexValueSource = new ApdexValueSource("test apdex", ConstantValue.Provider(gauge.Value), MetricTags.None, false); var payloadBuilder = new LineProtocolPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted().Should().Be("test__test_apdex samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); }
public static IEnumerable <Metric> ToPrometheusMetrics(this ApdexValueSource metric) { var result = new List <Metric> { new Metric { gauge = new Gauge { value = metric.Value.Score }, label = metric.Tags.ToLabelPairs() } }; return(result); }
public void can_report_apdex() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), MetricTags.Empty, false); var payloadBuilder = new LineProtocolPayloadBuilder(_settings.DataKeys, _settings.MetricNameFormatter); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(false).Should().Be("test__test_apdex,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); }
public void Can_report_apdex_with_tags_when_multidimensional() { // Arrange var expected = "env.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Samples 0 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Score 0.00 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Satisfied 0 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Tolerating 0 1483232461\nenv.staging.apdex.test.test_apdex.host.server1.anothertag.thevalue.Frustrating 0 1483232461\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue"))); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public void can_report_apdex() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), MetricTags.Empty, false); var payloadBuilder = new GraphitePayloadBuilder(_settings.GraphiteSettings.MetricNameFormatter, _settings.DataKeys, Origin); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted().Should().Be("apdex.test.test_apdex.Samples 0 0\napdex.test.test_apdex.Score 0.00 0\napdex.test.test_apdex.Satisfied 0 0\napdex.test.test_apdex.Tolerating 0 0\napdex.test.test_apdex.Frustrating 0 0\n"); }
public void Can_report_apdex_with_tags_when_multidimensional() { // Arrange var expected = "test__test_apdex,host=server1,env=staging,anothertag=thevalue,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i 1483232461000000000\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue"))); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public async Task Can_report_apdex() { // Arrange var expected = "apdex.test.test_apdex.Samples 0 1483232461\napdex.test.test_apdex.Score 0.00 1483232461\napdex.test.test_apdex.Satisfied 0 1483232461\napdex.test.test_apdex.Tolerating 0 1483232461\napdex.test.test_apdex.Frustrating 0 1483232461\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), MetricTags.Empty); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public async Task Can_report_apdex_with_tags() { // Arrange var expected = "{\"series\":[{\"metric\":\"test.test_apdex.apdex.samples\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.score\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.satisfied\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.tolerating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.frustrating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"key1:value1\",\"key2:value2\",\"unit:result\"]}]}"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), FlushInterval, expected); }
public void Can_report_apdex_with_tags() { // Arrange var expected = "test__test_apdex,key1=value1,key2=value2,mtype=apdex,unit=result samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i 1483232461000000000\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public async Task Can_report_apdex_with_tags_when_multidimensional() { // Arrange var expected = "{\"series\":[{\"metric\":\"test.test_apdex.apdex.samples\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.score\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.satisfied\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.tolerating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]},{\"metric\":\"test.test_apdex.apdex.frustrating\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"anothertag:thevalue\",\"unit:result\"]}]}"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(apdex.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue"))); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), FlushInterval, expected); }
public void Can_report_apdex_with_tags() { // Arrange var expected = "apdex.test.test_apdex.key1.value1.key2.value2.Samples 0 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Score 0.00 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Satisfied 0 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Tolerating 0 1483232461\napdex.test.test_apdex.key1.value1.key2.value2.Frustrating 0 1483232461\n"; var clock = new TestClock(); var apdex = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(apdex.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" })); // Act var valueSource = CreateValueSource("test", apdexScores: apdexValueSource); // Assert AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected); }
public static IEnumerable <Metric> ToPrometheusMetrics( this ApdexValueSource metric, Func <string, string> labelNameFormatter) { var result = new List <Metric> { new Metric { gauge = new Gauge { value = metric.Value.Score }, label = metric.Tags.ToLabelPairs(labelNameFormatter) } }; return(result); }
public void can_report_apdex() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), MetricTags.Empty, false); var items = CreateReporterAndPayloadBuilder(); items.Item1.StartReportRun(metricsMock.Object); items.Item1.ReportMetric("test", apdexValueSource); items.Item2.PayloadFormatted(). Should(). Be("test__test_apdex mtype=apdex unit=result samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }
public void can_report_apdex__when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), _tags, resetOnReporting: false); var items = CreateReporterAndPayloadBuilder(); items.Item1.StartReportRun(metricsMock.Object); items.Item1.ReportMetric("test", apdexValueSource); items.Item2.PayloadFormatted(). Should(). Be("test__test_apdex host=server1 env=staging mtype=apdex unit=result samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }
public void can_report_apdex_with_tags() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex", ConstantValue.Provider(gauge.Value), new MetricTags(new[] { "key1", "key2" }, new[] { "value1", "value2" }), false); var payloadBuilder = new TestPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(). Should(). Be("test__test_apdex key1=value1 key2=value2 mtype=apdex samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }
public IApdex Apdex <T>(ApdexOptions options, Func <T> builder) where T : IApdexMetric { return(_apdexScores.GetOrAdd( options.Name, () => { var allTags = AllTags(options.Tags); Logger.Debug("Adding Apdex {Name} - {@Options} {MesurementUnit} {@Tags}", options.Name, options, options.MeasurementUnit.ToString(), allTags.ToDictionary()); var apdex = builder(); var valueSource = new ApdexValueSource( options.Name, apdex, allTags, options.ResetOnReporting); return Tuple.Create((IApdex)apdex, valueSource); })); }
public void can_report_apdex__when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), _tags, resetOnReporting: false); var payloadBuilder = new LineProtocolPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(). Should(). Be("test__test_apdex,host=server1,env=staging samples=0i,score=0,satisfied=0i,tolerating=0i,frustrating=0i\n"); }
public void can_report_apdex_with_tags_when_multidimensional() { var metricsMock = new Mock <IMetrics>(); var clock = new TestClock(); var gauge = new DefaultApdexMetric(_defaultReservoir, clock, false); var apdexValueSource = new ApdexValueSource( "test apdex" + MultidimensionalMetricNameSuffix, ConstantValue.Provider(gauge.Value), MetricTags.Concat(_tags, new MetricTags("anothertag", "thevalue")), resetOnReporting: false); var payloadBuilder = new TestPayloadBuilder(); var reporter = CreateReporter(payloadBuilder); reporter.StartReportRun(metricsMock.Object); reporter.ReportMetric("test", apdexValueSource); payloadBuilder.PayloadFormatted(). Should(). Be( "test__test_apdex host=server1 env=staging anothertag=thevalue mtype=apdex samples=0i score=0 satisfied=0i tolerating=0i frustrating=0i" + Environment.NewLine); }