Document the session-less StreamAlarms feed and alarm config
Update the gateway docs for the central alarm monitor reversal: Grpc.md replaces QueryActiveAlarms with the session-less StreamAlarms RPC and notes AcknowledgeAlarm no longer needs a session; Authorization.md maps StreamAlarmsRequest to events:read; GatewayConfiguration.md adds the MxGateway:Alarms options block; and GatewayDashboardDesign.md points the Alarms page at the central monitor cache instead of a per-session subscription. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -274,28 +274,32 @@ diagnostic session/worker views.
|
||||
|
||||
### Alarms page
|
||||
|
||||
`/dashboard/alarms` lists the alarms the dashboard session's worker currently
|
||||
reports as Active or ActiveAcked, refreshed every three seconds. It defaults to
|
||||
showing unacknowledged `Active` alarms; filters add acknowledged alarms and
|
||||
narrow by area, severity range, and a reference/source/description text search.
|
||||
Cleared alarms are not retained — the gateway holds no alarm-history store, so
|
||||
the page reflects only the live active set. The page is read-only; it does not
|
||||
acknowledge alarms. If `MxGateway:Alarms:Enabled` is false the session is never
|
||||
subscribed to an alarm provider, and the page says so instead of showing an
|
||||
empty list with no explanation.
|
||||
`/dashboard/alarms` lists the alarms the gateway's central alarm monitor
|
||||
currently holds as Active or ActiveAcked, refreshed every three seconds. It
|
||||
defaults to showing unacknowledged `Active` alarms; filters add acknowledged
|
||||
alarms and narrow by area, severity range, and a reference/source/description
|
||||
text search. Cleared alarms are not retained — the gateway holds no
|
||||
alarm-history store, so the page reflects only the live active set. The page is
|
||||
read-only; it does not acknowledge alarms. If `MxGateway:Alarms:Enabled` is
|
||||
false the central monitor never starts, and the page says so instead of showing
|
||||
an empty list with no explanation.
|
||||
|
||||
### Live data source
|
||||
|
||||
Both the Browse subscription panel and the Alarms page read live MXAccess data
|
||||
through `IDashboardLiveDataService` (`DashboardLiveDataService`). It owns one
|
||||
shared gateway session for the whole dashboard, opened lazily on first use via
|
||||
`ISessionManager` and re-opened transparently when it faults or its lease
|
||||
expires. One session means one worker process backs every dashboard circuit;
|
||||
all access is serialised so the worker sees one in-flight command at a time.
|
||||
Tag reads go through `GatewaySession.SubscribeBulkAsync` / `ReadBulkAsync`;
|
||||
alarm queries go through `IAlarmRpcDispatcher`. Alarm subscription is the
|
||||
gateway's existing auto-subscribe-on-open hook, so the dashboard session is
|
||||
alarm-subscribed only when `MxGateway:Alarms:Enabled` is set.
|
||||
through `IDashboardLiveDataService` (`DashboardLiveDataService`). For tag data
|
||||
it owns one shared gateway session for the whole dashboard, opened lazily on
|
||||
first use via `ISessionManager` and re-opened transparently when it faults or
|
||||
its lease expires. One session means one worker process backs every dashboard
|
||||
circuit; all access is serialised so the worker sees one in-flight command at a
|
||||
time. Tag reads go through `GatewaySession.SubscribeBulkAsync` / `ReadBulkAsync`.
|
||||
|
||||
The Alarms page does **not** use the dashboard session: alarm data comes from
|
||||
the gateway's always-on central monitor. `QueryAlarmsAsync` reads
|
||||
`IGatewayAlarmService.CurrentAlarms` — the monitor's in-process cache — so the
|
||||
dashboard sees the same active-alarm set as every `StreamAlarms` client, with
|
||||
no per-dashboard alarm subscription. When `MxGateway:Alarms:Enabled` is false
|
||||
the monitor never starts and the cache stays empty.
|
||||
|
||||
### API keys page
|
||||
|
||||
|
||||
Reference in New Issue
Block a user