in src/ServiceProfiler.EventPipe.Otel/Microsoft.ApplicationInsights.Profiler.Shared/Orchestrations/ResourceUsageSource.cs [35:99]
public ResourceUsageSource(
[FromKeyedServices(MetricsProviderCategory.CPU)]
IMetricsProvider cpuMetricsProvider,
[FromKeyedServices(MetricsProviderCategory.Memory)]
IMetricsProvider memoryMetricsProvider,
CpuTriggerSettings cpuTriggerSettings,
MemoryTriggerSettings memoryTriggerSettings,
ISerializationProvider serializer,
IOptions<UserConfigurationBase> userConfigurations,
ILogger<ResourceUsageSource> logger,
ILoggerFactory loggerFactory)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
_userConfigurations = userConfigurations?.Value ?? throw new ArgumentNullException(nameof(userConfigurations));
if (cpuMetricsProvider is null)
{
throw new ArgumentNullException(nameof(cpuMetricsProvider));
}
if (memoryMetricsProvider is null)
{
throw new ArgumentNullException(nameof(memoryMetricsProvider));
}
if (serializer is null)
{
throw new ArgumentNullException(nameof(serializer));
}
if (cpuTriggerSettings is null)
{
throw new ArgumentNullException(nameof(cpuTriggerSettings));
}
else
{
if (serializer.TrySerialize(cpuTriggerSettings, out string? serializedCpuTriggerSettings))
{
_logger.LogDebug("CPU Triggering settings: {settings}", serializedCpuTriggerSettings);
}
}
if (memoryTriggerSettings is null)
{
throw new ArgumentNullException(nameof(memoryTriggerSettings));
}
else
{
if (serializer.TrySerialize(memoryTriggerSettings, out string? serializedMemoryTriggerSettings))
{
_logger.LogDebug("Memory Triggering settings: {settings}", serializedMemoryTriggerSettings);
}
}
if (_userConfigurations.IsDisabled)
{
_logger.LogDebug("Resource usage monitoring is disabled because profiler is disabled.");
return;
}
_cpuBaselineTracker = CreateAndStartCPUBaselineTracker(cpuTriggerSettings, cpuMetricsProvider);
_memoryBaselineTracker = CreateAndStartMemoryBaselineTracker(memoryMetricsProvider, memoryTriggerSettings);
}