A comprehensive collection of modern monitoring plugins, designed for contemporary systems and best practices. Compatible with multiple monitoring systems including Icinga, Prometheus, and more.
This project provides a complete set of monitoring plugins, built from the ground up for:
- Modern C++17 standards
- Cross-platform support (Linux, macOS, Windows)
- Enhanced security and error handling
- Improved performance and reliability
- Better documentation and maintainability
- Comprehensive testing
- Multi-system compatibility - Works with any monitoring system
- 80 Monitoring Plugins - Complete coverage of system, network, and application monitoring
- Universal Compatibility - Works with Icinga, Prometheus, and other monitoring systems
- Modern C++ - Clean, maintainable codebase using C++17
- Cross-Platform - Works on Linux, macOS, and Windows
- Dependency-Free - Most plugins use only standard libraries and platform APIs
- Vendor Headers Support - Automatic download of third-party protocol headers
- Comprehensive Testing - Unit and integration tests for all plugins
- Package Management - DEB, RPM, PKG, and MSI packages available
disk- Disk space and usage monitoringload- System load average monitoringswap- Swap space monitoringprocs- Process monitoringusers- User session monitoringuptime- System uptime monitoringfile_age- File age and modification time monitoringfile_size- File size monitoring with thresholdsfile_count- File count in directory with pattern matching
ping- ICMP ping monitoringfping- Fast ping monitoringtcp- TCP connection monitoringudp- UDP service monitoringdns- DNS resolution monitoringdig- DNS query monitoringhttp- HTTP/HTTPS service monitoringsmtp- SMTP service monitoringssh- SSH service monitoringftp- FTP service monitoringimap- IMAP email service monitoringpop- POP3 email service monitoringnntp- NNTP news server monitoringircd- IRC daemon monitoringjabber- XMPP/Jabber server monitoringsip- SIP (Session Initiation Protocol) monitoringtelnet- Telnet service monitoringdhcp- DHCP service monitoringrpc- RPC portmapper and service monitoringntp- NTP time synchronization monitoringsnmp- SNMP monitoringssl_validity- SSL/TLS certificate validity monitoring
mysql- MySQL database monitoringmysql_query- MySQL query monitoringpgsql- PostgreSQL monitoringdbi- Database interface monitoring
activemq- Apache ActiveMQ message broker monitoringapache- Apache web server monitoring via mod_statuscassandra- Apache Cassandra NoSQL database monitoringceph- Ceph distributed storage cluster monitoringconsul- Consul service discovery and configuration monitoringcouchbase- Couchbase cluster monitoringdocker- Docker container and daemon monitoringelasticsearch- Elasticsearch cluster health monitoringetcd- etcd distributed key-value store monitoringgrafana- Grafana visualization platform monitoringinfluxdb- InfluxDB time-series database monitoringkafka- Apache Kafka distributed streaming platform monitoringkubernetes- Kubernetes API server monitoringldap- LDAP service monitoringlog- Log file pattern monitoring with regexmemcached- Memcached server statistics monitoringmongodb- MongoDB server availability monitoringnomad- HashiCorp Nomad container orchestration monitoringphpfpm- PHP-FPM process manager monitoringprometheus- Prometheus metrics endpoint monitoringrabbitmq- RabbitMQ message broker monitoringredis- Redis server status and performance monitoringradius- RADIUS authentication monitoringmrtg- MRTG data monitoringsolr- Apache Solr search platform monitoringvault- HashiCorp Vault secrets management monitoringzookeeper- Apache Zookeeper coordination service monitoring
ide_smart- IDE/SATA SMART monitoringhpjd- HP JetDirect printer monitoringsensors- Hardware temperature sensor monitoring (Linux)ups- UPS monitoring
negate- Utility to negate/invert plugin exit codes
# Clone the repository
git clone https://github.com/yourusername/netmon-plugins.git
cd netmon-plugins
# Build the project
make install-dev # Install development dependencies
make build # Build all plugins
make install # Install system-wideUbuntu/Debian:
sudo apt update
sudo apt install netmon-pluginsCentOS/RHEL:
sudo yum install netmon-plugins
# or
sudo dnf install netmon-pluginsmacOS:
brew install netmon-pluginsAll plugins follow the standard monitoring plugin interface (compatible with Icinga and other systems):
# Check disk usage
check_disk -w 80 -c 90 /dev/sda1
# Check HTTP service
check_http -H example.com -p 443 -S
# Check MySQL
check_mysql -H localhost -u monitoring -p password
# Check ping
check_ping -H 8.8.8.8 -w 100,20% -c 200,50%All plugins follow the standard monitoring plugin output format:
PLUGIN_NAME STATUS: Output message | perfdata
Example:
DISK OK - free space: / 4556 MB (56% inode=99%);| /=3644MB;15240;0;0;0 /var=15420MB;15420;0;0;0
netmon-plugins/
├── plugins/ # Individual plugin implementations
│ ├── disk/
│ ├── http/
│ ├── ping/
│ └── ...
├── src/ # Shared source code
│ └── common/ # Common utilities
├── include/ # Header files
│ └── netmon/ # Public API headers
├── vendors/ # Third-party protocol headers and libraries (MySQL, PostgreSQL, Oracle, etc.)
│ ├── include/ # Downloaded header files
│ ├── lib/ # Downloaded libraries
│ └── src/ # Downloaded source files
├── tests/ # Test suite
│ ├── unit/ # Unit tests
│ └── integration/ # Integration tests
├── docs/ # Documentation
│ ├── getting-started/
│ ├── development/
│ └── examples/
├── scripts/ # Build and deployment scripts
├── automation/ # CI/CD automation
│ ├── ci/ # CI configuration
│ ├── docker/ # Docker setup
│ └── vagrant/ # Vagrant setup
├── packaging/ # Package generation
│ ├── linux/
│ ├── macos/
│ └── windows/
├── deployment/ # Deployment configurations
├── tools/ # Utility scripts
├── config/ # Configuration files
└── project/ # Project management docs
# Install dependencies
make install-dev
# Build in debug mode
make dev-build
# Run tests
make test
# Build release
make build
# Create packages
make package- Create plugin directory:
plugins/myplugin/ - Implement plugin:
plugins/myplugin/check_myplugin.cpp - Add plugin name to
plugin_list.txt - Write tests:
tests/unit/test_myplugin.cpp - Update documentation
For plugins that need third-party protocol headers:
- Add download configuration to
vendor/CMakeLists.txt - Include headers:
#include "vendor/protocol_name.h" - Headers are automatically downloaded during build
- See
vendor/README.mdfor detailed instructions
# Run all tests
make test
# Run specific test suite
cd build && ctest -R "unit_tests"
# Run with coverage
make coverageThe following plugins are included in this project:
disk- Disk space monitoringfile_age- File age and modification time monitoringfile_count- File count in directory with pattern matchingfile_size- File size monitoring with thresholdsload- System load monitoringlog- Log file pattern monitoring with regexprocs- Process monitoringswap- Swap space monitoringuptime- System uptime monitoringusers- User session monitoring
dhcp- DHCP service monitoringdig- DNS query tooldns- DNS resolution monitoringftp- FTP service monitoringfping- Fast ping monitoringhttp- HTTP/HTTPS monitoringimap- IMAP email service monitoringircd- IRC daemon monitoringjabber- XMPP/Jabber server monitoringnntp- NNTP news server monitoringntp- NTP monitoringntp_peer- NTP peer monitoringntp_time- NTP time monitoringping- ICMP ping monitoringpop- POP3 email service monitoringrpc- RPC portmapper and service monitoringsip- SIP (VoIP) protocol monitoringsmtp- SMTP monitoringsnmp- SNMP monitoringssh- SSH monitoringssl_validity- SSL/TLS certificate validity monitoringtcp- TCP connection monitoringtelnet- Telnet service monitoringudp- UDP service monitoring
dbi- Database interface monitoringmysql- MySQL monitoringmysql_query- MySQL query monitoringpgsql- PostgreSQL monitoring
activemq- Apache ActiveMQ message broker monitoringapache- Apache web server monitoringapt- APT package manager monitoringcassandra- Apache Cassandra NoSQL database monitoringceph- Ceph distributed storage monitoringcluster- Cluster monitoringconsul- Consul service discovery monitoringcouchbase- Couchbase cluster monitoringdocker- Docker container monitoringelasticsearch- Elasticsearch cluster monitoringetcd- etcd distributed key-value store monitoringgrafana- Grafana visualization platform monitoringinfluxdb- InfluxDB time-series database monitoringkafka- Apache Kafka distributed streaming platform monitoringkubernetes- Kubernetes API monitoringldap- LDAP monitoringlog- Log file pattern monitoringmemcached- Memcached server monitoringmongodb- MongoDB server monitoringmrtg- MRTG data monitoringmrtgtraf- MRTG traffic monitoringnomad- HashiCorp Nomad container orchestration monitoringphpfpm- PHP-FPM process manager monitoringprometheus- Prometheus metrics monitoringrabbitmq- RabbitMQ message broker monitoringredis- Redis server monitoringradius- RADIUS monitoringsolr- Apache Solr search platform monitoringvault- HashiCorp Vault secrets management monitoringzookeeper- Apache Zookeeper coordination service monitoring
hpjd- HP JetDirect monitoringide_smart- IDE/SATA SMART monitoringsensors- Hardware temperature sensors (Linux)ups- UPS monitoring
by_ssh- Remote checks via SSHgame- Game server monitoringnt- Windows NT monitoringnwstat- Network statisticsovercr- Overcommit monitoringreal- Real-time monitoringtime- Time monitoring
dummy- Dummy plugin for testingnegate- Utility to negate/invert plugin exit codes
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.
- Documentation: docs/
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Original monitoring plugins community
- All contributors