Skip to content

System Status

Adds a System Status button to the Smart Client toolbar. Hovering the button shows a live summary such as 3/19 Cameras 4 Users. Clicking it opens the System Health window, a resizable overview with a summary header and three tables: recording servers and their storage, cameras with live stream statistics, and connected users.

The plugin also ships a Folder & Role - Camera User Status view item you can drop into any view, showing online cameras per folder and logged-in users per role. See Folder & Role view item.

Quick Start

  1. Install the plugin and open Smart Client.
  2. In the Live or Playback workspace, find the System Status button in the top toolbar.
  3. Hover the button to read the quick counts in the tooltip.
  4. Click the button to open the System Health window. Click again, press Esc, or click the X to close it.

What it shows

The window stacks three tables, each with its own section header, summary line, and CSV export button. The dividers between them can be dragged to give a table more room, and the whole window can be enlarged up to your screen.

Summary header

The header carries a row of summary chips that update live with the tables:

Chip Meaning
Recorders Number of recording servers.
Cameras Total number of enabled cameras.
Cameras Offline Cameras currently offline. Shown only when at least one is offline.
Storage Alerts Storages at or above 90 percent used. Shown only when at least one is in alert.

The About button next to Refresh shows the plugin version.

Recording Servers

One row per storage on each recording server, plus the recorder's attach and connection state.

Column Meaning
Status dot Green when the recorder is attached and connected, red otherwise.
Site The federated site the recorder belongs to. Shown only when more than one site is present.
Recorder The recording server host.
State The attach and connection state reported by the recorder.
Storage The recording or archive storage name.
Path The media database path.
Cameras Online and total cameras on this recorder, for example 14/16. The online count is green and the total is blue.
Bandwidth The recorder's aggregate live bandwidth, summed across its cameras. The unit scales with the value (kB/s, MB/s, GB/s).
Storage usage A bar showing used percent, green under 90, orange under 95, red at 95 and above. Hover for the used, free, and total figures.

Cameras

One row per enabled camera. A toggle above the table switches between Cameras and Streams.

In Cameras mode each row aggregates the camera and its streams:

Column Meaning
Status dot Green online, red offline, gray when the camera's recorder did not answer (state unknown).
Site The federated site the camera belongs to. Shown only when more than one site is present.
Camera The camera name.
Recorder The owning recording server. Shown in red when that recorder is offline.
Streams How many video streams the recorder is currently serving for the camera.
Resolution, Codec, FPS, Bitrate Live figures for the camera's primary stream (FPS and bitrate update on the live refresh). Bitrate is the sum across the camera's streams, with the unit scaling to the value (kB/s, MB/s, GB/s).
Storage used How much recording space the camera occupies on its recorder.
Storage % That used space as a percentage of the recorder's total configured storage.
First rec, Last rec The oldest and newest recorded timestamps. These are pre-loaded in the background from the moment the Smart Client starts, so they are usually already present when the window opens. A cell still being loaded shows Loading.
Span The recorded coverage between first and last, shown compactly (for example 89.9 Days).

In Streams mode the table flattens to one row per stream across all cameras, so you can see every stream at once without expanding anything. It lists camera, recorder, stream name, resolution, codec, FPS, requested FPS, bitrate, and the stream role (recording, live, or both).

Users

One row per connected user, with the client type.

Client type Source
Smart Client An operator running the Smart Client.
Management Client An administrator running the Management Client.
Standalone A standalone MIP application or integration.

Background services such as the Event Server and the Log Server are filtered out, so the list reflects real people and integrations rather than system accounts. When one user holds more than one session, the row shows a count such as Smart Client (x2). On a federated system a Site column shows which site each session is connected to.

Working with the tables

Action How
Sort Click any column header. An arrow shows the active sort direction. Numbers, sizes, FPS, bitrate, storage, and span sort by value.
Filter cameras Type in the Filter box to match camera or recorder name, or use the All / Online / Offline buttons. The filter also applies in Streams mode.
Group The Group button groups cameras by recorder, and streams by camera, with collapsible group headers.
Folders The Folders button groups cameras by folders, only available for camera table.
Resize columns Drag the divider between two column headers.
Export The CSV icon on each table exports exactly what is shown, respecting the current sort and filter.

Live auto-refresh

The Auto 2s button toggles live updates. While it is on, the camera stream figures (FPS, bitrate, resolution, online state, used storage) refresh every two seconds. The update is merged in place, so your selection, scroll position, and sort order are preserved. The first / last recording cells are read from the background range cache and refresh on the slower cycle, not on every tick. Storage figures and recorder state refresh on a slower cycle and on a manual Refresh (or F5). Turn auto off to hold the current view. All per-recorder querying stops the moment the window is closed; the background range cache keeps refreshing for the session.

Folder & Role view item

Alongside the toolbar button, the plugin ships a Folder & Role - Camera User Status view item you can drop into any Smart Client view. It shows two live lists:

  • Camera Folders - one row per Management Client device-group folder, with the number of online cameras out of the total, for example 5 / 8 Devices.
  • Roles - one row per role, with how many of its assigned users are currently logged in, for example 1 / 4 Users.

The online and logged-in number is coloured so a glance tells you coverage, and the counts update live from the same background layer that feeds the toolbar.

Setting it up

In setup mode the tile shows a centered Open configuration... button. It opens a configuration window with the settings on the left and a live preview of the tile on the right, so every change is visible before you apply it.

