NSClient++ (nscp) aims to be a simple yet powerful and secure monitoring daemon. It was built for Nagios/Icinga, but nothing in the daemon is Nagios/Icinga specific and it can be used in many other scenarios where you want to receive/distribute check metrics.
The deamon has 3 main functions:
Allow a remote machine (monitoring server) to request commands to be run on this machine (the monitored machine) which return the status of the machine.
Submit the same results to a remote (monitoring server).
NSClient++ is designed to be open ended and allow you to customize it in any way you design thus extensibility is a core feature.
ExternalScripts responds to queries and are executed by the operating system and the results are returned as-is.
This is generally the simplest way to extend NSClient++ as you can utilize whatever infrastructure or skill set you already have.
The drawback is that external scripts cannot interact with the internals NSClient++ and thus they are limited in what they can do.
LuaScripts are internal scripts which runs inside NSClient++ and performs various tasks and/or responds to queries.
Lua is a popular embedded language which has a slightly archane syntax but it is very efficient and capable and comes bundled with NSClient++.
PythonScripts are internal scripts which runs inside NSClient++ and performs various tasks and/or responds to queries.
Python is an easy to learn yet powerful language which comes bundled with NSClient++.
.Net modules similar to Native modules below but written on the dot-net platform.
This allows you to write components on top of the large dot-net ecosystem. This makes it easy to develop check modules for in house developed solutions for instance if you have dot-net competence in-house.
Modules are native plugins which can extend NSClient++ in pretty much any way possible.
This is probably the most complicated way but gives you the most power and control.