Xymon 5.0.1
Pre-releaseXymon 5.0.1 β HTML5/Bootstrap 5 Web UI
This release continues the HTML5/Bootstrap 5 modernization of the Xymon web UI started in 5.0.0. All changes are to the web layer only β monitoring logic, protocols, and CGI query string APIs are unchanged.
New: Pure-CSS Color Filter on Overview Pages
The main status grid (xymon.html), non-green page (nongreen.html), and critical page (critical.html) now have a row filter in the page header. Clicking a color toggles that color on/off; multiple colors can be active simultaneously (OR logic β a row is shown if it contains any checked color).
This is implemented entirely in CSS using :has() selectors β no JavaScript, no page reload, no server round-trip. Each host row carries a xymon-host-row class; per-color icon cells carry xymon-{color} classes (already present from the 5.0.0 FontAwesome conversion). The CSS then does:
body:has(.xymon-filter-btn:checked) .xymon-host-row { display: none; }
body:has(#filter-red:checked) .xymon-host-row:has(.xymon-red) { display: table-row; }
/* β¦ one rule per color */Filter state resets on page reload β intentional for a monitoring tool where you want a fresh view each time. Degrades gracefully in browsers without :has() support (Chrome <105, Firefox <121) β the buttons appear but all rows remain visible.
The nongreen page omits the green button (there are no green rows on that page by definition). The critical page includes the filter alongside the existing Edit button.
New: Inline Acknowledge and Disable on the Service Status Page
Previously, acknowledging an alert or disabling a check required navigating away from the service status page to a separate form. Both actions can now happen via Bootstrap modal dialogs launched directly from the status page header. Bulk acknowledge.sh form still exists as before via tidy link in acknowledgements.sh page header.

- Ack modal: pre-populated with the alert cookie; submit sends the
xymondackmessage without leaving the page. - Disable modal: duration selector, reason field, and an optional host-list checkbox tree for disabling multiple services at once β all without a page navigation.
- Smart suppression: the Ack button is hidden when the test is already acknowledged; the Disable button is hidden when the test is already disabled. The buttons are re-queried from
xymondboardon each page load so the state is always current. - The maintenance page (
enadis.cgi) now pre-selects the correct host and service when launched from a status page link, and includes a Disable button for convenience.
New: Status Page Acknowledgement and Disable Banners β Structured Layout
The status log page previously showed ack and disable information as a single pre-formatted text blob. Both banners are now parsed and rendered as structured Bootstrap alert cards with discrete By / At / Until / Reason fields. Banner background color reflects the current test status color (red alert has a red tint, yellow has a yellow tint, etc.).
The Acknowledged banner now appears above the status message body text, alongside the Disabled banner when both apply, so the full context is visible without scrolling past the log.
Fix: Acknowledgement Preserved When a Test Is Disabled (core 5.0.1 fix)
Problem: Xymon's default OKCOLORS includes blue (disabled state). When a test is disabled it transitions to blue, which xymond treats as "OK", causing it to immediately clear the test's acknowledgement record (ackmsg and acktime are zeroed). On the status page, the ack was gone the moment the disable took effect β there was no way to know the test had been acknowledged before being disabled.
Fix: enadis.cgi now queries xymondboard for the active ack before sending the disable command. If a live ack is found, its reason, author, timestamp, and expiry are embedded as structured Ack-preserved-* fields inside the disable message itself. Since xymond preserves the disable message (dismsg) even after clearing ackmsg, those fields survive. The status page then renders a Previously Acknowledged banner beneath the Disabled banner.
This fix only applies to disables performed after upgrading. Tests disabled prior to this release will not show the preserved ack banner.
Fix: Timestamps Embedded in Ack and Disable Records
acknowledge.cginow appendsAcked at: <timestamp>to the ack message, so the exact acknowledgement time is stored inxymondand displayed in the Acknowledged banner without consulting history logs.enadis.cginow appendsDisabled at: <timestamp>to the disable message for the same reason.
Previously, only the acknowledgement duration was stored β the absolute time had to be inferred.
Fix: Non-Green Page Shows Active Acknowledgements
The non-green overview (nongreen.html) now shows a table of currently acknowledged services above the event log. Previously, an acknowledged-but-still-non-green test could be hard to distinguish from an unattended alert when looking at the overview.
Fix: Event Log β 24-Hour Default Window and Server-Side Pagination
- Default time window changed from 4 hours to 24 hours, matching the filter form's own default and giving a more useful out-of-the-box view.
- Server-side pagination: the event log now renders a page of events (default 100) with Newer / Older Bootstrap navigation controls above and below the table. All active filter parameters (host regex, color match, time range, etc.) are preserved in the pagination links. The
OFFSETquery parameter drives the page position. Previously the event log rendered as a single unbounded list which could be extremely slow on busy installations.
Fix: Service Name Links to Status Page in Event Log and Acknowledgements
In the event log and the acknowledgements list, the service name column is now a hyperlink to svcstatus.cgi for that host/service. Previously it was plain text β navigating from a log entry to the live status page required manually constructing the URL.
Fix: Compact Timestamps in Event and Acknowledgements Tables
Event log and acknowledgements list timestamps changed from ctime() format (Thu Jun 5 12:34:56 2026\n) to strftime("%b %d %H:%M") (Jun 05 12:34). The old format wasted column space and included a redundant year and trailing newline.
HTML5 Cleanup β Tables, Notifications, Configuration Reports
The following pages were still using HTML4 table markup, inline styles, or legacy Bootstrap 3 patterns and have been updated to proper Bootstrap 5 responsive tables:
- Notifications list (
notifications.cgi) β alert pending queue - Acknowledgements list (
acknowledgements.cgi) β active ack table - Event log (
eventlog.cgi) β dark-themed responsive table with sortable header - Configuration report (
confreport.cgi) β host/test/alert configuration dump - Critical view (
criticalview.cgi) β priority systems dashboard - Find host (
findhost.cgi) β search results table - Ghost list (
ghostlist.cgi) β hosts sending data but absent fromhosts.cfg - Status report (
statusreport.cgi) β single-test status across all hosts; also fixed arealloccrash triggered by the--filterand--columncommand-line arguments
The overview pages now render info, trends, and client column icons inline within the hostname cell rather than as separate service columns, reducing horizontal sprawl on wide host tables.
RRD Graph Improvements (carried from 5.0.0 development)
- Zoom overlay button on graph cells links to the graph zoom view.
RRDGRAPHZOOMenvironment variable support for HiDPI/Retina display rendering (passes--zoom Ntorrd_graph).zoom.jsexternalized as a static file rather than inlined into each page response.- RRDtool argv API abstracted via
lib/rrd_api_compat.hβ autodetects whether the installed RRDtool expectsconst char **orchar **argv, fixing build failures on newer RRDtool versions (merged from upstream).
Upstream Merges
Merged from upstream main:
- RRDtool argv API compatibility layer (
rrd_api_compat.h) β drop RRDtool <1.2 support - FreeBSD XymonClient:
pkg infocollection xymon-snmpcollect: handle Net-SNMP builds without MD5 support- Build system: macOS package-manager dependency path detection
clock-gettimelibrary detection fix- Syslog path fix in
analysis.cfg(5)man page
Installation Notes
A ./configure re-run is required after upgrading from 5.0.0 due to the new lib/rrd_api_compat.h header introduced by the upstream RRDtool API abstraction. The RPM %build section handles this automatically.
RPM: xymon-5.0.1-0.el9.tera.x86_64.rpm