未为部署在 Service Fabric Linux 集群上的 .Net 核心应用生成应用洞察
Posted
技术标签:
【中文标题】未为部署在 Service Fabric Linux 集群上的 .Net 核心应用生成应用洞察【英文标题】:Application insights not generated for .Net core app deployed on service fabric Linux cluster 【发布时间】:2020-07-16 05:10:30 【问题描述】:我有一个部署在 Service Fabric Linux 集群上的 .Net 核心应用程序。应用洞察在应用中配置。
Startup.cs
public void ConfigureServices(IServiceCollection services)
ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions aiOptions
= new ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions
EnableAdaptiveSampling = false,
EnableQuickPulseMetricStream = false,
InstrumentationKey = "xxx"
;
services.AddApplicationInsightsTelemetry(aiOptions);
我有一个 controller 类,它有一些操作方法并记录信息。
[HttpPost]
public ActionResult actionMethod(...)
TraceLine("------------------------------------");
//some code
private static void TraceLine(string msg)
msg = $">> DateTime.UtcNow.ToString("o"): msg";
Log.Information(msg);
我使用的是 Serilog,在 appsettings.json & Program.cs 中配置
当我通过 Postman 直接从本地点击操作方法(甚至不将其托管在本地 sf 集群上)时,我看到应用洞察力正在生成并推送到 azure。
azure app insights snapshot
但是当我点击部署在 Azure 服务结构上的操作方法时,我看不到任何洞察力。
我在这里错过了什么?
非常感谢任何帮助!
【问题讨论】:
【参考方案1】:好吧,我们需要在这里检查几件事:
1) 云上托管的集群的部署参数文件中的应用洞察 URL 和检测密钥 (Cloud.xml)
2) 在检查 Cloud.xml 之后,最好的方法是访问日志文件并检查实际问题。
有一个描述 here 解释了如何发现日志文件的存储位置。
可以使用RDP访问本机,说明here。
【讨论】:
感谢您的回复。 Cloud.xml 看起来不错。访问 RDP 只显示 DOS cmd 提示符。而且我真的不知道如何处理 dos 提示符。 我能够解决这个问题并发布了答案。感谢您的帮助!【参考方案2】:我能够通过在我的应用程序中使用 Microsoft.ApplicationInsights.ServiceFabric.Native SDK 来记录应用见解,从而解决了这个问题。
请参阅ApplicationInsights-ServiceFabric 中的 .NetCore 部分,了解如何为 Service Fabric 应用程序配置洞察力。
【讨论】:
以上是关于未为部署在 Service Fabric Linux 集群上的 .Net 核心应用生成应用洞察的主要内容,如果未能解决你的问题,请参考以下文章
Service Fabric Actors:使用最新版本的 Service Fabric nuget 包部署 Actors 时出现的问题
在本地部署 Service Fabric 项目:“FABRIC_E_IMAGEBUILDER_UNEXPECTED_ERROR”