Oktatóanyag: Service Fabric-alkalmazások monitorozása és diagnosztizálása az Application Insights használatával
Ez az oktatóanyag egy sorozat ötödik része. Végigvezeti az Azure Service Fabric-fürtön futó ASP.NET Core-alkalmazások monitorozásának és diagnosztikáinak konfigurálásához szükséges lépéseket az Application Insights használatával. Telemetriát gyűjt az oktatóanyag-sorozat első részében kifejlesztett alkalmazásból.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Application Insights-erőforrás beállítása
- Az Application Insights hozzáadása az alkalmazás szolgáltatásaihoz
- Telemetria és alkalmazástérkép megtekintése az Application Insightsban
- Egyéni kialakítás hozzáadása az alkalmazáshoz
Az oktatóanyag-sorozat bemutatja, hogyan:
- .NET Service Fabric-alkalmazás létrehozása
- Az alkalmazás üzembe helyezése egy távoli fürtön
- HTTPS-végpont hozzáadása ASP.NET Core kezelőfelületi szolgáltatáshoz
- CI/CD konfigurálása az Azure Pipelines használatával
- Monitorozás és diagnosztika beállítása az alkalmazáshoz (ez az oktatóanyag)
Előfeltételek
Az oktatóanyag elkezdése előtt:
- Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot.
- Telepítse a Visual Studio 2019-et, beleértve az Azure fejlesztési számítási feladatait, valamint a ASP.NET és a webfejlesztési számítási feladatokat.
- A Service Fabric SDK telepítése.
A mintául szolgáló szavazóalkalmazás letöltése
Ha nem az oktatóanyag-sorozat első részében készítette el a Voting mintaalkalmazást, letöltheti. Egy parancsablakban vagy terminálon futtassa a következő parancsot a mintaalkalmazás-adattár klónozásához a helyi számítógépre:
git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart
Application Insights-erőforrás beállítása
Az Application Insights az Azure-alkalmazások teljesítménykezelési platformja. Javasoljuk, hogy az Application Insightst használja az alkalmazásfigyeléshez és a diagnosztikahoz a Service Fabricben.
Application Insights-erőforrás létrehozásához nyissa meg az Azure Portalt. Válassza az Erőforrás létrehozása lehetőséget. A portál menüjében válassza a Figyelés + Diagnosztika lehetőséget. A Népszerű Azure-szolgáltatások oszlopban az Application Insights alatt válassza a Létrehozás lehetőséget.
Adja meg vagy válassza ki az előfizetés, az erőforráscsoport és a név értékeit. Régió esetén válassza ki, hogy a jövőben hol helyezze üzembe a Service Fabric-fürtöt. Ebben az oktatóanyagban egy helyi fürtön helyezzük üzembe az alkalmazást, így az Azure-régió nem releváns. Alkalmazástípus esetén hagyja ASP.NET webalkalmazásként.
Amikor megadta vagy kiválasztotta a szükséges információkat, válassza a Létrehozás lehetőséget az erőforrás kiépítéséhez. Az erőforrás üzembe helyezése körülbelül egy perc alatt történik.
Az Application Insights hozzáadása az alkalmazás szolgáltatásaihoz
Nyissa meg a Visual Studio 2019-et a Futtatás rendszergazdaként lehetőséggel (kattintson a jobb gombbal a Visual Studio ikonra a Start menüben). Válassza a Fájl>megnyitása>projekt/megoldás lehetőséget, és nyissa meg a szavazóalkalmazást (vagy az oktatóanyag első részében létrehozott vagy a GitHubról klónozott). Nyissa meg a Voting.sln. Ha a rendszer kéri az alkalmazás NuGet-csomagjainak visszaállítását, válassza az Igen lehetőséget.
Az Application Insights konfigurálása a VotingWeb és a VotingData szolgáltatásokhoz:
Kattintson a jobb gombbal a szolgáltatás nevére, és válassza a Csatlakoztatott szolgáltatások>monitorozásának hozzáadása>az Application Insights használatával lehetőséget.
Feljegyzés
A projekt típusától függően, amikor a jobb gombbal a szolgáltatás nevére kattint, szükség lehet a Hozzáadás gombra, majd az Application Insights telemetriai adatainak kiválasztására.
Válassza az Első lépések lehetőséget.
Jelentkezzen be az Azure-előfizetéséhez használt fiókba, és válassza ki azt az előfizetést, amelyben létrehozta az Application Insights-erőforrást. Az erőforrás megkereséséhez nyissa meg a Meglévő Application Insights-erőforrást az Erőforrás területen. Válassza a Regisztráció lehetőséget az Application Insights szolgáltatáshoz való hozzáadásához.
Válassza a Befejezéslehetőséget.
Feljegyzés
Az Application Insights alkalmazáshoz való konfigurálásának befejezéséhez mindenképpen végezze el ezeket a lépéseket az alkalmazás mindkét szolgáltatásához. A rendszer ugyanazt az Application Insights-erőforrást használja mindkét szolgáltatáshoz, hogy lássa a bejövő és a kimenő kéréseket, és kommunikáljon a szolgáltatások között.
A Microsoft.ApplicationInsights.ServiceFabric.Native NuGet hozzáadása a szolgáltatásokhoz
Az Application Insights két Service Fabric-specifikus NuGet-csomaggal rendelkezik, amelyeket a forgatókönyvtől függően használhat. Az egyiket a Service Fabric natív szolgáltatásaival, a másikat tárolókkal és vendég végrehajtható fájlokkal használják. Ebben az esetben a Microsoft.ApplicationInsights.ServiceFabric.Native NuGet csomagot használjuk a szolgáltatáskörnyezet megismeréséhez. További információ az Application Insights SDK-ról és a Service Fabric-specifikus NuGet-csomagokról: Microsoft Application Insights for Service Fabric.
A NuGet-csomag beállítása:
A Megoldáskezelő kattintson a jobb gombbal a "Szavazás" megoldásra, és válassza a Megoldáshoz készült NuGet-csomagok kezelése lehetőséget.
A NuGet – Megoldás párbeszédpanelen válassza a Tallózás lehetőséget. Jelölje be az Előzetes befoglalás jelölőnégyzetet.
Feljegyzés
Előfordulhat, hogy a Microsoft.ServiceFabric.Diagnostics.Internal csomagot ugyanúgy kell telepítenie, ha nem lett előre telepítve az Application Insights-csomag telepítése előtt.
Keresse meg a Microsoft.ApplicationInsights.ServiceFabric.Native fájlt, majd válassza ki a NuGet-csomagot.
A jobb oldali panelen jelölje be a VotingWeb jelölőnégyzetet és a VotingData jelölőnégyzetet. Válassza a Telepítés lehetőséget.
A Módosítások előnézete párbeszédpanelen kattintson az OK gombra a licenc elfogadásához. A NuGet-csomagok hozzá lesznek adva a szolgáltatásokhoz.
Ezután állítsa be a telemetriai inicializálót a két szolgáltatásban. Nyissa meg VotingWeb.cs és VotingData.cs. Hajtsa végre a következő lépéseket mindkét kódfájlban:
Adja hozzá ezt a két
using
utasítást az egyes fájlok tetején, a meglévőusing
utasítások után:using Microsoft.ApplicationInsights.Extensibility; using Microsoft.ApplicationInsights.ServiceFabric;
Mindkét fájlban a többi singleton-szolgáltatás beágyazott
return
utasításábanCreateServiceInstanceListeners()
CreateServiceReplicaListeners()
vagy alattaConfigureServices
>services
adja hozzá a következőt:.AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))
Ez a kód hozzáadja
Service Context
a telemetriát, így jobban megismerheti a telemetriai adatok forrását az Application Insightsban. Az VotingWeb.cs beágyazottreturn
utasítása most az alábbi példához hasonlóan néz ki: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();
A VotingData.cs a kód az alábbi példához hasonlóan néz ki:
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();
Ellenőrizze, hogy a UseApplicationInsights()
metódus VotingWeb.cs és VotingData.cs is szerepel-e a példában látható módon.
Feljegyzés
Ez a mintaalkalmazás HTTP-t használ a szolgáltatások kommunikációhoz. Ha a Service Fabric Service Remoting V2 használatával fejleszt alkalmazást, adja hozzá a következő sorokat is a kód ugyanazon helyére:
ConfigureServices(services => services
...
.AddSingleton<ITelemetryModule>(new ServiceRemotingDependencyTrackingTelemetryModule())
.AddSingleton<ITelemetryModule>(new ServiceRemotingRequestTrackingTelemetryModule())
)
Ezen a ponton készen áll az alkalmazás üzembe helyezésére. Válassza a Start (vagy az F5) lehetőséget. A Visual Studio létrehozza és csomagolja az alkalmazást, beállítja a helyi fürtöt, és üzembe helyezi az alkalmazást a fürtön.
Feljegyzés
Buildelési hibát kaphat, ha nincs telepítve a .NET Core SDK naprakész verziója.
Az alkalmazás üzembe helyezésekor lépjen oda localhost:8080
, ahol a szavazóminta egyoldalas alkalmazás fut. Szavazzon néhány választható elemre, hogy létrehozzon néhány mintaadatot és telemetriát. Például desszertek!
A szavazatok egy részét is eltávolíthatja, ha elkészült néhány szavazat hozzáadásával.
Telemetria és alkalmazástérkép megtekintése az Application Insightsban
Az Azure Portalon nyissa meg az Application Insights-erőforrást.
Válassza az Áttekintés lehetőséget az erőforrás áttekintési paneljére való visszalépéshez. Válassza a Keresés lehetőséget a beérkező nyomkövetések megtekintéséhez. Néhány percig tart, amíg a nyomok megjelennek az Application Insightsban. Ha nem lát nyomokat, várjon egy percet, majd válassza a Frissítés gombot.
Görgessen le a keresési ablakban az Application Insightshoz kapcsolódó összes bejövő telemetria megtekintéséhez. A szavazóalkalmazásban végzett minden művelethez rendelkeznie kell egy kimenő PUT kéréssel a VotingWebtől (PUT Votes/Put [név]), egy bejövő PUT kérést a VotingData-ból (PUT VoteData/Put [név]), majd egy get kérést a megjelenített adatok frissítésére. A HTTP-hez függőségi nyomkövetés is lesz, localhost
mivel ezek a kérések HTTP-kérések. Íme egy példa arra, hogy mit lát egy szavazás hozzáadásához:
A nyomkövetés kiválasztásával további részleteket is megtekinthet róla. Az Application Insights hasznos információkat tartalmaz a kérésről, beleértve a válaszidő és a kérelem URL-címének értékeit. Mivel hozzáadta a Service Fabric-specifikus NuGetet, az egyéni adatok szakaszban egy Service Fabric-fürt kontextusában is lekérheti az alkalmazás adatait. Az adatok tartalmazzák a szolgáltatáskörnyezetet, így megtekintheti a kérelem forrásának PartitionID és ReplicaId értékeit, és jobban elkülönítheti a problémákat az alkalmazás hibáinak diagnosztizálásakor.
Az Alkalmazástérkép megnyitásához válassza az Alkalmazástérkép lehetőséget az Erőforrás menü Áttekintés panelén, vagy válassza az Alkalmazástérkép ikont. A térképen a két csatlakoztatott szolgáltatás látható.
Az Alkalmazástérkép segítségével jobban megértheti az alkalmazástopológiát, különösen akkor, amikor elkezdi a közösen működő szolgáltatások hozzáadását. Emellett alapszintű adatokat is biztosít a kérelmek sikerességi arányáról, és segíthet diagnosztizálni a sikertelen kéréseket, hogy megértse, hol történt a hiba. További információ: Application Map in Application Insights.
Egyéni kialakítás hozzáadása az alkalmazáshoz
Bár az Application Insights telemetriát biztosít a mezőből, érdemes lehet egyéni rendszerezést hozzáadni. Lehet, hogy üzleti igényei vannak az egyéni kialakításhoz, vagy javítani szeretné a diagnosztikát, amikor a dolgok elromlanak az alkalmazásban. Az Application Insights API használatával egyéni eseményeket és metrikákat is betölthet.
Ezután adjon hozzá néhány egyéni eseményt a VoteDataController.cs (inControllers
VotingData
>) elemhez, hogy nyomon kövesse a szavazatok hozzáadásának és törlésének időpontját az alapul szolgálóbólvotesDictionary
:
Adja hozzá
using Microsoft.ApplicationInsights;
a többiusing
utasítás végén.Deklaráljon egy új értéket
TelemetryClient
az osztály elején, a következő létrehozásaIReliableStateManager
alatt:private TelemetryClient telemetry = new TelemetryClient();
.A függvényben
Put()
adjon hozzá egy eseményt, amely megerősíti a szavazat hozzáadását. Hozzáadástelemetry.TrackEvent($"Added a vote for {name}");
a tranzakció befejezése után, közvetlenül a visszatérésiOkResult
utasítás előtt.Ebben
Delete()
az esetben egy "if/else" van azon feltétel alapján, amelyvotesDictionary
egy adott szavazási lehetőségre vonatkozó szavazatokat tartalmaz.- Adjon hozzá egy eseményt, amely megerősíti a szavazás törlését a
if
nyilatkozatban a következő utánawait tx.CommitAsync()
:telemetry.TrackEvent($"Deleted votes for {name}");
- Adjon hozzá egy eseményt, amely azt mutatja, hogy a törlés nem az
else
utasításban történt azreturn
utasítás előtt:telemetry.TrackEvent($"Unable to delete votes for {name}, voting option not found");
- Adjon hozzá egy eseményt, amely megerősíti a szavazás törlését a
Íme egy példa arra, hogyan nézhetnek ki a Put()
Delete()
függvények az események hozzáadása után:
// 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();
}
}
}
Amikor befejezte a módosításokat, válassza a Start lehetőséget az alkalmazásban, hogy az létrehozza és üzembe helyezze a legújabb verziót. Ha az alkalmazás üzembe helyezése befejeződött, nyissa meg a következőt localhost:8080
: . Adjon hozzá és töröljön néhány szavazási lehetőséget. Ezután térjen vissza az Application Insights-erőforráshoz, és tekintse meg a legújabb futtatás nyomkövetéseit (a nyomkövetések 1–2 percet vesznek igénybe az Application Insightsban való megjelenéshez). A hozzáadott és törölt szavazatok esetében most már látnia kell egy bejegyzést az egyéni eseményhez a kapcsolódó választelemetria használatával.
Kapcsolódó tartalom
- További információ a Service Fabric monitorozásáról és diagnosztikáról.
- Tekintse át a Service Fabric eseményelemzését az Application Insights használatával.
- További információ az Application Insightsról.