EventCounters – bevezetés
EventCounter
.NET/.NET Core-mechanizmus számlálók vagy statisztikák közzétételére és felhasználására. Az EventCounters minden operációsrendszer-platformon támogatott – Windows, Linux és macOS. Platformfüggetlen egyenértékűnek tekinthető a PerformanceCounters esetében, amelyet csak Windows-rendszerek támogatnak.
Bár a felhasználók bármilyen egyénit EventCounters
közzétehetnek az igényeiknek megfelelően, a .NET alapértelmezés szerint közzéteszi ezeknek a számlálóknak a készletét. Ez a dokumentum végigvezeti a Azure-alkalmazás Insightsban a (rendszer által definiált vagy felhasználó által definiált) adatgyűjtéshez és megtekintéshez EventCounters
szükséges lépéseket.
Feljegyzés
Az alábbi dokumentáció a klasszikus Application Insights API-ra támaszkodik. Az Application Insights hosszú távú terve, hogy adatokat gyűjtsön az OpenTelemetry használatával. További információ: Az Azure Monitor OpenTelemetria engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz , valamint az OpenTelemetria ütemterve. A migrálási útmutató a .NET, a Node.js és a Python esetében érhető el.
Az Application Insights használata az EventCounters gyűjtéséhez
Az Application Insights támogatja a gyűjtést EventCounters
az EventCounterCollectionModule
újonnan kiadott Microsoft.ApplicationInsights.EventCounterCollector NuGet-csomag részeként. EventCounterCollectionModule
A automatikusan engedélyezve van az AspNetCore vagy a WorkerService használatakor. EventCounterCollectionModule
60 másodperces nem konfigurálható gyűjtési gyakorisággal gyűjti a számlálókat. Az EventCounters gyűjtéséhez nincs szükség különleges engedélyekre. Az ASP.NET Core-alkalmazásokhoz a Microsoft.ApplicationInsights.AspNetCore csomagot is hozzá kell adnia.
dotnet add package Microsoft.ApplicationInsights.EventCounterCollector
dotnet add package Microsoft.ApplicationInsights.AspNetCore
Összegyűjtött alapértelmezett számlálók
Az AspNetCore SDK vagy a WorkerService SDK 2.15.0-s verziójától kezdve alapértelmezés szerint nem gyűjt számlálókat. Maga a modul engedélyezve van, így a felhasználók hozzáadhatják a kívánt számlálókat az adatgyűjtéshez.
A .NET-futtatókörnyezet által közzétett jól ismert számlálók listájának lekéréséhez tekintse meg az Elérhető számlálók dokumentumot.
Gyűjtendő számlálók testreszabása
Az alábbi példa a számlálók hozzáadását/eltávolítását mutatja be. Ezt a testreszabást az alkalmazásszolgáltatás konfigurációjának részeként kell elvégezni, miután az Application Insights telemetriai gyűjtemény engedélyezve lett az AddApplicationInsightsTelemetry()
egyik vagy AddApplicationInsightsWorkerService()
a . Az alábbi példakód egy ASP.NET Core-alkalmazásból származik. Más típusú alkalmazások esetén tekintse meg ezt a dokumentumot.
using Microsoft.ApplicationInsights.Extensibility.EventCounterCollector;
using Microsoft.Extensions.DependencyInjection;
builder.Services.ConfigureTelemetryModule<EventCounterCollectionModule>(
(module, o) =>
{
// Removes all default counters, if any.
module.Counters.Clear();
// Adds a user defined counter "MyCounter" from EventSource named "MyEventSource"
module.Counters.Add(
new EventCounterCollectionRequest("MyEventSource", "MyCounter"));
// Adds the system counter "gen-0-size" from "System.Runtime"
module.Counters.Add(
new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
}
);
Az EventCounter gyűjteménymodul letiltása
EventCounterCollectionModule
funkcióval ApplicationInsightsServiceOptions
le lehet tiltani.
Az alábbi példa a ASP.NET Core SDK-t használja.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);
Hasonló megközelítés használható a WorkerService SDK-hoz is, de a névteret módosítani kell az alábbi példában látható módon.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);
Eseményszámlálók a Metric Explorerben
Az EventCounter-metrikák a Metric Explorerben való megtekintéséhez válassza az Application Insights-erőforrást, és válassza a naplóalapú metrikákat metrikanévtérként. Ezután az EventCounter-metrikák megjelennek az Egyéni kategóriában.
Eseményszámlálók az Analyticsben
A customMetrics táblában az Analyticsben is kereshet és jeleníthet meg eseményszámláló jelentéseket.
Futtassa például a következő lekérdezést, hogy lássa, milyen számlálók vannak összegyűjtve és elérhetők a lekérdezéshez:
customMetrics | summarize avg(value) by name
Ha egy adott számláló diagramját (például: ThreadPool Completed Work Item Count
) szeretné lekérni az elmúlt időszakban, futtassa az alábbi lekérdezést.
customMetrics
| where name contains "System.Runtime|ThreadPool Completed Work Item Count"
| where timestamp >= ago(1h)
| summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
A többi telemetriához hasonlóan a customMetrics is rendelkezik egy oszloppalcloud_RoleInstance
, amely annak a gazdagépkiszolgáló-példánynak az identitását jelzi, amelyen az alkalmazás fut. A fenti lekérdezés a példányonkénti számlálóértéket jeleníti meg, és a különböző kiszolgálópéldányok teljesítményének összehasonlítására használható.
Riasztások
Más metrikákhoz hasonlóan riasztást is beállíthat, amely figyelmezteti, ha egy eseményszámláló túllépi a megadott korlátot. Nyissa meg a Riasztások panelt, és válassza a Riasztás hozzáadása lehetőséget.
Gyakori kérdések
Láthatom az EventCounterst az élő metrikákban?
Az élő metrikák jelenleg nem jelenítik meg az EventCounterst. A telemetriai adatok megtekintéséhez használja a Metric Explorert vagy az Analyticset.
Engedélyeztem az Application Insights szolgáltatást az Azure Web App Portalon. Miért nem látom az EventCounterst?
A ASP.NET Core Application Insights-bővítménye még nem támogatja ezt a funkciót.