Zenoss Monitoring System


The market for monitoring frameworks is very dense. There are highly-configurable free systems like Zabbix and Nagios and proprietary paid services, such as Thousandeyes, Catchpoint, and others. In this article, let’s briefly discuss the opensource monitoring system Zenoss, based on the Zope application server.

Released for GNU, Zenoss Core provides a web interface that allows sysadmins to control item availability and configuration, performance, and events.

The project development started nearly twenty years ago, in 2002 by Eric Dale. In 2005, Zenoss Inc. was founded with its headquarters in Austin, Texas.

Zenoss combines original software and several open-source projects to integrate data storage and process information collection through a web user interface. It comprises of multiple other opensource solutions, such as:

  • Zope Server, an object-oriented web server written in Python
  • Net-SNMP: A monitoring protocol that collects information about the state of the system
  • RRDtool: Logging and graphical display of data
  • Twisted: An event-driven networking engine written in Python and other

The list goes long, and I named only a few key components among many others. You can see the full list either on the official website or on Wikipedia.

What can it monitor?

Zenoss provides a vast specter of things to monitoring. For example:

  • Monitoring the availability of network devices using SNMP, SSH, and WMI
  • Monitoring of network services (HTTP, POP3, NNTP, SNMP, FTP).
  • Monitor host resources (CPU load, disk space usage) on most network operating systems
  • Monitoring device performance over time.
  • Additional Windows monitoring with open source WS-Management extensions
  • Event management tools to annotate system alerts
  • Automatic discovery of network resources and changes in network configuration
  • Alert system that provides rule set and calendar call notifications
  • Support for plugins of the Nagios format.

It is also worth noting that Zenoss does an outstanding job of network monitoring.

Starting from version 5.1. released in 2016, Zenoss supports Red Hat Enterprise Linux / CentOS and Debian and Ubuntu.

Setting up Zenoss on FreeBSD

Let’s use the following FreeBSD version to install the service:

# uname -a
FreeBSD ns.home 12.1-RELEASE FreeBSD 12.1-RELEASE #0: Fri Sep  6 08:49:13 UTC 2019
root@walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

Let’s add procfs to the /etc/fstab

# vi /etc/fstab
proc     /proc     procfs     rw     0     0

For applying changes without restarting the system, run:

mount -t procfs proc /proc

Next step is to install the necessary software:

# pkg_add -r bash && pkg_add -r gmake && pkg_add -r autoconf262 && pkg_add -r sudo 
&& pkg_add -r python && pkg_add -r mysql50-server && pkg_add -r net-snmp 
&& pkg_add -r swig && pkg_add -r subversion && pkg_add -r bazaar-ng

Now, let’s make a symlink on bash:

ln -s /usr/local/bin/bash /bin

Adding “zenoss” user to the system:

# adduser
Username: zenoss
Full name: zenoss
Uid (Leave empty for default):
Login group [zenoss]:
Login group is zenoss. Invite zenoss into other groups? []:wheel
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: bash
Home directory [/home/zenoss]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : zenoss
Password   : *****
Full Name  : zenoss
Uid        : 1001
Class      :
Groups     : zenoss
Home       : /home/zenoss
Home Mode  :
Shell      : /usr/local/bin/bash
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (zenoss) to the user database.
Add another user? (yes/no): no

Making sure that our user is able to rise privileges to root:

# vi /usr/local/etc/sudoers

We need to uncomment the following string (remove “#” symbol):

#%wheel ALL=(ALL) ALL

Now we have to create new file alloca.h in /usr/include:

# vi /usr/include/alloca.h

If you running FreeBSD 7.x or older versions, add the following lines:

#ifndef _ALLOCA_H
/* #include <stdlib/alloca.h> */
#undef  __alloca
/* Now define the internal interfaces.  */
extern void *__alloca (size_t __size);
#ifdef  __GNUC__
# define __alloca(size) __builtin_alloca (size)
#endif /* GCC.  */

Next, please make sure that MySQL is in the auto-start (runs after system reboot). Edit /etc/rc.conf:

# vi /etc/rc.conf

Add the following line:


Make the following folder and set the owner:

# mkdir /usr/local/zenoss
# chown -R zenoss /usr/local/zenoss

Now we have download the latest zenoss version and unpack it:

[zenoss@ ~]$ fetch \
[zenoss@ ~]$ ls
[zenoss@ ~]$ tar xvf zenoss_core-4.2.5-2108.el6-pristine-SP743.tgz

Once you unpack the tgz file, you will see the “install” bash script. Run it and follow the installation wizard. Once done, your copy of Zenoss should run on (unless you will be told a different URI).