A package for collecting time series metrics from networks, with good support for SNMP.
Python Shell
Switch branches/tags
debian/wheezy/ debian/wheezy/ debian/wheezy/2.1.2-1.b1-1_bpo70+1 debian/wheezy/2.1.1-1.rc1-1_bpo70+1 debian/wheezy/2.1.1-1_bpo70+1 debian/wheezy/2.1-8.rc3-1_bpo70+1 debian/wheezy/2.1-7.rc3-1_bpo70+1 debian/wheezy/2.1-6.rc1-2_bpo70+1 debian/wheezy/2.1-6.rc1-1_bpo70+2 debian/wheezy/2.1-6.rc1-1_bpo70+1 debian/wheezy/2.1-5.rc1-3_bpo70+1 debian/wheezy/2.1-5.rc1-2_bpo70+1 debian/wheezy/2.1-5.rc1-1_bpo70+3 debian/wheezy/2.1-5.rc1-1_bpo70+2 debian/wheezy/2.1-5.rc1-1_bpo70+1 debian/wheezy/2.1-1_bpo70+1 debian/wheezy/2.0.4-beta.1_bpo70+1 debian/wheezy/2.0.2-beta.1_bpo70+1 debian/wheezy/2.0.1-beta.1_bpo70+1 debian/wheezy/2.0-beta.1_bpo70+1 debian/wheezy/2.0-3.rc1-4.beta_1_bpo70+1 debian/wheezy/2.0-2.rc1-3.beta_1_bpo70+1 debian/wheezy/2.0-2.rc1-1_bpo70+2 debian/wheezy/2.0-2.rc1-1_bpo70+1 debian/jessie/ debian/jessie/ debian/jessie/2.1.2-1.b1-1 debian/jessie/2.1.1-1 debian/jessie/2.1.1-1.rc1-1 debian/jessie/2.1-8.rc3-1 debian/jessie/2.1-7.rc3-1 debian/jessie/2.1-6.rc1-2 debian/jessie/2.1-6.rc1-1 debian/jessie/2.1-5.rc1-3 debian/jessie/2.1-5.rc1-2 debian/jessie/2.1-5.rc1-1 debian/jessie/2.1-1 debian/jessie/2.0.4-beta.1 debian/jessie/2.0.2-beta.1 debian/jessie/2.0.1-beta.1 debian/jessie/2.0-beta.1 debian/jessie/2.0-3.rc1-4.beta_1 debian/jessie/2.0-2.rc1-3.beta_1 debian/jessie/2.0-2.rc1-1 2.1.2 2.1.2-2.b1 2.1.2-1.b1 2.1.1 2.1.1-1.rc1 2.1 2.1-8.rc3 2.1-7.rc3 2.1-6.rc1 2.1-5.rc1 2.1-2 2.0.4 2.0.3 2.0.2 2.0.2-3 2.0.2-2 2.0.1 2.0 2.0-3.rc1 2.0-2.rc1 2.0-1.a1
Nothing to show
Clone or download
Latest commit 3b778b3 Dec 14, 2017
Failed to load latest commit information.
devel Changes to allow TravisCI to use postgresql instead of sqlite. Produc… Aug 25, 2017
docs Updating link in docs to Internet-repo rpm Apr 21, 2016
esmond Fix for race condition between cassandra boot and esmond boot. Dec 14, 2017
esmond_client Bumping RPM and esmond_client to 2.0 Mar 3, 2016
rpm Bumping relnum and trying to get travisci happy again Dec 14, 2017
sql Change the remaining non-polling code to use ifName rather than Jun 26, 2014
test_data Reverting change to convert json to json string before again getting … Mar 14, 2014
util Fix for perfsonar/toolkit#271. Needed to init Django before running r… Oct 12, 2017
.gitattributes Ignoring hidden files when doing a 'git archive'. Need this so RPM bu… Nov 19, 2014
.gitignore Ignoring Vagrant related files Aug 26, 2017
.travis.yml According to the internet, this is how you get cassandra working in T… Dec 14, 2017
AUTHORS update authors; update copyright dates; update documentation authors;… Nov 26, 2013
COPYING update authors; update copyright dates; update documentation authors;… Nov 26, 2013
ChangeLog renaming part 2 Apr 25, 2013
INSTALL restructure Jun 8, 2007
LICENSE update authors; update copyright dates; update documentation authors;… Nov 26, 2013
README.rst Update README.rst Aug 26, 2017
TODO Merge up to date default/master branch into the pS branch for tests a… Mar 11, 2014
Vagrantfile Updating syncdb to migrate for Django 1.10 Aug 27, 2017
example_esmond.conf Changing the default replicas to 1 to better match the most common Oct 28, 2014
mkdevenv Modified mkdevenv script - pip and setup tools need to upgrade before… May 7, 2014
pylint.rc Checkpointing some linting changes. Jan 13, 2016
requirements.txt Linking to a specific version of django-filter to prevent issues with… Nov 1, 2017
setup.py A bunch of fixes to get things working with Django 1.10 after some te… Aug 27, 2017


