Журналы приложений Azure Service Fabric не отображаются в приложениях. - PullRequest
0 голосов
/ 14 мая 2018

Я использую реализацию ServiceEventSource, которая поставляется с шаблоном VS, для регистрации сообщений. Он отображается в средстве просмотра событий диагностики, но не в настроенном экземпляре приложения. Я получаю другие события платформы в экземпляре приложения, но не регистрирую свое приложение.

Пример строки журнала -

ServiceEventSource.Current.ServiceMessage(this.Context, "Config deployment is disabled.");

Я ничего не делал, кроме как настроить понимание приложения с помощью контекстного меню Visual Studio. Также при создании кластера сервисной фабрики я предоставил правильный ключ инструментария.

ApplicationInsights.config -

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
  <InstrumentationKey>ac5a18e4-3750-46b4-ac10-2a887915b163</InstrumentationKey>
  <TelemetryInitializers>
    <Add Type="Microsoft.ApplicationInsights.ServiceFabric.FabricTelemetryInitializer, Microsoft.AI.ServiceFabric"/>
  </TelemetryInitializers>
  <TelemetryModules>
    <Add Type="Microsoft.ApplicationInsights.ServiceFabric.Module.ServiceRemotingRequestTrackingTelemetryModule, Microsoft.AI.ServiceFabric.Native"/>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/>
  </TelemetryModules>
  <TelemetryProcessors>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/>
  </TelemetryProcessors>
</ApplicationInsights>

Program.cs-

using System;
using System.Diagnostics;
using System.Fabric;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.ServiceFabric.Services.Runtime;

namespace ConfigUploadService
{
    internal static class Program
    {
        /// <summary>
        /// This is the entry point of the service host process.
        /// </summary>
        private static void Main()
        {
            try
            {
                // The ServiceManifest.XML file defines one or more service type names.
                // Registering a service maps a service type name to a .NET type.
                // When Service Fabric creates an instance of this service type,
                // an instance of the class is created in this host process.

                ServiceRuntime.RegisterServiceAsync("ConfigUploadServiceType",
                    context => new ConfigUploadService(context)).GetAwaiter().GetResult();

                ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(ConfigUploadService).Name);

                // Prevents this host process from terminating so services keep running.
                Thread.Sleep(Timeout.Infinite);
            }
            catch (Exception e)
            {
                ServiceEventSource.Current.ServiceHostInitializationFailed(e.ToString());
                throw;
            }
        }
    }
}

Чего мне не хватает?

1 Ответ

0 голосов
/ 14 мая 2018

Шаблон по умолчанию, который вы использовали, нацелен на события телеметрии, события EventSource вашего приложения неизвестны монитору App Insights, поэтому вам нужно настроить конвейер для этих событий, чтобы сообщить, что эти события принадлежат вашему приложению, и вы хотите регистрировать их в AppInsights.

Вы можете увидеть их в окне диагностики, потому что VS регистрируется тогда, когда вы отлаживаете свое приложение.

Я предполагаю, что то, что вы ищете, описано в этой ссылке: сервис-ткань-диагностика-событийно-агрегацию eventflow

Поток событий предоставит вам инструменты, позволяющие сделать это с той же гибкостью, что и для телеметрических событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...