toString2 static method
Converts the given counters to a string that is returned by Prometheus metrics service.
counters
a list of counters to convert.source
a source (context) name.instance
a unique instance name (usually a host name).
Implementation
static String toString2(
List<Counter>? counters, String? source, String? instance) {
if (counters == null || counters.isEmpty) return '';
var builder = '';
for (var counter in counters) {
var counterName = _parseCounterName(counter);
var labels = _generateCounterLabel(counter, source, instance);
switch (counter.type) {
case CounterType.Increment:
builder += '# TYPE ' + counterName + ' gauge\n';
builder += counterName +
labels +
' ' +
StringConverter.toString2(counter.count) +
'\n';
break;
case CounterType.Interval:
builder += '# TYPE ' + counterName + '_max gauge\n';
builder += counterName +
'_max' +
labels +
' ' +
StringConverter.toString2(counter.max) +
'\n';
builder += '# TYPE ' + counterName + '_min gauge\n';
builder += counterName +
'_min' +
labels +
' ' +
StringConverter.toString2(counter.min) +
'\n';
builder += '# TYPE ' + counterName + '_average gauge\n';
builder += counterName +
'_average' +
labels +
' ' +
StringConverter.toString2(counter.average) +
'\n';
builder += '# TYPE ' + counterName + '_count gauge\n';
builder += counterName +
'_count' +
labels +
' ' +
StringConverter.toString2(counter.count) +
'\n';
break;
case CounterType.LastValue:
builder += '# TYPE ' + counterName + ' gauge\n';
builder += counterName +
labels +
' ' +
StringConverter.toString2(counter.last) +
'\n';
break;
case CounterType.Statistics:
builder += '# TYPE ' + counterName + '_max gauge\n';
builder += counterName +
'_max' +
labels +
' ' +
StringConverter.toString2(counter.max) +
'\n';
builder += '# TYPE ' + counterName + '_min gauge\n';
builder += counterName +
'_min' +
labels +
' ' +
StringConverter.toString2(counter.min) +
'\n';
builder += '# TYPE ' + counterName + '_average gauge\n';
builder += counterName +
'_average' +
labels +
' ' +
StringConverter.toString2(counter.average) +
'\n';
builder += '# TYPE ' + counterName + '_count gauge\n';
builder += counterName +
'_count' +
labels +
' ' +
StringConverter.toString2(counter.count) +
'\n';
break;
case CounterType
.Timestamp: // Prometheus doesn't support non-numeric metrics
builder += '# TYPE ' + counterName + ' gauge\n'; //' untyped\n';
builder += counterName +
labels +
' ' +
StringConverter.toString2(counter.time?.millisecondsSinceEpoch) +
'\n';
break;
}
}
return builder;
}