隔离式.NET 7 Azure Function App:保留双监控并禁用App Insights跟踪日志
解决方案:保留Application Insights核心功能,停止摄入跟踪日志
可以同时使用Datadog和Application Insights,且仅让AI保留函数调用统计、失败请求监控等核心可视化数据,停止摄入跟踪类日志,具体实现方式如下:
方法一:通过应用配置过滤日志级别
在Azure Portal中直接调整Function App的配置,限制AI仅收集特定级别的日志:
- 打开目标Function App,进入配置 > 应用程序设置
- 添加或修改以下配置项:
APPINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL:设置为Warning或Error,让AI仅收集警告及以上级别的日志,过滤Debug/Information级别的跟踪日志APPINSIGHTS_INSTRUMENTATION_LOGGING_ENABLED:保持为true,确保核心监控功能正常运行
- 保存配置后,Function App自动重启,生效后AI将不再摄入大量跟踪日志,同时保留函数调用、失败请求的统计数据。
方法二:代码层面精准配置日志筛选
针对隔离式.NET 7 Function App,可在Program.cs中手动配置日志过滤规则,让AI仅接收核心监控类日志:
var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults() .ConfigureLogging(logging => { // 移除默认AI日志提供器,重新配置带过滤的实例 logging.Services.RemoveAll(typeof(ITelemetryLoggerProvider)); logging.AddApplicationInsightsTelemetryLogger(options => { // 规则1:仅允许Warning及以上级别日志进入AI options.Filter = (category, level) => level >= LogLevel.Warning; // 可选规则2:仅保留Function核心监控相关日志(更精准) // options.Filter = (category, level) => // category.StartsWith("Microsoft.Azure.Functions.Worker") && level >= LogLevel.Information; }); // 保留Serilog配置,持续推送日志到Datadog logging.AddSerilog(); }) .Build(); host.Run();
这种方式灵活性更高,可根据日志类别和级别精准控制AI接收的内容,确保业务跟踪日志完全不进入AI,同时保留函数运行的核心监控数据。
方法三:通过Application Insights采样规则排除跟踪日志
在AI资源中设置自定义采样规则,完全排除指定类型的跟踪日志:
- 进入关联的Application Insights资源,打开数据收集 > 采样
- 启用自定义采样,添加新规则:
- 规则类型选择日志
- 匹配条件设置为
日志级别 equals Debug或日志级别 equals Information - 采样百分比设为
0%
- 保存规则后,AI将不再摄入对应级别的跟踪日志,核心的函数调用统计、失败请求监控不受影响。
注意:以上所有方法都不会干扰Application Insights的核心监控功能(如函数调用次数、失败率、性能指标等),这些数据由Function App内置遥测收集,与日志过滤规则无关。
内容的提问来源于stack exchange,提问作者dhrm
相关产品推荐
相关产品推荐

