Sdílet prostřednictvím


Kurz: Monitorování a diagnostika aplikace Service Fabric pomocí služby Application Přehledy

Tento kurz je 5 . částí série. Tento postup vás provede postupem konfigurace monitorování a diagnostiky pro aplikaci ASP.NET Core spuštěnou v clusteru Azure Service Fabric pomocí služby Application Přehledy. Shromažďujete telemetrii z aplikace vyvinuté v první části série kurzů.

V tomto kurzu se naučíte:

  • Nastavení prostředku Application Insights
  • Přidání Application Insights do služeb aplikace
  • Zobrazení telemetrie a mapy aplikací v Přehledy aplikací
  • Přidání vlastní instrumentace do aplikace

V této sérii kurzů se dozvíte, jak:

Požadavky

Než začnete s tímto kurzem:

Stažení ukázkové aplikace Voting

Pokud jste nevytvořili ukázkovou aplikaci Voting v první části této série kurzů, můžete si ji stáhnout. Spuštěním následujícího příkazu v příkazovém okně nebo terminálu naklonujte úložiště ukázkové aplikace do místního počítače:

git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart

Nastavení prostředku Application Insights

Aplikační Přehledy je platforma pro správu výkonu aplikací Azure. Doporučujeme používat Přehledy aplikace pro monitorování a diagnostiku aplikací v Service Fabric.

Pokud chcete vytvořit prostředek Přehledy aplikace, přejděte na web Azure Portal. Vyberte Vytvořit prostředek. V nabídce portálu vyberte Monitorování a diagnostika. Ve sloupci Oblíbené služby Azure v části Přehledy aplikace vyberte Vytvořit.

Snímek obrazovky, který ukazuje, jak vytvořit nový prostředek Přehledy aplikace

Zadejte nebo vyberte hodnoty pro předplatné, skupinu prostředků a název. V části Oblast vyberte, kam se má cluster Service Fabric v budoucnu nasadit. V tomto kurzu nasadíme aplikaci do místního clusteru, takže oblast Azure není relevantní. U typu aplikace ponechte ASP.NET webovou aplikaci.

Snímek obrazovky znázorňující atributy prostředků Přehledy aplikace

Pokud jste zadali nebo vybrali požadované informace, vyberte Vytvořit , abyste prostředek zřídili. Prostředek se nasadí přibližně za jednu minutu.

Přidání Application Insights do služeb aplikace

Otevřete Visual Studio 2019 pomocí možnosti Spustit jako správce (klikněte pravým tlačítkem myši na ikonu sady Visual Studio v nabídce Start ). Vyberte Soubor>otevřít>projekt nebo řešení a přejděte do hlasovací aplikace (buď vytvořené v některé části kurzu, nebo naklonované z GitHubu). Otevřete Voting.sln. Pokud se zobrazí výzva k obnovení balíčků NuGet aplikace, vyberte Ano.

Konfigurace aplikačního Přehledy pro služby VotingWeb a VotingData:

  1. Klikněte pravým tlačítkem na název služby a vyberte Přidat> Připojení ed Services>Monitoring with Application Přehledy.

    Snímek obrazovky znázorňující konfiguraci služeb Přehledy aplikací

    Poznámka:

    V závislosti na typu projektu můžete po kliknutí pravým tlačítkem myši na název služby vybrat Přidat a pak vybrat Application Přehledy Telemetry.

  2. Vyberte Začínáme.

  3. Přihlaste se k účtu, který používáte pro předplatné Azure, a vyberte předplatné, ve kterém jste vytvořili prostředek Přehledy aplikace. Pokud chcete najít prostředek, přejděte v části Prostředek do existující aplikace Přehledy prostředek. Vyberte Zaregistrovat a přidejte do služby Přehledy aplikace.

    Snímek obrazovky, který ukazuje, jak zaregistrovat Přehledy aplikace

  4. Vyberte Dokončit.

Poznámka:

Nezapomeňte provést tento postup pro obě služby v aplikaci, aby se dokončila konfigurace aplikačních Přehledy pro aplikaci. Pro obě služby se používá stejný prostředek Application Insights za účelem zobrazení příchozích i odchozích požadavků a komunikace mezi službami.

Přidání balíčku NuGet Microsoft.ApplicationInsights.ServiceFabric.Native do služeb

Aplikační Přehledy má dva balíčky NuGet specifické pro Service Fabric, které můžete použít v závislosti na scénáři. Jeden se používá s nativními službami Service Fabric a druhý s kontejnery a spustitelnými soubory hosta. V tomto případě používáme Microsoft.Application Přehledy. Balíček NuGet ServiceFabric.Native a seznamte se s kontextem služby. Další informace o sadě Application Přehledy SDK a balíčcích NuGet specifických pro Service Fabric najdete v tématu Microsoft Application Přehledy for Service Fabric.

