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(',')}}'
|
|
|
|
}
|
|
|
|
|
2022-12-26 15:03:57 +01:00
|
|
|
pub interface MetricsCollector {
|
2022-12-26 13:31:50 +01:00
|
|
|
counter_register(value u64, metric Metric)
|
|
|
|
counter_increment(metric Metric)
|
2022-12-26 14:27:43 +01:00
|
|
|
counter_get(metric Metric) ?u64
|
2022-12-26 15:03:57 +01:00
|
|
|
counters() []Metric
|
2022-12-26 14:27:43 +01:00
|
|
|
histogram_register(metric Metric)
|
|
|
|
histogram_add(value f64, metric Metric)
|
|
|
|
histogram_get(metric Metric) ?
|
2022-12-26 13:31:50 +01:00
|
|
|
}
|