Mått i Application Insights
Application Insights stöder tre olika typer av mått: standard (föraggregering), loggbaserade och anpassade mått. Var och en ger ett unikt värde för övervakning av programmets hälsa, diagnostik och analys. Utvecklare som instrumenterar program kan bestämma vilken typ av mått som passar bäst för ett visst scenario. Beslut baseras på programmets storlek, förväntad mängd telemetri och affärskrav för måttprecision och aviseringar. Den här artikeln förklarar skillnaden mellan alla måtttyper som stöds.
Standardmått
Standardmått i Application Insights är fördefinierade mått som samlas in och övervakas automatiskt av tjänsten. Dessa mått omfattar ett brett utbud av prestanda- och användningsindikatorer, till exempel CPU-användning, minnesförbrukning, begärandefrekvens och svarstider. Standardmått ger en omfattande översikt över programmets hälsa och prestanda utan att det krävs någon ytterligare konfiguration. Standardmått föraggregeras under samlingen och lagras som en tidsserie på en specialiserad lagringsplats med endast nyckeldimensioner, vilket ger dem bättre prestanda vid frågetillfället. Detta gör standardmått till det bästa valet för nästan realtidsaviseringar för måttdimensioner och mer dynamiska instrumentpaneler.
Loggbaserade mått
Loggbaserade mått i Application Insights är ett frågetidskoncept som representeras som en tidsserie ovanpå programmets loggdata. De underliggande loggarna är inte föraggregerade vid insamlings- eller lagringstiden och behåller alla egenskaper för varje loggpost. Den här kvarhållningen gör det möjligt att använda loggegenskaper som dimensioner på loggbaserade mått vid frågetillfället för filtrering av måttdiagram och måttdelning, vilket ger loggbaserade mått ett överlägset analytiskt och diagnostiskt värde. Tekniker för minskning av telemetrivolymer som sampling och telemetrifiltrering, som ofta används för att övervaka program som genererar stora mängder telemetri, påverkar dock antalet insamlade loggposter och minskar därför noggrannheten för loggbaserade mått.
Anpassade mått (förhandsversion)
Med anpassade mått i Application Insights kan du definiera och spåra specifika mått som är unika för ditt program. Dessa mått kan skapas genom att instrumentera koden för att skicka anpassade telemetridata till Application Insights. Anpassade mått ger flexibiliteten att övervaka alla aspekter av ditt program som inte omfattas av standardmått, så att du kan få djupare insikter om programmets beteende och prestanda.
Mer information finns i Anpassade mått i Azure Monitor (förhandsversion).
Kommentar
Application Insights innehåller också en funktion som kallas Live Metrics-ström, vilket möjliggör övervakning i nära realtid av dina webbprogram och inte lagrar några telemetridata.
Jämförelse av mått
Funktion | Standardmått | Loggbaserade mått | Anpassade mått |
---|---|---|---|
Datakälla | Föraggregerade tidsseriedata som samlats in under körning. | Härleds från loggdata med kusto-frågor. | Användardefinierade mått som samlas in via Application Insights SDK eller API. |
Granularitet | Fasta intervall (1 minut). | Beror på själva loggdatans kornighet. | Flexibel kornighet baserat på användardefinierade mått. |
Noggrannhet | Hög, påverkas inte av loggsampling. | Kan påverkas av sampling och filtrering. | Hög noggrannhet, särskilt när du använder föraggregerade metoder som GetMetric. |
Kostnad | Ingår i prissättningen för Application Insights. | Baserat på loggdatainmatning och frågekostnader. | Se Prismodell och kvarhållning. |
Konfiguration | Automatiskt tillgänglig med minimal konfiguration. | Kräv konfiguration av loggfrågor för att extrahera önskade mått från loggdata. | Kräver anpassad implementering och konfiguration i kod. |
Frågeprestanda | Snabb på grund av föraggregering. | Långsammare eftersom det handlar om att köra frågor mot loggdata. | Beror på datavolym och frågekomplexitet. |
Storage | Lagras som tidsseriedata i Azure Monitor-måttlagret. | Lagras som loggar på Log Analytics-arbetsytan. | Lagras i både Log Analytics och Azure Monitor-måttarkivet. |
Aviseringar | Stöder realtidsaviseringar. | Möjliggör komplexa aviseringsscenarier baserat på detaljerade loggdata. | Flexibel avisering baserat på användardefinierade mått. |
Tjänstgräns | Omfattas av Application Insights-gränser. | Omfattas av begränsningar för Log Analytics-arbetsytor. | Begränsas av kvoten för kostnadsfria mått och kostnaden för ytterligare dimensioner. |
Användningsfall | Realtidsövervakning, prestandainstrumentpaneler och snabba insikter. | Detaljerad diagnostik, felsökning och djupgående analys. | Skräddarsydda prestandaindikatorer och affärsspecifika mått. |
Exempel | CPU-användning, minnesanvändning, varaktighet för begäran. | Antal begäranden, undantagsspårningar, beroendeanrop. | Anpassade programspecifika mått som användarengagemang, funktionsanvändning. |
Föraggregering av mått
OpenTelemetry SDK:er och nyare Application Insights SDK:er (klassiskt API) föraggregerar mått under samlingen för att minska mängden data som skickas från SDK:n till telemetrikanalslutpunkten. Den här processen gäller standardmått som skickas som standard, så noggrannheten påverkas inte av sampling eller filtrering. Det gäller även anpassade mått som skickas med hjälp av OpenTelemetry API eller GetMetric och TrackValue, vilket resulterar i mindre datainmatning och lägre kostnad. Om din version av Application Insights SDK stöder GetMetric och TrackValue är det den bästa metoden för att skicka anpassade mått.
För SDK:er som inte implementerar föraggregering (dvs. äldre versioner av Application Insights SDK:er eller för webbläsarinstrumentation) fyller Application Insights-serverdelen fortfarande de nya måtten genom att aggregera de händelser som tas emot av Application Insights telemetrikanalslutpunkt. För anpassade mått kan du använda metoden trackMetric . Även om du inte drar nytta av den minskade mängden data som överförs via kabeln kan du fortfarande använda de föraggregerade måtten och få bättre prestanda och stöd för den nästan realtidsdimensionella aviseringen med SDK:er som inte föraggregerar mått under samlingen.
Telemetrikanalens slutpunkt föraggregerar händelser före inmatningssampling. Därför påverkar inmatningssampling aldrig noggrannheten för föraggregerade mått, oavsett vilken SDK-version du använder med ditt program.
Följande tabeller visar en lista över föraggregeringar.
Föraggregering av mått med Azure Monitor OpenTelemetry Distro
Aktuell produktions-SDK | Föraggregering av standardmått | Föraggregering av anpassade mått |
---|---|---|
ASP.NET Core | SDK | SDK via OpenTelemetry API |
.NET (via exportören) | SDK | SDK via OpenTelemetry API |
Java (3.x) | SDK | SDK via OpenTelemetry API |
Java-inbyggt | SDK | SDK via OpenTelemetry API |
Node.js | SDK | SDK via OpenTelemetry API |
Python | SDK | SDK via OpenTelemetry API |
Föraggregering av mått med Application Insights SDK (klassiskt API)
Aktuell produktions-SDK | Föraggregering av standardmått | Föraggregering av anpassade mått |
---|---|---|
.NET Core och .NET Framework | SDK (V2.13.1+) | SDK (V2.7.2+) via GetMetric Telemetrikanalslutpunkt via TrackMetric |
Java (2.x) | Slutpunkt för telemetrikanal | Telemetrikanalslutpunkt via TrackMetric |
JavaScript (webbläsare) | Slutpunkt för telemetrikanal | Telemetrikanalslutpunkt via TrackMetric |
Node.js | Slutpunkt för telemetrikanal | Telemetrikanalslutpunkt via TrackMetric |
Python | Slutpunkt för telemetrikanal | SDK via OpenCensus.stats (pensionerad) Telemetrikanalslutpunkt via TrackMetric |
Varning
Application Insights Java 2.x SDK rekommenderas inte längre. Använd det OpenTelemetry-baserade Java-erbjudandet i stället.
OpenCensus Python SDK har dragits tillbaka. Vi rekommenderar det OpenTelemetry-baserade Python-erbjudandet och ger migreringsvägledning.
Föraggregering av mått med autoinstrumentation
Med automatisk instrumentering läggs SDK:t automatiskt till i programkoden och kan inte anpassas. För anpassade mått krävs manuell instrumentering.
Aktuell produktions-SDK | Föraggregering av standardmått | Föraggregering av anpassade mått |
---|---|---|
ASP.NET Core | SDK 1 | Stöds inte |
ASP.NET | SDK 2 | Stöds inte |
Java | SDK | Stöds 3 |
Node.js | SDK | Stöds inte |
Python | SDK | Stöds inte |
Fotnoter
- 1 ASP.NET Core autoinstrumentation på App Service genererar standardmått utan dimensioner. Manuell instrumentering krävs för alla dimensioner.
- 2 ASP.NET autoinstrumentation på virtuella datorer/VM-skalningsuppsättningar och lokalt genererar standardmått utan dimensioner. Detsamma gäller för Azure App Service, men samlingsnivån måste anges till rekommenderad. Manuell instrumentering krävs för alla dimensioner.
- 3 Java-agenten som används med autoinstrumentation samlar in mått som genereras av populära bibliotek och skickar dem till Application Insights som anpassade mått.
Anpassade måttdimensioner och föraggregering
Alla mått som du skickar med hjälp av API-anropen OpenTelemetry, trackMetric eller GetMetric och TrackValue lagras automatiskt i både måttarkivet och loggarna. Dessa mått finns i tabellen customMetrics i Application Insights och i Metrics Explorer under namnområdet För anpassat mått med namnet azure.applicationinsights. Även om den loggbaserade versionen av ditt anpassade mått alltid behåller alla dimensioner lagras den föraggregerade versionen av måttet som standard utan dimensioner. Att behålla dimensioner för anpassade mått är en förhandsversionsfunktion som kan aktiveras från fliken Användning och uppskattad kostnad genom att välja Med dimensioner under Skicka anpassade mått till Azure Metric Store.
Kvoter
Föraggregerade mått lagras som tidsserier i Azure Monitor. Azure Monitor-kvoter för anpassade mått gäller.
Kommentar
Att gå över kvoten kan få oavsiktliga konsekvenser. Azure Monitor kan bli otillförlitligt i din prenumeration eller region. Information om hur du undviker att överskrida kvoten finns i Designbegränsningar och överväganden.
Varför är insamling av anpassade måttdimensioner inaktiverad som standard?
Samlingen med anpassade måttdimensioner är inaktiverad som standard eftersom lagring av anpassade mått med dimensioner i framtiden debiteras separat från Application Insights. Lagringen av de icke-dimensionella anpassade måtten är fortfarande kostnadsfri (upp till en kvot). Du kan lära dig mer om kommande ändringar av prismodellen på vår officiella prissida.
Skapa diagram och utforska mått
Använd Azure Monitor Metrics Explorer för att rita diagram från föraggregerade, loggbaserade och anpassade mått och för att skapa instrumentpaneler med diagram. När du har valt den Application Insights-resurs som du vill använda använder du namnområdesväljaren för att växla mellan mått.
Prismodeller för Application Insights-mått
Inmatning av mått i Application Insights, oavsett om de är loggbaserade eller föraggregerade, genererar kostnader baserat på storleken på inmatade data. Mer information finns i Prissättning i Azure Log Analytics. Dina anpassade mått, inklusive alla dess dimensioner, lagras alltid i Application Insights-loggarkivet. Dessutom vidarebefordras en föraggregerad version av dina anpassade mått utan dimensioner till måttarkivet som standard.
Om du väljer alternativet Aktivera aviseringar för anpassade måttdimensioner för att lagra alla dimensioner av de föraggregerade måtten i måttarkivet kan extra kostnader genereras baserat på anpassade måttpriser.
Tillgängliga mått
I följande avsnitt visas mått med sammansättningar och dimensioner som stöds. Informationen om loggbaserade mått innehåller de underliggande Kusto-frågeinstruktionerna.
Tillgänglighetsmått
Med mått i kategorin Tillgänglighet kan du se hälsotillståndet för ditt webbprogram enligt vad som observerats från platser runt om i världen. Konfigurera tillgänglighetstesterna så att de börjar använda mått från den här kategorin.
Tillgänglighet (availabilityResults/availabilityPercentage)
Måttet Tillgänglighet visar procentandelen av webbtestkörningarna som inte identifierade några problem. Det lägsta möjliga värdet är 0, vilket anger att alla webbtestkörningar har misslyckats. Värdet 100 innebär att alla webbtestkörningar klarade valideringskriterierna.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Procent | Gmsn | Run location , Test name |
Varaktighet för tillgänglighetstest (availabilityResults/duration)
Måttet för varaktighet för tillgänglighetstest visar hur lång tid det tog för webbtestet att köras. För webbtester i flera steg återspeglar måttet den totala körningstiden för alla steg.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Run location , , Test name Test result |
Tillgänglighetstester (availabilityResults/count)
Måttet Tillgänglighetstester visar antalet webbtester som körs av Azure Monitor.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Run location , , Test name Test result |
Webbläsarmått
Webbläsarmått samlas in av Application Insights JavaScript SDK från verkliga slutanvändarens webbläsare. De ger bra insikter om användarnas upplevelse av din webbapp. Webbläsarmått samplas vanligtvis inte, vilket innebär att de ger högre precision för användningssiffrorna jämfört med mått på serversidan som kan skeva genom sampling.
Kommentar
För att samla in webbläsarmått måste ditt program instrumenteras med Application Insights JavaScript SDK.
Inläsningstid för webbläsarsidan (browserTimings/totalDuration)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Ingen |
Tid för klientbearbetning (browserTiming/processingDuration)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Ingen |
Tid för nätverksanslutning för sidinläsning (browserTimings/networkDuration)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Ingen |
Ta emot svarstid (browserTimings/receiveDuration)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Ingen |
Skicka begärandetid (browserTimings/sendDuration)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Ingen |
Felmått
Måtten i Fel visar problem med bearbetning av begäranden, beroendeanrop och undantag som genereras.
Webbläsarfel (undantag/webbläsare)
Det här måttet visar antalet undantag som genereras från programkoden som körs i webbläsaren. Endast undantag som spåras med ett trackException()
Application Insights API-anrop ingår i måttet.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role name |
Beroendeanropsfel (beroenden/misslyckade)
Antalet misslyckade beroendeanrop.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role instance , Cloud role name , Dependency performance , Dependency type , Is traffic synthetic , , , Result code Target of dependency call |
Undantag (undantag/antal)
Varje gång du loggar ett undantag till Application Insights anropas metoden trackException() för SDK:n. Måttet Undantag visar antalet loggade undantag.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role instance , , Cloud role name Device type |
Misslyckade begäranden (begäranden/misslyckade)
Antalet spårade serverbegäranden som har markerats som misslyckade. Som standard markerar Application Insights SDK automatiskt varje serverbegäran som returnerade HTTP-svarskoden 5xx eller 4xx som en misslyckad begäran. Du kan anpassa den här logiken genom att ändra lyckade egenskaper för telemetriobjekt för begäran i en anpassad telemetriinitierare.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role instance , Cloud role name , Is synthetic traffic , , , Request performance Result code |
Server-undantag (undantag/server)
Det här måttet visar antalet serverfel.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role instance , Cloud role name |
Prestandaräknare
Använd mått i kategorin Prestandaräknare för att komma åt systemprestandaräknare som samlas in av Application Insights.
Tillgängligt minne (performanceCounters/availableMemory)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Megabyte/Gigabyte (databeroende) | Genomsnittlig, Max, Min | Cloud role instance |
Undantagsfrekvens (performanceCounters/exceptionRate)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Genomsnittlig, Max, Min | Cloud role instance |
Körningstid för HTTP-begäran (performanceCounters/requestExecutionTime)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Cloud role instance |
HTTP-begärandefrekvens (performanceCounters/requestsPerSecond)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Förfrågningar per sekund | Genomsnittlig, Max, Min | Cloud role instance |
HTTP-begäranden i programkön (performanceCounters/requestsInQueue)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Genomsnittlig, Max, Min | Cloud role instance |
Process-CPU (performanceCounters/processCpuPercentage)
Måttet visar hur mycket av den totala processorkapaciteten som förbrukas av den process som är värd för din övervakade app.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Procent | Genomsnittlig, Max, Min | Cloud role instance |
Kommentar
Måttintervallet är mellan 0 och 100 * n, där n är antalet tillgängliga CPU-kärnor. Måttvärdet på 200 % kan till exempel representera full användning av två CPU-kärnor eller en halv användning av 4 CPU-kärnor och så vidare. Process-CPU Normalized är ett alternativt mått som samlas in av många SDK:er som representerar samma värde men delar det med antalet tillgängliga CPU-kärnor. Därför är intervallet för måttet Process CPU Normalized 0 till 100.
Process-I/O-hastighet (performanceCounters/processIOBytesPerSecond)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Byte per sekund | Genomsnitt, Min, Max | Cloud role instance |
Bearbeta privata byte (performanceCounters/processPrivateBytes)
Mängden ledigt minne som den övervakade processen allokerade för sina data.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Byte | Genomsnitt, Min, Max | Cloud role instance |
Processortid (performanceCounters/processorCpuPercentage)
CPU-förbrukning av alla processer som körs på den övervakade serverinstansen.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Procent | Genomsnitt, Min, Max | Cloud role instance |
Kommentar
Måttet för processortid är inte tillgängligt för de program som finns i Azure App Services. Använd måttet Bearbeta CPU för att spåra CPU-användningen av webbprogram som finns i App Services.
Servermått
Beroendeanrop (beroenden/antal)
Det här måttet är i förhållande till antalet beroendeanrop.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role instance , Cloud role name , Dependency performance , Dependency type , Is traffic synthetic , , Result code , , Successful call Target of a dependency call |
Beroendevaraktighet (beroenden/varaktighet)
Det här måttet refererar till varaktigheten för beroendeanrop.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Cloud role instance , Cloud role name , Dependency performance , Dependency type , Is traffic synthetic , , Result code , , Successful call Target of a dependency call |
Frekvens för serverbegäran (begäranden/hastighet)
Det här måttet visar antalet inkommande serverbegäranden som togs emot av webbappen.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal per sekund | Gmsn | Cloud role instance , Cloud role name , Is traffic synthetic , , , Request performance Result code Successful request |
Serverbegäranden (begäranden/antal)
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role instance , Cloud role name , Is traffic synthetic , , , Request performance Result code Successful request |
Serversvarstid (begäranden/varaktighet)
Det här måttet återspeglar den tid det tog för servrarna att bearbeta inkommande begäranden.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Cloud role instance , Cloud role name , Is traffic synthetic , , , Request performance Result code Successful request |
Användningsstatistik
Inläsningstid för sidvisning (pageViews/varaktighet)
Det här måttet refererar till hur lång tid det tog för PageView-händelser att läsas in.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Millisekunder | Genomsnittlig, Max, Min | Cloud role name , Is traffic synthetic |
Sidvisningar (pageViews/count)
Antalet PageView-händelser som loggats med Api:et TrackPageView() Application Insights.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role name , Is traffic synthetic |
Spårningar (spårningar/antal)
Antalet spårningsinstruktioner som loggats med Api-anropet TrackTrace() Application Insights.
Måttenhet | Sammansättningar som stöds | Dimensioner som stöds |
---|---|---|
Antal | Antal | Cloud role instance , Cloud role name , , Is traffic synthetic Severity level |
Anpassade mått
Gäller inte för standardmått.
Få åtkomst till loggbaserade mått direkt med Application Insights REST API
Application Insights REST API möjliggör programmatisk hämtning av loggbaserade mått. Den har också en valfri parameter ai.include-query-payload
som när den läggs till i en frågesträng uppmanar API:et att returnera inte bara tidsseriedata utan även den Kusto-frågespråk-instruktion (KQL) som används för att hämta dem. Den här parametern kan vara särskilt fördelaktig för användare som vill förstå anslutningen mellan råhändelser i Log Analytics och det resulterande loggbaserade måttet.
Om du vill komma åt dina data direkt skickar du parametern ai.include-query-payload
till Application Insights-API:et i en fråga med hjälp av KQL.
Kommentar
För att hämta den underliggande loggfrågan DEMO_APP
och DEMO_KEY
behöver inte ersättas. Om du bara vill hämta KQL-instruktionen och inte tidsseriedata för ditt eget program kan du kopiera och klistra in den direkt i webbläsarens sökfält.
api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload
Följande är ett exempel på en returnerad KQL-instruktion för måttet "Autentiserade användare". (I det här exemplet "users/authenticated"
är mått-ID:t.)
output
{
"value": {
"start": "2024-06-21T09:14:25.450Z",
"end": "2024-06-21T21:14:25.450Z",
"users/authenticated": {
"unique": 0
}
},
"@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}