Код: Выделить всё
// Meter creation
private static Meter meter = new Meter("my_library");
// Counter creation
private static Counter myCounter= meter.CreateCounter("my_metric_counter", description: "My counter");
Код: Выделить всё
// When event A happens
myCounter.Add(1,
KeyValuePair.Create("tag_key", "A");
Код: Выделить всё
// When event B happens
myCounter.Add(1,
KeyValuePair.Create("tag_key", "B");
Код: Выделить всё
applicationBuilder.UseMetricServer();
Код: Выделить всё
my_library_my_metric_counter{tag_key="tag value A"} 10
my_library_my_metric_counter{tag_key="tag value B"} 20
Код: Выделить всё
my_library_my_metric_counter{tag_key="tag value A"} 100
Если «значение тега B» учитывается еще раз после через эти 10 минут метрики снова появляются в Prometheus (и при ручной очистке конечной точки /metrics приложения). Однако значение метрики будет сброшено до 1.
Код: Выделить всё
my_library_my_metric_counter{tag_key="tag value A"} 200
my_library_my_metric_counter{tag_key="tag value B"} 1
Я также добавлю, что в коде моей библиотеки также есть несколько Экземпляры System.Diagnostic.Metrics.ObservableGauge. Интересно, что метрики этих датчиков, хотя и редко обновляются, у меня НЕ исчезают после 10 минут отсутствия обновления (возможно, потому, что очистка по сути является обновлением?). Можно было бы предложить использовать ObservableGauge вместо Counter; но мне еще предстоит найти способ связать теги с ObservableGauge.
Подробнее здесь: https://stackoverflow.com/questions/768 ... -can-i-pre