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
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 firstname.lastname@example.org:/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 Goodbye!
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. */ #endif
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 \ http://downloads.sourceforge.net/sourceforge/zenoss/zenoss_core-4.2.5-2108.el6-pristine-SP743.tgz [zenoss@ ~]$ ls zenoss_core-4.2.5-2108.el6-pristine-SP743.tgz [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 http://127.0.0.1:8080/ (unless you will be told a different URI).