Skip to content

Chat KQL Overview

Analyze chat operation activity, latency, and failure patterns using the diagnostic log table that ACS actually emits.

Log Analytics Tables

ACS emits one chat operational log table. Different chat API operations (thread creation, message send, participant management, and so on) are discriminated by OperationName.

Table Purpose Discriminator
ACSChatIncomingOperations All incoming requests to ACS chat operations, one row per API request. OperationName

Key columns used across the queries below:

  • OperationName — the chat API operation associated with the log record.
  • ResultType — the status of the operation.
  • ResultSignature — the sub-status of the operation; for REST API calls this is the HTTP status code (for example 200, 429).
  • DurationMs — the duration of the operation in milliseconds, computed server-side by the service.
  • UserId — the request sender's user ID.
  • ChatThreadId — the chat thread ID associated with the request.
  • ChatMessageId — the chat message ID associated with the request.
  • CorrelationId — the ID for correlated events across tables.
  • SdkType, PlatformType, URI, CallerIpAddress — additional context fields documented on the table reference.

Key Scenarios

Scenario KQL Query Description
Operation Latency Analysis Chat Message Latency Analyze server-side operation duration for chat operations.
Operation Volume by Type Operation Volume Track the volume of chat operations grouped by OperationName over time.
Failure Rate by Operation Failure Rate Identify which chat operations are failing and their HTTP status codes.

Query Examples

Operation Volume

Track the volume of chat operations grouped by OperationName over time. This shows which operations (thread creation, message send, participant management, and so on) dominate traffic and how volume shifts.

ACSChatIncomingOperations
| where TimeGenerated > ago(24h)
| summarize OperationCount = count() by OperationName, bin(TimeGenerated, 1h)
| render timechart

Failure Rate

Identify chat operations that are returning non-2xx HTTP status codes. ResultSignature carries the HTTP status code returned to the caller.

ACSChatIncomingOperations
| where TimeGenerated > ago(1h)
| where ResultSignature !startswith "2"
| summarize FailureCount = count() by OperationName, ResultSignature, ResultDescription
| order by FailureCount desc

See Also

Sources