Skip to content

Xymon 5.0.1

Pre-release
Pre-release

Choose a tag to compare

@spiderr spiderr released this 05 Jun 15:41
· 3 commits to main since this release

Xymon 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

Screenshot 2026-06-05 at 12 03 34β€―PM

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

Screenshot 2026-06-05 at 12 14 36β€―PM

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.
Screenshot 2026-06-05 at 12 18 19β€―PM

  • Ack modal: pre-populated with the alert cookie; submit sends the xymondack message 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 xymondboard on 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.cgi now appends Acked at: <timestamp> to the ack message, so the exact acknowledgement time is stored in xymond and displayed in the Acknowledged banner without consulting history logs.
  • enadis.cgi now appends Disabled 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 OFFSET query 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 from hosts.cfg
  • Status report (statusreport.cgi) β€” single-test status across all hosts; also fixed a realloc crash triggered by the --filter and --column command-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.
  • RRDGRAPHZOOM environment variable support for HiDPI/Retina display rendering (passes --zoom N to rrd_graph).
  • zoom.js externalized 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 expects const char ** or char ** 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 info collection
  • xymon-snmpcollect: handle Net-SNMP builds without MD5 support
  • Build system: macOS package-manager dependency path detection
  • clock-gettime library 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