Azure Function进程内模型下New Relic APM未创建,需迁移至隔离模型?
Azure Function进程内模型启用New Relic APM的解决方案
不需要强制迁移到隔离模型,.NET 8 + Function v4的进程内模型完全支持New Relic APM,当前未生成APM服务的核心问题是Profiler相关环境变量配置不完整,以下是具体解决步骤:
1. 补全Profiler环境变量配置
你当前的CORECLR_PROFILER_PATH和CORECLR_NEWRELIC_HOME为空,这两个是Profiler加载的关键参数,必须设置正确路径。针对Azure Function进程内模型,配置示例如下:
"CORECLR_ENABLE_PROFILING": "1", "CORECLR_PROFILER": "{36032161-FFC0-4B61-B559-F6C5D41BAE5A}", "CORECLR_PROFILER_PATH": "%HOME%\\site\\wwwroot\\bin\\NewRelic.Profiler.dll", "CORECLR_NEWRELIC_HOME": "%HOME%\\site\\wwwroot\\bin\\NewRelic", "NEW_RELIC_LICENSE_KEY": "你的New Relic许可证密钥", "NEW_RELIC_APP_NAME": "你的APM服务名称", "NEW_RELIC_APPLICATION_LOGGING_ENABLED": "true"
%HOME%是Azure Function内置环境变量,指向函数应用根目录;- 确保
NewRelic.Profiler.dll和NewRelic目录已部署到wwwroot/bin路径下(可通过安装New Relic Azure扩展或手动部署Agent文件实现)。
2. 确认New Relic Agent部署
进程内模型需要New Relic .NET Agent的支持,可通过两种方式部署:
- 在Azure门户为函数应用安装New Relic .NET Agent扩展;
- 手动将New Relic Agent的核心文件(
NewRelic.Profiler.dll、NewRelic目录等)打包到函数应用的wwwroot/bin目录中一起部署。
3. 日志与APM关联代码说明
你当前的Serilog配置已经包含日志与APM关联的逻辑,以下是翻译并格式化后的代码:
public static void RegisterSerilog(AppSettings settings) { // 配置Serilog Log.Logger = new LoggerConfiguration() .MinimumLevel.Is(Enum.Parse<LogEventLevel>(settings.LoggerSettings.NewRelicSettings.MinimumLogLevel, true)) // 从配置读取日志级别 .Enrich.FromLogContext() .Enrich.WithNewRelicLogsInContext() // 为日志添加New Relic上下文,关联APM追踪数据 .WriteTo.NewRelicLogs( // 将日志写入New Relic平台 endpointUrl: settings.LoggerSettings.NewRelicSettings.EndpointUrl, applicationName: settings.LoggerSettings.NewRelicSettings.ApplicationName, licenseKey: settings.LoggerSettings.NewRelicSettings.LicenseKey) .CreateLogger(); }
4. 验证APM服务状态
配置完成后,触发几次函数执行,等待5-10分钟(New Relic数据存在延迟),然后查看APM界面。如果仍未出现服务实例,可检查函数应用的诊断日志,排查Profiler加载失败的具体错误信息。
内容的提问来源于stack exchange,提问作者pratapsingh845
相关产品推荐
相关产品推荐