Nastavení balíčku NuGet:

  1. V Průzkumník řešení klikněte pravým tlačítkem na Řešení Voting a vyberte Spravovat balíčky NuGet pro řešení.

  2. V dialogovém okně NuGet – Řešení vyberte Procházet. Zaškrtněte políčko Zahrnout předběžné verze.

    Poznámka:

    Možná budete muset nainstalovat balíček Microsoft.ServiceFabric.Diagnostics.Internal stejným způsobem, pokud nebyl před instalací balíčku Application Přehledy předinstalován.

  3. Vyhledejte Microsoft.Application Přehledy. ServiceFabric.Native a pak vyberte balíček NuGet.

  4. V pravém podokně zaškrtněte políčko VotingWeb a zaškrtávací políčko VotingData . Vyberte volbu Instalovat.

    Snímek obrazovky znázorňující sadu Application Přehledy SDK v NuGetu

  5. V dialogovém okně Náhled změn vyberte OK a přijměte licenci. Balíčky NuGet se přidají do služeb.

  6. Dále nastavte inicializátor telemetrie ve dvou službách. Otevřete VotingWeb.cs a VotingData.cs. V obou souborech kódu proveďte následující kroky:

    1. Za existující using příkazy přidejte tyto dva using příkazy na začátek každého souboru:

      using Microsoft.ApplicationInsights.Extensibility;
      using Microsoft.ApplicationInsights.ServiceFabric;
      
    2. V obou souborech přidejte v vnořeném příkazu nebo v části>servicesConfigureServices s ostatními deklarovanými singletonovými službami:CreateServiceReplicaListeners()CreateServiceInstanceListeners()return

      .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))
      

      Tento kód přidá Service Context do telemetrie, abyste lépe porozuměli zdroji telemetrie v Přehledy aplikace. Váš vnořený return příkaz v VotingWeb.cs teď vypadá podobně jako v tomto příkladu:

      return new WebHostBuilder()
          .UseKestrel()
          .ConfigureServices(
              services => services
                  .AddSingleton<HttpClient>(new HttpClient())
                  .AddSingleton<FabricClient>(new FabricClient())
                  .AddSingleton<StatelessServiceContext>(serviceContext)
                  .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext)))
          .UseContentRoot(Directory.GetCurrentDirectory())
          .UseStartup<Startup>()
          .UseApplicationInsights()
          .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
          .UseUrls(url)
          .Build();
      

V VotingData.cs teď váš kód vypadá podobně jako v tomto příkladu:

return new WebHostBuilder()
    .UseKestrel()
    .ConfigureServices(
        services => services
            .AddSingleton<StatefulServiceContext>(serviceContext)
            .AddSingleton<IReliableStateManager>(this.StateManager)
            .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext)))
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseStartup<Startup>()
    .UseApplicationInsights()
    .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.UseUniqueServiceUrl)
    .UseUrls(url)
    .Build();

Pečlivě zkontrolujte, že UseApplicationInsights() metoda je volána v VotingWeb.cs i VotingData.cs , jak je znázorněno v příkladech.

Poznámka:

Tato ukázková aplikace používá protokol HTTP ke komunikaci služeb. Pokud vyvíjíte aplikaci pomocí Service Fabric Service Remoting V2, přidejte do kódu také následující řádky ve stejném umístění:

ConfigureServices(services => services
    ...
    .AddSingleton<ITelemetryModule>(new ServiceRemotingDependencyTrackingTelemetryModule())
    .AddSingleton<ITelemetryModule>(new ServiceRemotingRequestTrackingTelemetryModule())
)

V tuto chvíli jste připraveni nasadit aplikaci. Vyberte Start (nebo F5). Visual Studio sestaví a zabalí aplikaci, nastaví místní cluster a nasadí aplikaci do clusteru.

Poznámka:

Pokud nemáte nainstalovanou aktuální verzi sady .NET Core SDK, může se zobrazit chyba sestavení.

Po nasazení aplikace přejděte do localhost:8080umístění , kde je spuštěna jednostráková aplikace Voting Sample. Hlasujte pro několik různých položek podle vašeho výběru a vytvořte ukázková data a telemetrii. Například dezerty!

Snímek obrazovky znázorňující příklad hlasování pro typy dezertů

Některé možnosti hlasování můžete odebrat také po přidání několika hlasů.

Zobrazení telemetrie a mapy aplikací v Přehledy aplikací

Na webu Azure Portal přejděte k prostředku Přehledy aplikace.

Výběrem možnosti Přehled se vrátíte do podokna přehledu vašeho prostředku. Výběrem možnosti Hledat zobrazíte trasování, která přicházejí. Zobrazení trasování v Application Insights trvá několik minut. Pokud žádné trasování nevidíte, počkejte minutu a pak vyberte tlačítko Aktualizovat .

Snímek obrazovky znázorňující zobrazení aplikace Přehledy zobrazení trasování

Posuňte se v okně hledání dolů, abyste zobrazili veškerou příchozí telemetrii, která je součástí aplikace Přehledy. Pro každou akci, kterou jste provedli v hlasovací aplikaci, by měl existovat odchozí požadavek PUT z VotingWebu (PUT Votes/Put [name]), příchozí požadavek PUT z VotingData (PUT VoteData /Put [name]) následovaný dvojicí požadavků GET pro aktualizaci zobrazených dat. Trasování závislostí pro protokol HTTP localhost bude také k dispozici, protože tyto požadavky jsou požadavky HTTP. Tady je příklad toho, co vidíte pro přidání jednoho hlasu:

