Continuous Monitoring with Nagios
Nagios is an industry-standard open-source tool used to continuously monitor network devices, applications, and servers. Its powerful core engine can scale to monitor thousands of hosts efficiently.
What You Can Monitor
Nagios provides deep visibility into your infrastructure, alerting you the second a critical service fails or a server starts running out of resources.
End-to-End Visibility
• Server Resources: CPU load, memory utilization, disk space.
• Network Services: HTTP, FTP, SMTP, SSH, Ping.
• Infrastructure: Routers, switches, applications, databases, and system logs.
Fast Notifications
Sends alerts via email, SMS, or custom integrations immediately after detecting issues, minimizing downtime.
Custom Plugins
Highly flexible architecture supports plugins written in bash, Python, PHP, or Perl to monitor absolutely anything.
How Nagios Works
The Nagios ecosystem relies on a central server scheduling checks and distributed plugins executing the actual metric collection on remote machines.
Core Components
- Nagios Server Installed on the main host, it runs the core monitoring engine, scheduling, and web interface.
- NRPE Daemon Nagios Remote Plugin Executor: An agent installed on remote Linux servers that allows the central server to securely execute local plugins.
- Plugins Compiled executables or scripts that do the actual work of collecting metrics (e.g., checking disk space).
- Scheduler The internal clock of Nagios that determines when to execute plugins based on user-defined intervals.
Checks & The Monitoring Flow
Active Checks
Nagios dictates the schedule. The central server initiates the check, connects to the remote service (often via NRPE), and pulls the status back.
Passive Checks
External applications or remote hosts initiate the process, pushing status information back to the Nagios server asynchronously. Great for firewall-restricted environments.
The Active Monitoring Workflow
- 1. Schedule Nagios Scheduler triggers a check event based on time periods.
- 2. Execute Nagios reaches out and executes the corresponding Plugin.
- 3. Collect The Plugin interrogates the system and collects the raw metric data.
- 4. Return Status code (OK, WARNING, CRITICAL, UNKNOWN) is returned to Nagios.
- 5. Process & Alert Nagios processes the result and fires off notifications if an issue is detected.
Directories & Configuration
nagios/
├── bin # Main Nagios daemon binary
├── etc # All configuration files (.cfg)
├── libexec # Plugins used for monitoring (CRITICAL)
├── sbin # CGI executables for web interface
├── share # Web interface HTML and PHP files
└── var # Runtime data, status.dat, and logs| Important File | Purpose / Definition |
|---|---|
nagios.cfg | Main config file defining global settings and including other files. |
resource.cfg | Stores sensitive info securely, like database passwords (e.g., $USER1$). |
commands.cfg | Maps command names to actual plugin execution strings. |
contacts.cfg | Defines the users and email addresses that receive alert notifications. |
templates.cfg | Defines generic host/service templates to reduce code duplication. |
timeperiods.cfg | Defines valid monitoring hours (e.g., 24x7, or WorkHours only). |
cgi.cfg | Controls web interface access, permissions, and behavior. |
.htpasswd | Apache file that secures the Nagios web UI with login credentials. |