private static void WriteFamily(StreamWriter streamWriter, MetricFamily metricFamily) { streamWriter.WriteLine("# HELP {0} {1}", metricFamily.name, metricFamily.help); streamWriter.WriteLine("# TYPE {0} {1}", metricFamily.name, metricFamily.type); foreach (var metric in metricFamily.metric) { WriteMetric(streamWriter, metricFamily, metric); } }
private static void WriteMetric(StreamWriter streamWriter, MetricFamily family, Metric metric) { var familyName = family.name; if (metric.gauge!=null) { streamWriter.WriteLine(SimpleValue(familyName, metric.gauge.value, metric.label)); } else if (metric.counter!=null) { streamWriter.WriteLine(SimpleValue(familyName, metric.counter.value, metric.label)); } else if (metric.summary != null) { streamWriter.WriteLine(SimpleValue(familyName, metric.summary.sample_sum, metric.label, "_sum")); streamWriter.WriteLine(SimpleValue(familyName, metric.summary.sample_count, metric.label, "_count")); foreach (var quantileValuePair in metric.summary.quantile) { var quantile = double.IsPositiveInfinity(quantileValuePair.quantile) ? "+Inf" : quantileValuePair.quantile.ToString(CultureInfo.InvariantCulture); streamWriter.WriteLine(SimpleValue(familyName, quantileValuePair.value, metric.label.Concat(new []{new LabelPair{name= "quantile", value = quantile}}))); } } else if (metric.histogram != null) { streamWriter.WriteLine(SimpleValue(familyName, metric.histogram.sample_sum, metric.label, "_sum")); streamWriter.WriteLine(SimpleValue(familyName, metric.histogram.sample_count, metric.label, "_count")); foreach (var bucket in metric.histogram.bucket) { var value = double.IsPositiveInfinity(bucket.upper_bound) ? "+Inf" : bucket.upper_bound.ToString(CultureInfo.InvariantCulture); streamWriter.WriteLine(SimpleValue(familyName, bucket.cumulative_count, metric.label.Concat(new []{new LabelPair{name = "le", value = value}}), "_bucket")); } } else { //not supported } }