Snímek obrazovky znázorňující trasování ukázkových požadavků v Přehledy aplikace

Pokud chcete zobrazit další podrobnosti, můžete vybrat trasování. Aplikační Přehledy obsahuje užitečné informace o požadavku, včetně hodnot pro dobu odezvy a adresu URL požadavku. Vzhledem k tomu, že jste přidali NuGet specifický pro Service Fabric, získáte také data o vaší aplikaci v kontextu clusteru Service Fabric v části Vlastní data . Data zahrnují kontext služby, takže můžete zobrazit hodnoty PartitionID a ReplicaId zdroje požadavku a lépe izolovat problémy při diagnostice chyb v aplikaci.

Snímek obrazovky znázorňující podrobnosti trasování Přehledy aplikace

Pokud chcete přejít na mapu aplikace, vyberte v nabídce prostředku v podokně Přehled mapu nebo vyberte ikonu Mapy aplikace. Mapa zobrazuje vaše dvě připojené služby.

Snímek obrazovky se zvýrazněnou mapou aplikace v nabídce prostředků

Mapa aplikací vám může pomoct lépe porozumět topologii vaší aplikace, zejména když začnete přidávat služby, které spolupracují. Poskytuje také základní data o úspěšnosti požadavků a může vám pomoct diagnostikovat neúspěšný požadavek, abyste pochopili, kde se něco pokazilo. Další informace najdete v tématu Mapa aplikace v Přehledy aplikace.

Přidání vlastní instrumentace do aplikace

I když Přehledy aplikace poskytuje telemetrii, možná budete chtít přidat vlastní instrumentaci. Možná máte obchodní potřeby pro vlastní instrumentaci nebo chcete zlepšit diagnostiku, když se něco v aplikaci nepovedlo. Vlastní události a metriky můžete ingestovat pomocí rozhraní API Přehledy aplikace.

Dále přidejte do VoteDataController.cs (vControllersVotingData>) několik vlastních událostí ke sledování, kdy se přidávají a odstraňují hlasy z podkladového votesDictionarysouboru:

  1. Přidejte using Microsoft.ApplicationInsights; na konec ostatních using příkazů.

  2. Deklarujte novou hodnotu na TelemetryClient začátku třídy pod vytvořením IReliableStateManager: private TelemetryClient telemetry = new TelemetryClient();.

  3. Put() Do funkce přidejte událost, která potvrzuje, že je přidán hlas. Přidejte telemetry.TrackEvent($"Added a vote for {name}"); po dokončení transakce přímo před příkaz return OkResult .

  4. V závislosti na podmínce, která votesDictionary obsahuje hlasy pro konkrétní volbu hlasování, je v Delete()něm "if/else".

    1. Přidejte událost, která potvrdí odstranění hlasu if v příkazu za await tx.CommitAsync(): telemetry.TrackEvent($"Deleted votes for {name}");
    2. Přidejte událost, která před příkazem ukázala, return že odstranění neprobíhá v else příkazu:telemetry.TrackEvent($"Unable to delete votes for {name}, voting option not found");

Tady je příklad toho, jak Put() vaše funkce Delete() můžou vypadat po přidání událostí:

// PUT api/VoteData/name
[HttpPut("{name}")]
public async Task<IActionResult> Put(string name)
{
    var votesDictionary = await this.stateManager.GetOrAddAsync<IReliableDictionary<string, int>>("counts");

    using (ITransaction tx = this.stateManager.CreateTransaction())
    {
        await votesDictionary.AddOrUpdateAsync(tx, name, 1, (key, oldvalue) => oldvalue + 1);
        await tx.CommitAsync();
    }

    telemetry.TrackEvent($"Added a vote for {name}");
    return new OkResult();
}

// DELETE api/VoteData/name
[HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name)
{
    var votesDictionary = await this.stateManager.GetOrAddAsync<IReliableDictionary<string, int>>("counts");

    using (ITransaction tx = this.stateManager.CreateTransaction())
    {
        if (await votesDictionary.ContainsKeyAsync(tx, name))
        {
            await votesDictionary.TryRemoveAsync(tx, name);
            await tx.CommitAsync();
            telemetry.TrackEvent($"Deleted votes for {name}");
            return new OkResult();
        }
        else
        {
            telemetry.TrackEvent($"Unable to delete votes for {name}, voting option not found");
            return new NotFoundResult();
        }
    }
}

Po dokončení těchto změn vyberte Spustit v aplikaci, aby se sestavil a nasadil nejnovější verzi. Po dokončení nasazení aplikace přejděte na localhost:8080. Přidejte a odstraňte některé možnosti hlasování. Pak se vraťte k prostředku Přehledy aplikace a podívejte se na trasování pro nejnovější spuštění (trasování trvá 1 až 2 minuty, než se zobrazí v Přehledy aplikace). U všech hlasů, které jste přidali a odstranili, by se teď měla zobrazit položka pro vlastní událost s přidruženou telemetrií odpovědí.

Snímek obrazovky znázorňující vlastní události