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 example200,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