Protokollbasierte Metriken von Application Insights
Mit den protokollbasierten Metriken von Application Insights können Sie die Integrität Ihrer überwachten Apps analysieren, leistungsstarke Dashboards erstellen und Warnungen konfigurieren. Es gibt zwei Arten von Metriken:
- Protokollbasierte Metriken im Hintergrund werden aus gespeicherten Ereignissen in Kusto-Abfragen übersetzt.
- Standardmetriken werden als vorab aggregierte Zeitreihe gespeichert.
Da Standardmetriken während der Erfassung vorab aggregiert werden, weisen sie zum Abfragezeitpunkt eine bessere Leistung auf. Dies macht sie zu einer besseren Wahl für Dashboarding und Echtzeitwarnungen. Die protokollbasierten Metriken verfügen über mehr Dimensionen, was sie zur überlegenen Option für die Datenanalyse und Ad-hoc-Diagnosen macht. Verwenden Sie die Namespace-Auswahl, um im Metrik-Explorer zwischen protokollbasierten Metriken und Standardmetriken zu wechseln.
Interpretieren und Verwenden von Abfragen aus diesem Artikel
Dieser Artikel listet Metriken mit unterstützten Aggregationen und Dimensionen auf. Zu den Details der protokollbasierten Metriken gehören die zugrunde liegenden Kusto-Abfrageanweisungen. Zur Vereinfachung verwendet jede Abfrage Standardwerte für Zeitgranularität, Diagrammtyp und manchmal auch Teilungsdimensionen, was die Verwendung der Abfrage in Log Analytics vereinfacht, ohne dass Änderungen erforderlich sind.
Wenn Sie die gleiche Metrik im Metrik-Explorer darstellen, gibt es keine Standardwerte – die Abfrage wird dynamisch entsprechend Ihren Diagrammeinstellungen angepasst:
Der ausgewählte Zeitbereich wird in eine zusätzliche where timestamp-Klausel übersetzt, um nur die Ereignisse aus dem ausgewählten Zeitbereich auszuwählen. Bei einem Diagramm, in dem die Daten der letzten 24 Stunden angezeigt werden, enthält die Abfrage | where timestamp > ago(24 h).
Die ausgewählte Zeitgranularität wird in die endgültige summarize ... by bin(timestamp, [time grain])-Klausel aufgenommen.
Alle ausgewählten Filter-Dimensionen werden in zusätzliche where-Klauseln übersetzt.
Die ausgewählte Teilungsdiagramm-Dimension wird in eine zusätzliche Zusammenfassungseigenschaft übersetzt. Wenn Sie beispielsweise Ihr Diagramm nach Standort aufteilen und mit einer Zeitgranularität von 5 Minuten grafisch darstellen, wird die summarize-Klausel in der Form ... by bin(timestamp, 5 m), location zusammengefasst.
Hinweis
Wenn Sie noch nicht mit der Kusto-Abfragesprache vertraut sind, müssen Sie zunächst die Kusto-Anweisungen kopieren und in den Log Analytics-Abfragebereich einfügen, ohne Änderungen vorzunehmen. Klicken Sie auf Ausführen, um das grundlegende Diagramm anzuzeigen. Wenn Sie mit der Syntax der Abfragesprache vertraut sind, können Sie damit beginnen, kleine Änderungen vorzunehmen und die Auswirkung Ihrer Änderung anzuzeigen. Das Untersuchen Ihrer eigenen Daten ist eine gute Möglichkeit, um die volle Leistungsfähigkeit von Log Analytics und Azure Monitor zu erkennen.
Verfügbarkeitsmetriken
Metriken der Kategorie „Verfügbarkeit“ ermöglichen es Ihnen, die Integrität Ihrer Webanwendung so anzuzeigen, wie sie an Punkten auf der ganzen Welt zu beobachten ist. Konfigurieren Sie die Verfügbarkeitstests, damit Sie Metriken aus dieser Kategorie verwenden können.
Verfügbarkeit (availabilityResults/availabilityPercentage)
Die Metrik Verfügbarkeit zeigt den Prozentsatz der Webtestläufe, bei denen keine Probleme erkannt wurden. Der kleinstmögliche Wert ist 0 und gibt an, dass bei allen Webtestläufen Fehler aufgetreten sind. Der Wert 100 bedeutet, dass alle Webtestläufe die Überprüfungskriterien erfüllt haben.
Unit of measure | Unterstützte Aggregationen | Unterstützte Dimensionen |
---|---|---|
Prozentwert | Average | Ausführungsort, Testname |
availabilityResults
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart
Verfügbarkeitstestdauer (availabilityResults/duration)
Die Metrik Verfügbarkeitstestdauer gibt an, wie lange die Ausführung des Webtests gedauert hat. Bei den mehrstufigen Webtests spiegelt die Metrik die gesamte Ausführungszeit aller Stufen wider.
Unit of measure | Unterstützte Aggregationen | Unterstützte Dimensionen |
---|---|---|
Millisekunden | Durchschnitt, Minimum, Maximum | Ausführungsort, Testname, Testergebnis |
availabilityResults
| where notempty(duration)
| extend availabilityResult_duration = iif(itemType == 'availabilityResult', duration, todouble(''))
| summarize sum(availabilityResult_duration)/sum(itemCount) by bin(timestamp, 5m), location
| render timechart
Verfügbarkeitstests (availabilityResults/count)
Die Metrik Verfügbarkeitstests spiegelt die Anzahl der von Azure Monitor ausgeführten Webtests wider.
Unit of measure | Unterstützte Aggregationen | Unterstützte Dimensionen |
---|---|---|
Anzahl | Anzahl | Ausführungsort, Testname, Testergebnis |
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart
Browsermetriken
Browsermetriken werden vom Application Insights JavaScript SDK aus echten Endbenutzerbrowsern gesammelt. Sie bieten nützliche Einblicke in die Erfahrungen der Benutzer mit Ihrer Webanwendung. Für Browsermetriken werden in der Regel keine Stichproben verwendet, was bedeutet, dass sie eine höhere Genauigkeit der Nutzungszahlen bieten als serverseitige Metriken, die durch die Verwendung von Stichproben verzerrt sein können.
Hinweis
Um Browsermetriken zu erfassen, muss Ihre Anwendung mit dem Application Insights JavaScript SDK ausgestattet sein.
Browser-Seitenladezeit (browserTimings/totalDuration)
Zeit ab der Benutzeranforderung, bis DOM, Stylesheets, Skripts und Bilder geladen werden.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen |
---|---|---|
Millisekunden | Durchschnitt, Minimum, Maximum | Keine |
browserTimings
| where notempty(totalDuration)
| extend _sum = totalDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Clientverarbeitungszeit (browserTiming/processingDuration)
Zeit zwischen dem Empfang des letzten Byte eines Dokuments und dem Laden des DOM. Asynchrone Anforderungen werden möglicherweise immer noch verarbeitet.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen |
---|---|---|
Millisekunden | Durchschnitt, Minimum, Maximum | Keine |
browserTimings
| where notempty(processingDuration)
| extend _sum = processingDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 5m)
| render timechart
Netzwerkverbindungszeit zum Laden der Seite (browserTimings/networkDuration)
Zeit zwischen Benutzeranforderung und Netzwerkverbindung. Umfasst DNS-Suche und Transportverbindung.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen |
---|---|---|
Millisekunden | Durchschnitt, Minimum, Maximum | Keine |
browserTimings
| where notempty(networkDuration)
| extend _sum = networkDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Empfängt Antwortzeit (browserTimings/receiveDuration)
Zeit zwischen dem ersten und letzten Byte, oder bis zur Verbindungstrennung.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen |
---|---|---|
Millisekunden | Durchschnitt, Minimum, Maximum | Keine |
browserTimings
| where notempty(receiveDuration)
| extend _sum = receiveDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Anforderungszeit senden (browserTimings/sendDuration)
Zeit zwischen der Netzwerkverbindung und dem Empfang des ersten Byte.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen |
---|---|---|
Millisekunden | Durchschnitt, Minimum, Maximum | Keine |
browserTimings
| where notempty(sendDuration)
| extend _sum = sendDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Fehlermetriken
Die Metriken der Kategorie Fehler zeigen Probleme bei der Verarbeitung von Anforderungen, Abhängigkeitsaufrufen und ausgelösten Ausnahmen.
Browserausnahmen (exceptions/browser)
Diese Metrik spiegelt die Anzahl der ausgelösten Ausnahmen von Ihrem Anwendungscode im Browser wider. Nur Ausnahmen, die mit einem trackException()
Application Insights API-Aufruf verfolgt werden, sind in der Metrik enthalten.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen | Hinweise |
---|---|---|---|
Anzahl | Anzahl | Keine | Protokollbasierte Version verwendet Sum-Aggregation |
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Fehler bei Abhängigkeitsaufrufen (dependencies/failed)
Die Anzahl fehlerhafter Abhängigkeitsaufrufe.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen | Hinweise |
---|---|---|---|
Anzahl | Anzahl | Keine | Protokollbasierte Version verwendet Sum-Aggregation |
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Ausnahmen (exceptions/count)
Jedes Mal, wenn Sie eine Ausnahme bei Application Insights protokollieren, erfolgt ein Aufruf der trackException()-Methode des SDK. Die Metrik „Ausnahmen“ zeigt die Anzahl der protokollierten Ausnahmen an.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen | Hinweise |
---|---|---|---|
Anzahl | Anzahl | Cloudrollenname, Cloudrolleninstanz, Gerätetyp | Protokollbasierte Version verwendet Sum-Aggregation |
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Fehlerhafte Anforderungen (requests/failed)
Die Anzahl der verfolgten Serveranforderungen, die als fehlgeschlagen markiert wurden. Standardmäßig markiert das Application Insights SDK automatisch jede Serveranforderung, die den HTTP-Antwortcode 5xx oder 4xx zurückgegeben hat, als fehlerhafte Anforderung. Sie können diese Logik anpassen, indem Sie die Eigenschaft Erfolg des Anforderungstelemetrieelements in einem benutzerdefinierten Telemetrieinitialisierer ändern.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen | Hinweise |
---|---|---|---|
Anzahl | Anzahl | Cloudrolleninstanz, Cloudrollenname, Echter oder synthetischer Datenverkehr, Anforderungsleistung, Antwortcode | Protokollbasierte Version verwendet Sum-Aggregation |
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Serverausnahmen (exceptions/server)
Diese Metrik zeigt die Anzahl der Serverausnahmen.
Unit of measure | Unterstützte Aggregationen | Voraggregierte Dimensionen | Hinweise |
---|---|---|---|
Anzahl | Anzahl | Cloudrollenname, Cloudrolleninstanz | Protokollbasierte Version verwendet Sum-Aggregation |
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Leistungsindikatoren
Verwenden Sie Metriken in der Kategorie Leistungsindikatoren, um auf die von Application Insights erfassten Systemleistungsindikatoren zuzugreifen.
Verfügbarer Speicher (performanceCounters/availableMemory)
performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "availableMemory")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Ausnahmerate (performanceCounters/exceptionRate)
performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionRate")
| extend performanceCounter_value = iif(itemType == 'performanceCounter',value,todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Ausführungszeit der HTTP-Anforderung (performanceCounters/requestExecutionTime)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
HTTP-Anforderungsrate (performanceCounters/requestsPerSecond)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
HTTP-Anforderungen in der Anwendungswarteschlange (performanceCounters/requestsInQueue)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Prozess-CPU (performanceCounters/processCpuPercentage)
Die Metrik zeigt, wie viel der gesamten Prozessorleistung von dem Prozess genutzt wird, der Ihre überwachte App hostet.
Unit of measure | Unterstützte Aggregationen | Unterstützte Dimensionen |
---|---|---|
Prozentwert | Durchschnitt, Minimum, Maximum | Cloudrolleninstanz |
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Hinweis
Der Metrikbereich liegt zwischen 0 und 100 * n, wobei n für die Anzahl der verfügbaren CPU-Kerne steht. Beispielsweise kann der Metrikwert von 200 % die vollständige Auslastung von zwei CPU-Kernen oder die halbe Auslastung von 4 CPU-Kernen usw. darstellen. Bei normalisierte Prozess-CPU handelt es sich um eine alternative Metrik, die von vielen SDKs erfasst wird und denselben Wert darstellt, diesen jedoch durch die Anzahl der verfügbaren CPU-Kerne dividiert. Daher liegt der Bereich der Metrik normalisierte Prozess-CPU zwischen 0 und 100.
E/A-Rate des Prozesses (performanceCounters/processIOBytesPerSecond)
Unit of measure | Unterstützte Aggregationen | Unterstützte Dimensionen |
---|---|---|
Bytes pro Sekunde | Durchschnitt, Minimum, Maximum | Cloudrolleninstanz |
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Private Bytes des Prozesses (performanceCounters/processPrivateBytes)
Menge des nicht gemeinsam genutzten Arbeitsspeichers, die der überwachte Prozess für seine Daten reserviert hat.
Unit of measure | Unterstützte Aggregationen | Unterstützte Dimensionen |
---|---|---|
Byte | Durchschnitt, Minimum, Maximum | Cloudrolleninstanz |
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Prozessorzeit (performanceCounters/processorCpuPercentage)
CPU-Auslastung durch alle Prozesse, die auf der überwachten Serverinstanz ausgeführt werden.
Unit of measure | Unterstützte Aggregationen | Unterstützte Dimensionen |
---|---|---|
Prozentwert | Durchschnitt, Minimum, Maximum | Cloudrolleninstanz |
Hinweis
Die Prozessorzeitmetrik ist für die in Azure App Services gehosteten Anwendungen nicht verfügbar. Verwenden Sie die Metrik Prozess-CPU, um die CPU-Auslastung der in App Services gehosteten Webanwendungen nachzuverfolgen.
performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Servermetriken
Abhängigkeitsaufrufe (dependencies/count)
Diese Metrik bezieht sich auf die Anzahl der Abhängigkeitsaufrufe.
dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Dauer der Abhängigkeit (dependencies/duration)
Diese Metrik bezieht sich auf die Dauer von Abhängigkeitsaufrufen.
dependencies
| where notempty(duration)
| extend dependency_duration = iif(itemType == 'dependency',duration,todouble(''))
| extend _sum = dependency_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 1m)
| render timechart
Serveranforderungen (requests/count)
Diese Metrik spiegelt die Anzahl der eingehenden Serveranforderungen wider, die von Ihrer Webanwendung empfangen wurden.
requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Serverantwortzeit (requests/duration)
Diese Metrik spiegelt die Zeit wider, die die Server für die Verarbeitung eingehender Anforderungen benötigt haben.
requests
| where notempty(duration)
| extend request_duration = iif(itemType == 'request', duration, todouble(''))
| extend _sum = request_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 1m)
| render timechart
Nutzungsmetriken
Ladezeit der Seitenansicht (pageViews/duration)
Diese Metrik bezieht sich auf die Zeit, die für das Laden von PageView-Ereignissen benötigt wurde.
pageViews
| where notempty(duration)
| extend pageView_duration = iif(itemType == 'pageView', duration, todouble(''))
| extend _sum = pageView_duration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render barchart
Seitenaufrufe (pageViews/count)
Die Anzahl der PageView-Ereignisse, die mit der TrackPageView() Application Insights API protokolliert wurden.
pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart
Sitzungen (sessions/count)
Diese Metrik bezieht sich auf die Anzahl der unterschiedlichen Sitzungs-IDs.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart
Überwachungen (traces/count)
Die Anzahl der mit dem TrackTrace() Application Insights API-Aufruf protokollierten Überwachungsanweisungen.
traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart
Benutzer (users/count)
Die Anzahl der unterschiedlichen Benutzer, die auf Ihre Anwendung zugegriffen haben. Die Genauigkeit dieser Metrik kann durch die Verwendung von Telemetriestichproben und Filtern erheblich beeinträchtigt werden.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize dcount(user_Id) by bin(timestamp, 1h)
| render barchart
Benutzer, Authentifiziert (users/authenticated)
Die Anzahl der unterschiedlichen Benutzer, die sich bei Ihrer Anwendung authentifiziert haben.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart
Zugreifen auf alle Ihre Daten direkt mit der Application Insights REST-API
Die Application Insights-REST-API ermöglicht das programmgesteuerte Abrufen von protokollbasierten Metriken. Außerdem verfügt sie über einen optionalen Parameter "ai.include-query-payload", der beim Hinzufügen zu einer Abfragezeichenfolge die API auffordert, nicht nur die Zeitseriendaten zurückzugeben, sondern auch die zum Abrufen verwendete Kusto-Abfragesprache-Anweisung (KQL). Dieser Parameter kann besonders für Benutzer nützlich sein, die die Verbindung zwischen rohen Ereignissen in Log Analytics und der resultierenden protokollbasierten Metrik verstehen möchten.
Um direkt auf Ihre Daten zuzugreifen, übergeben Sie den Parameter "ai.include-query-payload" in einer Abfrage mit KQL an die Application Insights-API.
api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload
Nachfolgend sehen Sie ein Beispiel für eine KQL-Rückgabe-Anweisung für die Metrik "Authentifizierte Benutzer". (In diesem Beispiel ist "users/authenticated" die Metrik-ID.)
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)"
}