Service Fabric /应用程序见解-应用程序映射为空-如何验证cloud_RoleName?

问题描述 投票:0回答:1

我尝试首次为我的Service Fabric群集配置Application Insights(.net框架,4.7.2。)。我认为我已正确配置了所有应用程序,但应用程序映射为空。

enter image description here

在故障排除指南(https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-map#troubleshooting)中说:

 Confirm cloud role name is correctly configured.

它没有说如何可以确认此值,但确实提供了指向有关如何添加自定义TelemetryInitializer的详细信息的链接。我试图将其添加到我的有状态服务之一中,并在服务的构造函数中将其初始化为如下所示的自定义TelemetryInitializer:

public SqlDataService(StatefulServiceContext context, IReliableStateManager stateManager) : base(context, stateManager as IReliableStateManagerReplica)
    {
        TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
    }

https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-map#set-cloud-role-name

我尝试在runAsync中使用此代码进行验证

var telemetryClient = new TelemetryClient();

            ServiceEventSource.Current.Message(this.Context.ServiceName + " roleName '" + telemetryClient.Context.Cloud.RoleName + "'");
            ServiceEventSource.Current.Message(this.Context.ServiceName + " roleInstance '" + telemetryClient.Context.Cloud.RoleInstance + "'");

在诊断事件查看器中,我得到:

enter image description here

我这样初始化应用程序见解

enter image description here

如果我去门户网站->日志并查看CustomEvents,我确实有一个cloud_RoleName和cloud_RoleInstance。这里的值不是来自我的自定义TelemetryInitializer,因此必须由系统设置。

enter image description here

我安装了以下Nuget软件包:

enter image description here

这是我的ApplicationInsights.config

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
  <InstrumentationKey>xxxxx</InstrumentationKey>
  <TelemetryInitializers>
  <Add Type="Microsoft.ApplicationInsights.ServiceFabric.CodePackageVersionTelemetryInitializer, Microsoft.AI.ServiceFabric.Native"/>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector"/>
<Add Type="Microsoft.ApplicationInsights.ServiceFabric.FabricTelemetryInitializer, Microsoft.AI.ServiceFabric"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureWebAppRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.Wcf.OperationNameTelemetryInitializer, Microsoft.AI.Wcf"/>
<Add Type="Microsoft.ApplicationInsights.Wcf.OperationCorrelationTelemetryInitializer, Microsoft.AI.Wcf"/>
<Add Type="Microsoft.ApplicationInsights.Wcf.UserTelemetryInitializer, Microsoft.AI.Wcf"/>
<Add Type="Microsoft.ApplicationInsights.Wcf.UserAgentTelemetryInitializer, Microsoft.AI.Wcf"/>
<Add Type="Microsoft.ApplicationInsights.Wcf.ClientIpTelemetryInitializer, Microsoft.AI.Wcf"/>
<Add Type="SqlDataService.Telemetry.MyTelemetryInitializer, SqlDataService"/>
</TelemetryInitializers>
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
  <ExcludeComponentCorrelationHttpHeadersOnDomains>
    <Add>core.windows.net</Add>
    <Add>core.chinacloudapi.cn</Add>
    <Add>core.cloudapi.de</Add>
    <Add>core.usgovcloudapi.net</Add>
  </ExcludeComponentCorrelationHttpHeadersOnDomains>
  <IncludeDiagnosticSourceActivities>
    <Add>Microsoft.Azure.EventHubs</Add>
    <Add>Microsoft.Azure.ServiceBus</Add>
  </IncludeDiagnosticSourceActivities>
</Add>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
  <DefaultCounters/>
  <Counters>
    <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\% Processor Time"/>
    <Add PerformanceCounter="\Memory\Available Bytes"/>       
    <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Private Bytes"/>
    <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\IO Data Bytes/sec"/>
    <Add PerformanceCounter="\Processor(_Total)\% Processor Time"/>
  </Counters>
</Add>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/>
<Add Type="Microsoft.ApplicationInsights.ServiceFabric.Module.ServiceRemotingRequestTrackingTelemetryModule, Microsoft.AI.ServiceFabric.Native"/>
<Add Type="Microsoft.ApplicationInsights.ServiceFabric.Module.ServiceRemotingDependencyTrackingTelemetryModule, Microsoft.AI.ServiceFabric.Native"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AppServicesHeartbeatTelemetryModule, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureInstanceMetadataTelemetryModule, Microsoft.AI.WindowsServer">
</Add>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule, Microsoft.AI.WindowsServer">
</Add>
<Add Type="Microsoft.ApplicationInsights.Wcf.RequestTrackingTelemetryModule, Microsoft.AI.Wcf"/>
<Add Type="Microsoft.ApplicationInsights.Wcf.ExceptionTrackingTelemetryModule, Microsoft.AI.Wcf"/>
</TelemetryModules>
<ApplicationIdProvider Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.ApplicationInsightsApplicationIdProvider, Microsoft.ApplicationInsights"/>
<TelemetrySinks>
  <Add Name="default">
   <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.AutocollectedMetricsExtractor, Microsoft.ApplicationInsights"/>
     <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
      <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
      <ExcludedTypes>Event</ExcludedTypes>
     </Add>
      <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
      <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
      <IncludedTypes>Event</IncludedTypes>
    </Add>
  </TelemetryProcessors>
   <TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel"/>
 </Add>
</TelemetrySinks>
</ApplicationInsights>

附加信息:

我的应用程序中的服务是新创建的,这意味着我还没有开始转移业务逻辑。

现在在RunAsync中,我每30秒钟使用Service Fabric WCF调用另一个服务,同时设置一个自定义事件。我可以在门户网站中找到定制事件,但是与服务调用无关。

如果我通过http进入Web api(无状态服务),则无法找到有关该请求的任何信息。

我确实获得了CPU读数和类似信息,因此(一些)数据正在传输到Application Insights。

azure-service-fabric azure-application-insights
1个回答
0
投票

尝试像这样配置ApplicationInsights:

...
.ConfigureServices(services => services
                ...
                .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))
                .AddApplicationInsightsTelemetry())
...
© www.soinside.com 2019 - 2024. All rights reserved.