azure-functions - 是否可以在运行时在 Azure 函数中设置 AppInsights 检测密钥
问题描述
通常,AppInsights 的检测密钥IConfiguration
在名为APPINSIGHTS_INSTRUMENTATIONKEY
. 这可能会出现在您的 appsettings.json 文件、环境变量或其他任何IConfigurationBuilder
支持的文件中。但是,如果想在运行时设置检测密钥怎么办。这是我期望应该起作用的:
public override void Configure(IFunctionsHostBuilder builder)
{
// Test code
builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
InstrumentationKey = "461df8ba-af74-444b-a896-f47c5c6dd02d",
DeveloperMode = true
});
// ... Various configuration stuff
}
当我这样做时,我可以验证 aTelemetryClient
是否被注入到我的函数类的构造函数中,并且我可以验证是否设置了正确的检测密钥:
这些遥测项目甚至显示在本地调试器窗口中,所以我知道客户端正在处理它们:
但是,我等了又等,但它们从未真正出现在 AppInsights 中。当我将相同的检测密钥放入本地设置 JSON 中时,一切正常。
有没有人有一个很好的例子来展示如何在运行时设置 AppInsights 键而不是使用IConfiguration
. 谢谢!
更新:
翻阅一些Microsoft 文档,看起来调用AddApplicationInsightsTelemetry
会与开箱即用的 AppInsights 服务发生冲突:
所以,我可能运气不好。不过,我会暂时保留这个问题,以防有人有解决办法。顺便说一句,我问的原因是我的团队正在构建一个框架来以一致的方式配置所有微服务。我们的一些微服务使用 Azure Functions,所以如果标准配置调用不起作用,我们需要在文档中指出这一点,或者可能抛出异常或其他东西。
解决方案
请尝试安装此软件包Microsoft.Azure.WebJobs.Logging.ApplicationInsights。
然后在您的 Startup.cs 中,代码如下所示:
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddSingleton(sp =>
{
return new TelemetryConfiguration("put the instrumentation key here");
});
}
然后在函数中,使用TelemetryClient
发送数据:
private readonly TelemetryClient telemetryClient;
public Function1(TelemetryClient telemetryClient)
{
this.telemetryClient = telemetryClient;
}
[FunctionName("Function1")]
public void Run([BlobTrigger("samples-workitems/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, string name, ILogger log)
{
telemetryClient.TrackTrace("11 track trace 2222...");
}
推荐阅读
- javascript - [$NUM] 在 html 中是什么意思?
- c# - 我可以合并这段关于 IFormCollection、IQueryCollection 扩展函数的代码吗
- mongodb - mongodb 服务未运行。设置的哪一部分有问题?
- python - Django:update_or_create,使用 kwargs 列表过滤
- apache-spark - 如何每天只遍历 RDD 的一部分?
- python - “easy_install setuptools”正在将 setuptools 安装到不同的站点包中?
- heroku - Heroku 安装 Bundler 然后抛出错误 Bundler 2.0.1
- spring-security - 如何授权微服务内部通信?
- php - 如何修复 'ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")'
- python - 在 GCP 上运行的 Jupyter Notebook 在重新附加屏幕 linux 后不显示输出