Gyakorlat – Telemetria kiterjesztése a .NET 8-ban
Az aktuális eShopLite alkalmazás az OpenTelemetria által megadott alapértelmezett telemetriát használja. A telemetriát úgy bővítheti, ha egyéni metrikákat és egyéni attribútumokat ad hozzá a telemetriai adatokhoz. Ez a funkció lehetővé teszi, hogy több kontextust adjon hozzá a telemetriai adatokhoz, és hatékonyabb lekérdezéseket hozzon létre az Alkalmazás Elemzések.
Ebben a gyakorlatban új metrikákat ad hozzá az alkalmazásokhoz, és megtudhatja, hogyan tekintheti meg őket a megfigyelhető alkalmazásokban.
Egyéni metrikák létrehozása
Szeretné jobban áttekinteni, hogyan változik egy részvény az idő múlásával, ezért egyéni metrikát hoz létre.
A Visual Studio Code EXPLORER ablaktábláján kattintson a jobb gombbal a Termékek mappára, majd válassza az Új fájl lehetőséget.
A Fájlnév mezőbe írja be a ProductsMetrics.cs.
A szövegszerkesztőben cserélje le a kódot a következő példára:
using System; using System.Diagnostics.Metrics; public class ProductsMetrics { private readonly Counter<int> _serviceCalls; private readonly Counter<int> _stockChange; public ProductsMetrics(IMeterFactory meterFactory) { var meter = meterFactory.Create("eShopLite.Products"); _stockChange = meter.CreateCounter<int>("eshoplite.products.stock_change", unit: "{stock}", description: "Amount of stock being changed through the product service."); } public void StockChange(int quantity) { _stockChange.Add(quantity); } }
Az előző kód létrehoz egy új, .
eshoplite.products.stock_change
Ez a metrika nyomon követi a termékszolgáltatáson keresztül módosítandó készlet mennyiségét.Mentse a fájlt a Ctrl+S billentyűkombinációval.
Az EXPLORER panel Termékek mappájában válassza a Program.cs.
Cserélje le a
AddObservability
kódot a következő kódra:builder.Services.AddObservability("Products", builder.Configuration, ["eShopLite.Products"]); // Register the metrics service. builder.Services.AddSingleton<ProductsMetrics>();
Ez a kód hozzáadja az
ProductsMetrics
osztályt a függőséginjektálási tárolóhoz.Mentse a fájlt a Ctrl+S billentyűkombinációval.
Az EXPLORER panel Termékek mappájában bontsa ki a Végpont mappát, majd válassza a ProductEndpoints.cs.
Cserélje le a meglévő készletfrissítési
MapPut
végpontot a következő kódra:stock.MapPut("/{id}", async (int id, int stockAmount, ProductDataContext db, ProductsMetrics metrics) => { // Increment the stock change metric. metrics.StockChange(stockAmount); var affected = await db.Product .Where(model => model.Id == id) .ExecuteUpdateAsync(setters => setters .SetProperty(m => m.Stock, stockAmount) ); return affected == 1 ? Results.Ok() : Results.NotFound(); })
Függőséginjektálás használatával adja hozzá az osztályt
ProductsMetrics
a végponthoz. Ezután meghívja a metódust,StockChange
hogy növelje a metrikát az új részvényösszeggel.Mentse a fájlt a Ctrl+S billentyűkombinációval.
Metrika hozzáadása az OpenTelemetryhez
Most hozzáadja a metrikát az OpenTelemetryhez, hogy exportálható legyen a megfigyelhetőségi eszközökbe.
Az EXPLORER panel Diagnosztikai mappájában válassza a DiagnosticServiceCollectionExtensions lehetőséget.
Módosítsa a metódust
AddObservability
egy új paraméter elfogadásához:public static IServiceCollection AddObservability(this IServiceCollection services, string serviceName, IConfiguration configuration, string[]? meeterNames = null)
A Prometheus exportőr sor alatt adja hozzá a következő kódot:
.AddPrometheusExporter(); // add any additional meters provided by the caller if (meeterNames != null) { foreach (var name in meeterNames) { metrics.AddMeter(name); } }
Mentse a fájlt a Ctrl+S billentyűkombinációval.
Az új metrika megtekintése a Prometheusban
A TERMINÁL panel alján lépjen a dotnet-observability/eShopLite mappára.
cd ..
Frissítse az alkalmazástárolókat.
dotnet publish /p:PublishProfile=DefaultContainer
Nyissa meg a dotnet-observability mappát, és indítsa el az alkalmazást a Dockerrel:
cd .. docker compose up
Nyissa meg az eShopLite alkalmazást egy böngészőben a következő címen
http://localhost:32000
: .Lépjen a Termékek lapra, és módosítsa a készlet összegét több terméken.
Nyissa meg a Prometheus irányítópultot a következő helyen
http://localhost:9090
: .A keresőmezőbe írja be a metrikát, majd válassza az
eshoplite_products_stock_change_total
Végrehajtás lehetőséget.Látnia kell egy táblázatban.
Válassza a Graph lapot. A készlet mennyiségének időbeli változását kell látnia.
A TERMINÁL panelen nyomja le a Ctrl C billentyűkombinációt +az alkalmazás leállításához.