Service Health & Resource Alarms
This is the platform layer. When a specific device, tag, model, or scan group looks wrong, start with the layer that owns it. But when many things fail at once, or the whole server slows down, the cause is usually one layer beneath them all: a background service has stopped, or the host is out of CPU, memory, or disk. This page covers how to read the System Alerts banners, diagnose unhealthy services and their heartbeats, respond to resource alarms, and interpret scan-group execution errors.
For the shared status colors, the three diagnostic fields, and the auto-clear vs. stuck checklist, see Reading Status, Quality & Errors. This page does not repeat those.
Start with the System Alerts banners
Koios continuously checks four platform signals and surfaces them as alert banners. Read the banners first — they tell you which layer to investigate and link straight to the tool that owns it.
Two of these also pin a persistent bar at the bottom of the app until resolved: the license grace period warning and the unhealthy services banner, which names the services that aren't running.
The failed-entity and license banners are the entry points to other layers. Follow them to Bad, Missing, or Frozen Tag Values, A Model or Binding Isn't Running, or Licensing Problems. The rest of this page covers services and resource alarms.
Unhealthy or stopped services
Open System > Service Status to see every service. Services are split into two tables:
- Application Services — Data Collector, Predict Engine, Expression Evaluator, Parameter Mapping, Performance Monitoring, and Component Engine. These do the platform's real work, and they report heartbeats.
- Infrastructure — Celery Worker, the configuration database, the time-series database, the in-memory cache, the web proxy, and the metrics agent. These support the application services.
Each row shows status, CPU, memory, PID, and uptime.
How heartbeats decide health
Application services report a heartbeat on a regular cadence. The status badge combines that heartbeat with the process state:
Unresponsive is the key heartbeat state: the process didn't crash, so it isn't Failed, but it stopped checking in. A service that pins the host CPU or runs out of memory will often go Unresponsive rather than Failed. Hover any badge for a plain-language explanation.
Recover a service
Click a service row to open its detail drawer. The Overview tab shows the description, live metrics (CPU, memory, thread count, PID, uptime), Last Heartbeat (when it last reported in), and any reported Error Info message and detail. Action buttons appear in the footer based on the current state:
Start and Restart run immediately; Stop asks for confirmation. The list refreshes automatically afterward.
When a service keeps going Unresponsive or Failed
- Open the drawer's Diagnostics tab (application services only). It shows the service's live workload: Pressure (thread-pool utilization as a rolling average), In-Flight (tasks executing now), and Queued (tasks waiting). A badge turns yellow at 70% pressure and red at 90%. Sustained high pressure means the service is overloaded, not broken — reduce its workload or scan rate rather than just restarting it.
- For the Predict Engine, the Diagnostics tab lists Top Contributors — the AI models putting the most load on the service. Click a model to open it and check whether one model is starving the rest.
- Stream the service's log for the actual traceback. See Logs, and set the log level to Debug there if the default output isn't detailed enough.
- Check whether a resource alarm is active (next section). A service that keeps dying is often a symptom of the host running out of memory or disk.
Resource alarms: CPU, memory, disk, network
A Performance Alarm banner, or a red dot on a tab in System > Health, means a hardware threshold has been crossed. The Health page has four tabs, each with a live chart, an alarm limit, and display options. The alarm state is re-evaluated every 10 seconds; a red dot on the tab means that metric's alarm is currently active.
Each tab's Show Setpoint option draws the threshold as a dashed red line so you can see how close you are. Thresholds save automatically the moment you change them — there's no Save button.
Disk alarm won't clear
Disk pressure rarely resolves itself. The largest consumer is almost always historical storage. Lower retention windows and enable/tune compression (see the retention settings, below), then confirm the projected time-to-full estimate on the Disk tab is trending back up. Backups also accumulate — old pre-migration and manual dumps in the media volume can be pruned.
A resource alarm caused a service failure
If a resource alarm was active at the same time a service went Unresponsive or Failed, treat the alarm as the root cause. Relieve the resource pressure (reduce scan rates, tighten retention, add capacity), then restart the affected service. Restarting without relieving the pressure just repeats the cycle.
Device housekeeping failures (codes 14, 15, 17)
A running device can report a platform-side failure that isn't about the connection or a tag read — it's the Data Collector failing to complete background work for that device. These surface as device error codes and usually clear on the next cycle once the underlying service or resource pressure eases.
These are symptoms of service or host pressure, not a device fault. If one recurs, work the services and resource-alarm sections above — the fix is almost always there.
Scan-group errors: Overscan and On-Demand Read/Write
A scan group runs its members on a shared schedule. When the scan group itself is Failed or shows a warning, the error code identifies what went wrong at the group level (distinct from any per-tag or per-binding errors underneath it).
The On-Demand Read/Write failures here are the group-level view. When a model binding reports an on-demand read failure (binding code 20), diagnose it from the model side in A Model or Binding Isn't Running.
What's Next
- Reading Status, Quality & Errors: the shared status legend, the three diagnostic fields, and the master error-code lookup
- Services: the full Service Status page — heartbeats, diagnostics, and start/stop/restart
- System Health: the CPU, memory, disk, and network charts and every alarm setting
- Logs: stream a service's log and raise its log level to Debug
- Data Retention: tighten history and compression to relieve a disk alarm
- Server Won't Start: when the whole platform is down, not just one service
- Collecting Diagnostics for Support: what to gather before opening a ticket