Setting What it does
Selection Show every folder and role, or tick Show only the folders / roles I pick to choose them individually from two lists.
Recording-server prefix Keep or drop the leading server / segment from folder names. Same-named groups across recorders merge into one row when the prefix is off.
Render mode List shows stacked rows; Dashboard shows rectangular cards that wrap to fill the tile.
Show All sections, Cameras only, or Roles only.
Folders section on top Choose which of the two sections comes first when both are shown.
Sort rows Alphabetical, or most-offline-first for monitoring at a glance.
Row spacing Comfortable or compact, in list mode.
Card min width Minimum card width in dashboard mode. Cards grow past it to fit long folder names, so set a larger value for uniform cards.
Text size Size of the row and card text.
Count colour Colour of the online and logged-in number.
Offline highlight Optionally colour the count when some members are offline, with its own colour.

How the counts are worked out

Question Source
Which folders exist and which cameras they hold The Management Client device-group tree (user-defined folders).
Which cameras are online The current device state reported by the Event Server.
Which roles exist and their users The configuration role and user lists.
Which users are logged in The MIP environments currently connected to the Event Server, matched to role members.

Role membership is matched to logins by user name, since the connected-client list does not expose a SID. Active Directory users are matched on account and display name.

Federated Architecture

The plugin supports Milestone Federated Architecture. On startup it enumerates the master site and every federated child site, so a parent site that has no recording server of its own still shows the recorders, cameras, storage and users of its child sites.

Each site is queried with its own session token (the Smart Client already holds the federated logins) and gets its own message channel for online state and connected users. Recorders, cameras and users are tagged with the site they came from, and on a multi-site system a Site column appears in each table and in the CSV exports. On a single, non-federated site the Site columns stay hidden and the window behaves exactly as before.

The discovered sites are logged once at startup (Sites: N (names)) under category SystemStatus - SC BG, which is the quickest way to confirm all expected child sites were found.

How it works

Three layers feed the window.

A background component runs for the whole Smart Client session and talks to each site's Event Server over a per-site message channel. It keeps the per-camera online state and the connected-user list current, which powers the toolbar tooltip and the online dots even before the window is opened. This layer is light and does not talk to the recording servers.

A second background layer pre-loads the first and last recorded timestamp of every camera. It starts as soon as the Smart Client starts, walks the cameras at a gentle pace (two recorders at a time) into a cache, and rescans the whole cache every 30 minutes. Loading the ranges up front and in small batches avoids the SequencesGetAroundWithSpan request timeout that a single all-cameras-at-once query can hit on large systems. The window simply reads this cache.

While the System Health window is open, it queries each recording server's status service directly for storage, recorder state, and the live video statistics of that recorder's cameras. These per-recorder calls run in parallel, across all sites.

Question Source
Which sites exist The master site and its federated child sites.
Which cameras are enabled The configuration device tree of each site, walked down to the real camera devices.
Which cameras are online The current device state reported by each site's Event Server.
FPS, bitrate, resolution, codec, used storage The recording server's status service (video device statistics).
Per-recorder bandwidth and camera count Derived in the client by summing and counting that recorder's cameras.
Storage used and free per server The recording server's recording and archive storage status.
First and last recording, span The recorded-sequence data for the camera, pre-loaded into the background range cache.
Who is connected, and client type The MIP environments currently connected to each site's Event Server.

When a recording server is offline

If a recording server does not answer, its cameras are shown with a gray dot and the recorder name in red, since their real state is unknown. That recorder still appears in the Recording Servers table with a red dot and an Unknown state. The plugin fails fast on an unreachable recorder rather than waiting on long timeouts, and it skips recording-range queries for those cameras. When the server comes back, storage, state, and recording ranges recover on their own within a few seconds.

Where it works

Workspace Behavior
Live Button visible, window available.
Playback Button visible, window available.

Permissions

The connected user needs the rights to read device status, storage and recorder status, recorded sequences, and to see other connected clients. If the logged-in account lacks those rights, cameras can read as offline, storage and statistics can come back empty, and the user list can be short. Use an account with the appropriate view and status permissions.

Troubleshooting

Problem Fix
System Status button missing from the toolbar Plugin DLLs must be in MIPPlugins\SystemStatus\. Unblock the ZIP if you copied it manually, then restart Smart Client.
Cameras show but stream statistics are empty A camera only reports statistics while it is actively streaming or recording. An enabled but idle camera shows online with no live figures.
A whole recorder's cameras are gray That recording server did not answer. Confirm it is running and reachable from the client, then check MIPLog.txt under category SystemStatus - SC BG.
Storage % is empty for a camera The percentage needs the recorder's total configured storage, which arrives with the storage refresh. It fills in once a full refresh completes.
First and last recording read as a dash or stay on Loading Ranges are pre-loaded in the background and skipped for offline recorders. A cell shows Loading until its background query returns; a failed query reads as error in MIPLog.txt. The cache is rescanned every 30 minutes.
A child site is missing Check the startup Sites: N (names) line under category SystemStatus - SC BG to confirm the site was enumerated. The connected account must have access to that federated site.
Performance on large systems The log records per-recorder status-service timings on each full fetch (with a per-call breakdown for slow recorders) and a batch summary (min / avg / max / p95 / slowest) for each background range sweep, which helps pinpoint a slow or unreachable server.