Adding a couple of points that strengthen the case.
First: the signal isn’t missing. Director already surfaces these as Connection Failures, with reason codes per machine, and the Monitoring Service exposes them via OData (ConnectionFailureLogs). The data is being collected, persisted in the Monitor DB, and rendered in your own UI in near real-time. What’s missing is closing the loop from that telemetry back to Broker behavior. Today operators correlate Director failures to a machine and run Set-BrokerMachine -InMaintenanceMode by hand - or build a watchdog against your own OData API to do it for them, which is exactly what we ended up doing.
That reframes the ask: it’s not “Broker needs new observability,” it’s “the Broker should react to telemetry the platform already produces.” That also dissolves the underutilization concern from your original reply — the trigger isn’t a single transient CAL miss, it’s a sustained failure pattern already visible to anyone with Director open. A threshold (N failures in window M, filtered by failure type) gives admins the safety margin against false positives that you were concerned about.
Second, and more important: the scope is broader than RDS CAL. The pattern we’re describing recurs across multiple failure classes. In our environment (around 200 multi-session VDAs) we see roughly once every 2–3 months an OS-level fault that puts a server into a zombie state — BrokerAgent keeps heartbeating so the machine stays Registered/Available, but no session can be established via Citrix or RDP, and only a hard reboot recovers it. Different root cause from the post-reboot RDS deadlock we discussed earlier, but identical from the Broker’s perspective: machine state says Available, every launch fails, Director shows the connection failures, and the Broker keeps routing users into a black hole.
The underlying issue is structural: the Broker treats registration as a proxy for “this VDA can serve sessions,” and registration only proves “BrokerAgent is alive and reachable on its IPC channel.” It says nothing about whether the OS, RDS stack, listener, profile subsystem, FSLogix mount, or any other component on the launch path actually works. That’s why every customer at scale eventually builds the same external watchdog against your Monitoring OData - we’re papering over a gap in the Broker’s health model.
Closing the loop - letting Director’s connection-failure telemetry feed back into broker scheduling, with a thresholded soft-quarantine state and an explicit recovery probe - fixes both failure classes with one mechanism, and any future failure mode that manifests the same way without modelling it explicitly. That’s the version of this feature that pays back its engineering cost, and it directly addresses every concern in your earlier reply: transient vs persistent (threshold), underutilization (already-visible sustained pattern, not a single failure), and recovery without polling/service restart (positive health probe before lifting quarantine, over the channel already open).