ZABBIX is a great, free-of-cost, GPL-licensed (define), all-in-one 24x7 monitoring and alerting tool for networks and servers. It has a nice Web-based interface for administration, reporting, and graphing; and it has other features rivaling expensive commercial products. ZABBIX's alerting mechanism is nearly prescient -- it can catch trouble early and send an alert before a problem becomes becomes critical. You have your choice of email, SMS-capable devices (define), pager and even WinPopUps. Or all of the above.
ZABBIX supports virtually all modern operating systems. The server component runs on Linux, Unix, and Mac OS X, and there is client software for Unix variants and Windows. There is a reason for limiting the server component to Unix variants, as the ZABBIX manual explains: "Due to security requirements and mission-critical nature of monitoring server, UNIX is the only operating system that can consistently deliver the necessary performance, fault tolerance and resilience."
ZABBIX stores data in a database backend, either MySQL or PostgreSQL. MySQL is recommended for fastest performance. You'll also need Apache, PHP and development files for whichever database you choose. Also important is network time synchronization, so be sure to run a local time server. (See Resources.)
Refer to the ZABBIX manual for the installation howto for installing from source code. ZABBIX has two components: Server and Agent. There are RPMs for ZABBIX (search rpm.pbone.net); I have not found any Debian packages yet.
The Web-based interface is clean and well-organized. After installation point a Web browser to wherever your PHP scripts installed, usually http://localhost/~zabbix. Click on "Config." The initial login is "Admin" with no password. Make yourself a ZABBIX account by clicking "Users", give yourself read/write/add permissions, then click the "Media" link to add your email address. Then go back and set the Admin password.
Setting the SMTP server is necessary if you want ZABBIX to send email alerts to you, so do this next. Then you can start adding hosts to be monitored by clicking the "Hosts" link. Every system that is being monitored must have the ZABBIX agent installed. You may add hosts to the ZABBIX server before installing the client software by setting the status to "Not Monitored." Be sure to change this after installing the ZABBIX agent.
Finally, start the ZABBIX server daemon, suckerd:
Every time you add a new host you get a big list of possible items to monitor. Not all services require the ZABBIX agent, like Web, FTP, SSH, and mail servers. ZABBIX connects directly to these to see if they are running and accepting connections.
Using the ZABBIX agent opens up a whole new world of monitoring possibilities. For example, you can monitor servers on non-standard ports, like this:
The real ZABBIX gold is in the performance monitors. Users are always griping about "the network is slow. The mail server is slow. Everything is slow." ZABBIX gives you the tools to find out for yourself. Some of the available checks are:
How many seconds does it take to get a response from the POP server:
How many seconds does it take to get a response from the Web server:
And so forth for all of your servers. Another useful item to monitor is used/remaining disk space:
You can dig more deeply into server load by monitoring numbers of writes in the last minute or five minutes, or whatever you specify:
And also reads:
Swap space, physical memory, CPU temperature, number of running processes, number of inodes, and netload are but a few of the many remaining items that ZABBIX can monitor.