2022-12-26 13:31:50 +01:00
|
|
|
module metrics
|
|
|
|
|
|
|
|
[params]
|
|
|
|
pub struct Metric {
|
|
|
|
name string [required]
|
|
|
|
labels [][2]string
|
|
|
|
}
|
|
|
|
|
|
|
|
[inline]
|
|
|
|
fn join_two_array(arr [2]string) string {
|
|
|
|
return arr[0] + '=' + arr[1]
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn (m &Metric) str() string {
|
|
|
|
if m.labels.len == 0 {
|
|
|
|
return m.name
|
|
|
|
}
|
|
|
|
|
|
|
|
return '$m.name{${m.labels.map(join_two_array(it)).join(',')}}'
|
|
|
|
}
|
|
|
|
|
|
|
|
interface MetricsCollector {
|
|
|
|
counter_register(value u64, metric Metric)
|
|
|
|
counter_increment(metric Metric)
|
|
|
|
counter_decrement(metric Metric)
|
|
|
|
}
|