Код: Выделить всё
class Program
{
static void Main()
{
var meter = new Meter("MyApp.Metrics");
// Recommended: ObservableGauge for reporting current values
meter.CreateObservableGauge("memory_usage_bytes", () =>
{
// This callback is called each time metrics are collected (e.g., by Prometheus)
return GC.GetTotalMemory(forceFullCollection: false);
});
// ...
}
}
Но большинство экспортеров, например, Exporter Prometheus, обратный вызов называется каждый раз, когда Прометеус царапает конечную точку/метрик (каждые 15 секунд по умолчанию), тогда использование ЦП/памяти может представлять только использование во время сбора.
Код: Выделить всё
class Program
{
static void Main()
{
var meter = new Meter("MyApp.Metrics");
meter.CreateObservableGauge("memory_usage_bytes", () =>
{
return GC.GetTotalMemory(forceFullCollection: false);
});
// memory intensive work here, the intensive will finish after 5 seconds
MemoryIntensiveWork.Start();
// after one or two seconds, I want to measure the current memory usage
// ObservableGauge won't work here
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... observable