NSClient++ (a.k.a. NSCP) is a free and open-source monitoring agent originally built for Nagios/Icinga and now usable with most modern monitoring systems. It exposes a wide range of system, performance and event-log checks via NRPE, NSCA, NRDP, REST and Prometheus-compatible endpoints, and can run external scripts in PowerShell, Python, Lua, Visual Basic and many more languages.
What's new in 0.25.0
The agent reports configuration it ignores, and a robustness pass over scripting and concurrency
0.25.0 makes misconfiguration visible: a section or key nothing reads is now logged, shown in the web UI and reported by nscp settings --validate. Collector-backed checks gain a warmup-state option, kill tree finally works on Linux, and the rest of the release is the harvest of a stress harness, a concurrency audit and a full test of the Lua and Python APIs: a Lua crash under concurrent calls, socket requests stuck behind unrelated slow checks, duplicated events and client payloads, and a long list of smaller fixes.
✨ Highlights
🔍 Configuration nothing reads is reported. A misspelled section, a section without its leading /, or a key above the first section used to be ignored without a word. The agent now warns about each one at startup and on every reload, the web UI shows a *Configuration problems* banner, and nscp settings --validate exits with 1 when it finds any (#647, #1657).
⏱️ warmup-state for collector-backed checks. check_cpu, check_load and, on Linux and macOS, check_memory, check_pagefile and check_network can report ok (or any other status) instead of UNKNOWN while the collector takes its first sample, so a restart need not raise alerts. A collector that is disabled or failing now says so instead of reporting zeros (#1621).
🐧 kill tree works on Linux. The script runs in a session of its own and a timeout signals the whole process group, so backgrounded helpers die with it; unloading CheckExternalScripts now ends running scripts (#1629).
🔒 Lua and Python scripting hardened. A Lua check running twice at once could crash the agent; listing scripts over REST ran every check; and a test of every documented API fixed a dozen bindings that did nothing or crashed (#1642, #1636, #1632).
📡 Socket servers no longer queue behind slow checks. About one NRPE, NSCA, check_mk or NSClient request in a few hundred waited for an unrelated long-running check, which showed up as an occasional Socket timeout (#1642).
🔒 OpenSSL 3.5.9 in the Windows builds, from the 29 September 2026 upstream security release (#1666).
⚠️ Upgrade notes
The full list is on the upgrading page, and the security fixes on the security notices page. …