https://travis-ci.org/esnet/esmond.svg?branch=develop https://coveralls.io/repos/esnet/esmond/badge.png?branch=develop

esmond: ESnet Monitoring Daemon

At this time esmond is only supported as part of the perfSONAR toolkit.

esmond is a system for collecting, storing, visualizing and analyzing large sets of timeseries data. It was driven by the needs of the ESnet engineering team but is likely useful to a much wider audience. esmond has a RESTful API which allows easy access to the data which is collected. The original focus was on collecting SNMP timeseries data which is still the system's forte, but there is support for generalized timeseries data. The perfSONAR project has begun using esmond to store timeseries of network measurements.

esmond uses a hybrid model for storing data. Timeseries data such as interface counters is stored using Cassandra. esmond will save the raw data, and create summarizations similar to RRD. However, the system never discards data through summarization, which distinguishes it from RRD (and whisper/ceres). Metadata (such as interface description and interface types from SNMP) are stored in an SQL database. Storing this data in an SQL database allows us to use the full expressiveness of SQL to query this data. Since this data changes relatively infrequently the demands placed on the SQL server are fairly modest. Our production server uses PostgreSQL, but it's likely that SQLite would work just fine. Data can be visualized using Graphite or through custom visualizations which can query the RESTful API.

The documentation has a lot more details.

Development Environment

This repository allows you to use Vagrant to create a VM on VirtualBox with the necessary components installed. The default VM is based on CentOS 7 and creates a shared folder in the VM that points at the top-level of your checked-out copy. This allows you to edit files on your base system and have the changes automatically appear in the VM.


  1. Install VirtualBox according the the instructions on their site for your system.

  2. Install Vagrant according the the instructions on their site for your system.

  3. Install the vagrant-vbguest and vagrant-reload plugins with the following commands:

    vagrant plugin install vagrant-vbguest
    vagrant plugin install vagrant-reload

Starting the VM

  1. Clone the esmond github repo:

    git clone https://github.com/esnet/esmond
  2. Start the VM with vagrant up. The first time you do this it will take awhile to create the initial VM.

Using the VM

  • The VM sets-up port forwarding by default so you can access esmond from the host system. You can test esmond runs on HTTP and HTTPS as follows:

    curl ""
    curl -k ""
  • Any changes you make to the checked-out code on your host system get reflected in the host VM under the /vagrant directory

  • The following symlinks are setup to files in the git copy of the code:

    • /etc/esmond -> /vagrant/vagrant-data/esmond-el7/etc/esmond
    • /usr/lib/esmond -> /vagrant
    • /usr/sbin/esmond_manage -> /vagrant/util/esmond_manage
    • /etc/profile.d/esmond.csh -> /vagrant/rpm/config_files/esmond.csh
    • /etc/profile.d/esmond.sh -> /vagrant/rpm/config_files/esmond.sh
  • You must run systemctl restart httpd whenever you make a code change

  • Run vagrant reload to restart the VM

  • Run vagrant suspend to freeze the VM. Running vagrant up again will restore the state it was in when you suspended it.

  • Run vagrant halt to shutdown the VM. Running vagrant up again will run through the normal boot process.

  • Run vagrant destory to completely delete the VM. Running again vagrant up will build a brand new VM.