fix: improve Data Explorer health signal accuracy - #2564
fix: improve Data Explorer health signal accuracy#2564sunghyunkang1111 wants to merge 3 commits into
Conversation
Playwright tests ✅ passed
📁 Report: |
Playwright tests ❌ failed
📁 Report:
|
|
Paired Portal Backend change: https://msdata.visualstudio.com/DefaultCollection/CosmosDB/_git/CosmosDB-Portal-Backend/pullrequest/2262065 |
Playwright tests ❌ failed
📁 Report:
|
Scope expected failures to their scenario and phase, preserve unexpected-failure precedence, treat hidden-page timeouts as expected, and add diagnostics and regression coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 68ccefda-9e7d-4b01-a4db-e390810491ee
Keep the original ARM error when hosted key retrieval fails so authorization failures retain their classification through the outer configuration boundary. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 68ccefda-9e7d-4b01-a4db-e390810491ee
Include the live Data Explorer session ID on health ingestion requests so backend logs can join directly to Portal telemetry. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 68ccefda-9e7d-4b01-a4db-e390810491ee
0a44abd to
151af9c
Compare
Playwright tests ✅ passed
📁 Report: |
Why this change
The existing Data Explorer health signal was producing incidents that were not consistently actionable. We reviewed the frontend state machine, Portal Backend telemetry, the Geneva metric and production monitor, and historical ICM behavior before changing the semantics.
Evidence from Portal Backend/Kusto
A roughly 45-day retained sample showed that unhealthy events were dominated by scenario timeouts rather than explicit unexpected failures:
The five-minute windows used by the current Geneva monitor were also highly sensitive to sparse traffic:
Evidence from Geneva/ICM
The production monitor evaluates a five-minute window every three minutes, alerts above 10%, aggregates only by Platform, has no minimum event floor or persistence, and does not automatically mitigate.
Across approximately 180 days of ICM history we found 22 direct production incidents, evenly split between Portal and Hosted. At review time, 15 remained active, 14 were unacknowledged, and none were marked customer-impacting. This is consistent with a signal that is too sensitive to isolated events and expected environmental conditions.
Frontend causes identified
New health semantics
The monitor now applies explicit scenario-local precedence:
Expected evidence is non-terminal: it does not complete a phase and cannot hide a later unexpected failure.
Why not every timeout is Unhealthy
A timeout means the scenario did not complete all required phases within ten seconds; it does not identify the cause. For operational health, a visible and unexplained timeout remains Unhealthy. The exceptions are cases where the timeout is explained by a condition that is not evidence of a Data Explorer service regression:
This distinction is between user-flow completion and operational service health. Expected and hidden-page timeouts remain observable through
timedOut,hasExpectedFailure, phase diagnostics, and telemetry; they are not silently discarded. Treating every timeout as Unhealthy would reintroduce the sparse-window alert noise observed in Geneva, where a single event caused 105 of 125 Hosted windows above the current 10% threshold.What changed
AuthorizationFailedremains correctly classified.What is intentionally not included
Validation
listKeysandreadonlykeysreturning 403AuthorizationFailedproduce one Healthy timed-out ApplicationLoad result with expected diagnostics.listKeysreturning an unexpected 500 produces one immediate Unhealthy result and no later duplicate timeout event.Rollout expectation
This PR improves the meaning of the emitted frontend signal. The companion Geneva rollout should initially run scenario-specific monitors alongside the existing production monitor, validate volume and threshold behavior in staging, and only then replace the blended Platform-only monitor.