Skip to content

Commit cc5b0a6

Browse files
disable metrics publisher for custom containers (#4707)
1 parent 59ac9af commit cc5b0a6

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

src/WebJobs.Script.WebHost/NullMetricsPublisher.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,23 @@
33

44
using System;
55
using Microsoft.Azure.WebJobs.Script.WebHost.Metrics;
6+
using Microsoft.Extensions.Logging;
67

78
namespace Microsoft.Azure.WebJobs.Script.WebHost
89
{
910
public class NullMetricsPublisher : IMetricsPublisher
1011
{
11-
private static readonly Lazy<NullMetricsPublisher> _instance = new Lazy<NullMetricsPublisher>(new NullMetricsPublisher());
12+
private readonly ILogger _logger;
1213

13-
public static NullMetricsPublisher Instance => _instance.Value;
14+
public NullMetricsPublisher(ILogger<NullMetricsPublisher> logger)
15+
{
16+
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
17+
_logger.LogDebug("Initializing null metrics publisher");
18+
}
1419

1520
public void AddFunctionExecutionActivity(string functionName, string invocationId, int concurrency, string executionStage, bool success, long executionTimeSpan, DateTime utcNow)
1621
{
22+
_logger.LogDebug("Ignoring function activity metric: {functionName} {invocationId} {concurrency} {executionStage} {success} {executionTimeSpan}", functionName, invocationId, concurrency, executionStage, success, executionTimeSpan);
1723
}
1824
}
1925
}

src/WebJobs.Script.WebHost/WebHostServiceCollectionExtensions.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ private static void AddLinuxContainerServices(this IServiceCollection services)
173173
services.AddSingleton<IMetricsPublisher>(s =>
174174
{
175175
var environment = s.GetService<IEnvironment>();
176-
if (environment.IsLinuxContainerEnvironment())
176+
if (environment.IsLinuxMetricsPublishingEnabled())
177177
{
178178
var logger = s.GetService<ILogger<LinuxContainerMetricsPublisher>>();
179179
var standbyOptions = s.GetService<IOptionsMonitor<StandbyOptions>>();
@@ -182,7 +182,8 @@ private static void AddLinuxContainerServices(this IServiceCollection services)
182182
return new LinuxContainerMetricsPublisher(environment, standbyOptions, logger, httpClient, hostNameProvider);
183183
}
184184

185-
return NullMetricsPublisher.Instance;
185+
var nullMetricsLogger = s.GetService<ILogger<NullMetricsPublisher>>();
186+
return new NullMetricsPublisher(nullMetricsLogger);
186187
});
187188
}
188189
}

src/WebJobs.Script/Environment/EnvironmentExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ public static bool IsLinuxContainerEnvironment(this IEnvironment environment)
2828
return !environment.IsAppServiceEnvironment() && !string.IsNullOrEmpty(environment.GetEnvironmentVariable(ContainerName));
2929
}
3030

31+
public static bool IsLinuxMetricsPublishingEnabled(this IEnvironment environment)
32+
{
33+
return environment.IsLinuxContainerEnvironment() && string.IsNullOrEmpty(environment.GetEnvironmentVariable(ContainerStartContext));
34+
}
35+
3136
public static bool IsLinuxAppServiceEnvironment(this IEnvironment environment)
3237
{
3338
return environment.IsAppServiceEnvironment() && !string.IsNullOrEmpty(environment.GetEnvironmentVariable(FunctionsLogsMountPath));

0 commit comments

Comments
 (0)