Anders als viele andere Monitoring-Programme besitzt Nagios keinerlei eigene Mechanismen, um den Status von Systemen und Netzwerkdiensten zu überprüfen. Diese Aufgabe überlässt es externen Anwendungen, den Nagios Plugins. Bei den Erweiterungen, die man auch als Module bezeichnet, handelt es sich entweder um bereits kompilierte Dateien, die beispielsweise in C oder C++ geschrieben sind, oder um ausführbare Skripte (Perl, PHP etc.). Sie enthalten Kommandozeilenargumente, die den jeweiligen Check in die Wege leiten und die Ergebnisse an die Überwachungssoftware weiterleiten. Die Ausführung übernimmt Nagios wiederum selbst, wenn der Status des entsprechenden Dienstes bzw. Hosts kontrolliert werden soll.
Die Plug-ins agieren folglich als Abstraktionsschicht zwischen der Monitoring-Logik, die im Nagios-Interface in visualisierter Form präsentiert wird, und den eigentlichen Diensten und Hosts, die überwacht werden. Der Vorteil dieser Architektur ist, dass sie Nagios dazu befähigt, alles zu überwachen, für das sich ein automatischer Überprüfungsprozess programmieren lässt. Allerdings versteht das Monitoring-Tool selbst weder, welche Eigenschaften der Netzwerkkomponenten es inspiziert, noch, wie die einzelnen Checks ausgeführt werden – was auch der Grund dafür ist, dass Nagios ohne Plugins nicht funktioniert.