Код: Выделить всё
// Monitor is IResourceMonitor and gets registered in DI
var utilization = monitor.GetUtilization(TimeSpan.FromSeconds(3));
var resources = utilization.SystemResources;
// Use various properties from utilization and resources for CPU and memory usage
Код: Выделить всё
EXTOBS0001: Interface 'Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceMonitor' is obsolete: 'This API is obsolete and will be removed in a future version. Consider using Resource Monitoring observable instruments.'
var listener = new MeterListener();
listener.InstrumentPublished = (instrument, l) =>
l.EnableMeasurementEvents(instrument);
};
listener.SetMeasurementEventCallback((instrument, value, tags, state) =>
{
Console.WriteLine($"[LONG] {instrument.Name} = {value} {instrument.Unit}");
});
listener.SetMeasurementEventCallback((instrument, value, tags, state) =>
{
Console.WriteLine($"[DOUBLE] {instrument.Name} = {value:F2} {instrument.Unit}");
});
listener.Start();
Console.WriteLine("Listening for metrics... Press Ctrl+C to exit.");
List memory = [];
while (true)
{
var array = new byte[1024];
var index = Random.Shared.Next(array.Length);
array[index] = (byte)Random.Shared.Next(0, 255); // Touch memory to make sure it's being used
Console.WriteLine(array[index]);
memory.Add(array); // Keep adding memory
await Task.Delay(TimeSpan.FromSeconds(3));
}
< /code>
Я пробовал это в Windows и Linux (и в контейнере Linux), и обратные вызовы никогда не вызываются, даже если я вижу, что все события измерения включены. Все, что я хочу сделать, это получить процессор и использование памяти, и кажется, что это сложнее или вовлечено, чем я думал. Может ли кто -нибудь, пожалуйста, предоставить некоторое руководство о том, что я делаю не так, или лучший способ сделать это без необходимости запечатлеть метрики самостоятельно? (т.е. я не хочу писать и поддерживать код, который запрашивает файловую систему cgroup)
Подробнее здесь: https://stackoverflow.com/questions/796 ... et-applica