Task · OPN-0140

Spike: source for Zenarmor engine health (crash and stall counts)

Description

Zenarmor’s check_health.sh reports crash_count and stall_count, but it is an on-box script, not a REST endpoint. Find out whether the engine logs crashes and stalls to syslog (then derive a counter from the existing receivers) or whether the values are only available on the box (then add them to the OPN-0136 textfile script). Value: engine stalls are the leading suspect for netmap ring-full drops.

Acceptance Criteria

Definition of Done

Implementation Plan

Inspect source contracts and live evidence where required; implement bounded telemetry with fixtures, regenerate shared artifacts, review and run just check before landing.

Implementation Notes

Source verified read-only on 2026-10-15: installed check_health.sh lines 685-692 scans current-day main logs; current SystemUtils::getEngineCrashStallCount at lines 312-333 scans active and archive main_* and filters local Y-m-d. Both count heartbeat for / terminated with signal. HealthUtils embeds these as engine crash_count/stall_count. HealthController is loopback-only and calls check()->send(), not a read-only metrics API; Logger writes local files rather than syslog. No matching current-day engine lines were found. Do not run check_health.sh for collection: it can stop/disable services. Follow-up uses daily gauges and bounded read-only log scanning.

Follow-up filed as OPN-0141 (daily Zenarmor engine crash/stall gauges through the textfile companion), dependent on OPN-0136 (physical NIC textfile companion).

Final Summary

Identified installed local engine-log source and daily reset/retention semantics. Health API is check-and-send, not a safe polling endpoint; shell health check can stop services. Filed OPN-0141 (daily Zenarmor crash/stall textfile gauges) as required implementation follow-up. Durable source findings documented; just check passed.

View the source file on GitHub