A simple, powerful, and secure monitoring agent for Windows and Linux.
NSClient++ (nsclient) is the monitoring agent that runs on the machines you want
to monitor. It exposes the system to your monitoring server (Nagios, Icinga,
Naemon, Op5 Monitor, Checkmk, Prometheus, Zabbix-via-NRPE, …) over whichever
protocol that server speaks. It can also push results, expose a REST API,
scrape Windows performance counters, run external scripts, and be extended
with Lua, Python, or native plugins.
- Website: https://nsclient.org
- Documentation: https://docs.nsclient.org
- Issues / discussions: https://github.com/mickem/nscp/issues
- Quick start
- What it does
- Supported protocols
- Common monitoring scenarios
- Extending NSClient++
- Supported platforms
- Which package to download
- Building from source
- Documentation map
- Contributing
- License
The fastest path from zero to a working check is the Quick Start guide — it gets you installed and running your first check in about 10 minutes.
For more depth:
- Installing NSClient++ — interactive MSI walkthrough, silent install, MSI properties, remote config.
- Web interface — manage and query the agent from a browser.
- Securing NSClient++ — TLS, two-way certificate authentication, per-protocol hardening.
- How it works (concepts) — modules, commands, the filter/threshold engine shared by every check.
- FAQ — timeouts, allowed-hosts, NRPE insecure mode, performance counter pitfalls, escaping.
NSClient++ has three core jobs:
- Answer queries — let a monitoring server ask "is this machine healthy?" and return a Nagios-style status + perfdata.
- Submit results — push the same kind of results to a monitoring server on a schedule.
- Act on events — run actions (scripts, custom modules, REST calls) when something changes.
Every check shares the same filter/threshold/perf-config engine, so the same expressions work across CPU, disk, services, event logs, counters, and custom scripts. See Checks in depth.
NSClient++ deliberately speaks many protocols so it can plug into whatever monitoring stack you already have.
| Protocol | Direction | Use it for | Guide |
|---|---|---|---|
| NRPE | Active (pull) | Nagios / Icinga / Naemon polling the agent — the most widely supported pattern. | Active monitoring with NRPE |
| NSCA | Passive (push) | Legacy Nagios passive submissions. | Passive monitoring (NSCA/NRDP) |
| NSCA-NG | Passive (push) | TLS-PSK successor to NSCA — modern crypto, same passive pattern. | Passive monitoring (NSCA-NG) |
| NRDP | Passive (push) | HTTP-based modern replacement for NSCA. | NRDP (in the NSCA scenario) |
| Icinga 2 API | Passive (push) | Submit scheduled check results directly to the Icinga 2 REST API. | Passive monitoring (Icinga 2) |
| Checkmk | Active (pull) | Serve a Checkmk-compatible agent dump on TCP/6556. | Checkmk agent integration |
| Prometheus | Active (scrape) | Expose OpenMetrics on /api/v2/openmetrics for Prometheus to scrape. |
Prometheus scraping |
| Graphite | Passive (push) | Stream performance data to a Graphite / Carbon backend for graphing. | GraphiteClient reference |
| Syslog | Passive (push) | Forward results as syslog records. | SyslogClient reference |
| SMTP | Passive (push) | Email notifications from check results. | SMTPClient reference |
| REST API | Active (pull) | Custom integrations, scripts, dashboards, and the built-in web UI. | REST API reference |
End-to-end guides — each one has the minimal config, the command to run, and example output. Full list: docs.nsclient.org/scenarios.
System health
- Windows server health — CPU, memory, disk, uptime as a baseline
- Disk space alerting
- Service & process monitoring
- Event log monitoring
- Performance counter (PDH) monitoring
Network
- Network checks — ping, TCP port, HTTP, DNS
Extensibility
- External scripts — wrap PowerShell, batch, or VBScript checks
NSClient++ is designed to be open-ended. Pick the extension model that fits your environment:
| Option | Best for |
|---|---|
| ExternalScripts | Reuse PowerShell, batch, shell, or any existing tooling. Simplest path. Guide |
| LuaScripts | In-process scripts with no extra runtime to install — runs anywhere NSClient++ does. |
| PythonScripts | Full Python inside the agent; great power, but you need Python installed on the host. Guide |
| Native modules | C++ plugins using the plugin API — maximum control, maximum effort. |
| Zip modules | Bundle scripts + config as a redistributable add-on. Guide |
See the Extending NSClient++ section for the full picture.
- Windows: Windows 10 / 11 and Windows Server 2016 / 2019 / 2022 / 2025 on x64, x86, and ARM64. A legacy build covers Windows XP / Server 2003 through Server 2012 R2.
- Linux: Ubuntu 24.04 LTS and Rocky / RHEL / AlmaLinux 9 and 10 on x86_64 and aarch64. Other glibc-compatible distributions usually work too. Some modules are Windows-only (event log, PDH, WMI, service control).
The following packages are produced by the official build pipelines. Pick the one that matches your operating system and architecture:
| Operating system | Version | Architecture | Package / artifact name | Notes |
|---|---|---|---|---|
| Windows (modern) | Windows 10 / 11, Server 2016 / 2019 / 2022 / 2025 | x64 (64-bit) | NSCP-<version>-x64.msi |
Recommended for all modern Windows systems. Built with MSVC 2022. |
| Windows (modern) | Windows 10 / 11, Server 2016 / 2019 / 2022 / 2025 | x86 (32-bit) | NSCP-<version>-Win32.msi |
Use only on 32-bit Windows installations. Built with MSVC 2022. |
| Windows (modern) | Windows 11 ARM, Server 2025 ARM | ARM64 | NSCP-<version>-ARM64.msi |
Native ARM64 build, cross-compiled with the v143 toolset. Use this on Windows-on-ARM devices (e.g. Surface Pro X / Copilot+ PCs, ARM-based Azure VMs). |
| Windows (legacy) | Windows XP and above | x86 (32-bit) | NSCP-<version>-Win32-legacy-xp.msi |
Statically linked, built with the v141_xp toolset. Use this on any Windows older than Windows 10 / Server 2016. Works on x64 versions of these older OSes too. |
| Ubuntu | 24.04 LTS (Noble) | x64 (amd64) | NSCP-<version>-ubuntu-24.04-amd64.deb |
Should also install on recent Debian/Ubuntu derivatives with compatible glibc and Lua 5.4. |
| Ubuntu | 24.04 LTS (Noble) | ARM64 (aarch64) | NSCP-<version>-ubuntu-24.04-arm64.deb |
For 64-bit ARM hosts (e.g. AWS Graviton, Ampere Altra, Raspberry Pi 4/5 running Ubuntu 24.04 arm64). |
| Rocky Linux / RHEL / AlmaLinux | 9 | x64 (x86_64) | NSCP-<version>-rocky-9-x86_64.rpm |
Compatible with RHEL 9 and other RHEL 9 rebuilds (AlmaLinux 9, Oracle Linux 9, CentOS Stream 9). |
| Rocky Linux / RHEL / AlmaLinux | 9 | ARM64 (aarch64) | NSCP-<version>-rocky-9-aarch64.rpm |
64-bit ARM build for RHEL 9-family distributions. |
| Rocky Linux / RHEL / AlmaLinux | 10 | x64 (x86_64) | NSCP-<version>-rocky-10-x86_64.rpm |
Compatible with RHEL 10 and other RHEL 10 rebuilds. |
| Rocky Linux / RHEL / AlmaLinux | 10 | ARM64 (aarch64) | NSCP-<version>-rocky-10-aarch64.rpm |
64-bit ARM build for RHEL 10-family distributions. |
In addition, a stand-alone check_nsclient binary is published alongside each
Linux package for use as a Nagios/Icinga check plugin.
On unsupported distributions you can build from source — see build.md.
NSClient++ is built with CMake. On Windows it uses Visual Studio 2022; on Linux it uses GCC or Clang. See build.md for the full step-by-step build instructions, dependencies, and tips.
The full documentation is organised as:
- Quick Start — your first 10 minutes
- Setup — installing, web UI, hardening
- Concepts — how modules, commands, checks, permissions, and settings fit together
- Scenarios — end-to-end recipes
- Reference — every module, command, and setting
- Extending — Python, Lua, native plugins, zip modules
- REST API — programmatic access
- FAQ — operational gotchas
Contributions are welcome — bug reports, fixes, new checks, doc improvements, and platform packaging help.
- File issues and feature requests at https://github.com/mickem/nscp/issues.
- Pull requests should target
main. CI builds Windows and Linux packages on every PR; please make sure the build is green before requesting review. - Documentation lives under
docsand is published to https://docs.nsclient.org. - For non-trivial changes, open an issue first to discuss the approach.
NSClient++ is dual-licensed — you may use it under either the
Apache License 2.0 or the GNU General Public License, version 2.0 (only),
at your option (SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-only). See
COPYING for the summary, the LICENSES/ directory for the
full license texts, and THIRD-PARTY-NOTICES.md for
bundled third-party components.