Graphite
The installation consists of two parts
- Setting up the graphite monitoring engine
- Configuring to feed xAP
Introduction
Where as cacti uses a pull mechanism to reach out and gather statistics which requires something to cache previous values until the cacti back-end is ready to get them. Graphite on the other hand uses a push mechanism which is much simpler. It also means that as new xAP data elements are created they are automatically fed into your charts with zero additional work, unlike cacti which requires lots of extra effort for each new item you want to store and graph.
Its the preferred charting solution for xAP data.
Setting up Graphite
What is Graphite? http://graphite.wikidot.com/
The documentation for graphite: http://graphite.readthedocs.org/
Its suggested that you designate a new VM/Server as the graphite monitoring and graphing resource. These instructions have been tested on a RedHat Enterprise Linux/CentOS 6.3 and 6.5 x64 server. You're mileage may vary with other Operating system hosts.
Pre requisites
First first thing we need to do configure EPEL, a public domain software repository library that contains many of the RPM already pre-built that are required.
# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Graphite installation
We need these packages:
- python-carbon.noarch : Back-end data caching and persistence daemon for Graphite
- graphite-web.noarch : A Django webapp for enterprise scalable realtime graphing
- mysql
- mysql-server
- MySQL-python
# yum install python-carbon graphite-web mysql mysql-server MySQL-python
Start up mysql and setup a root password.
# service mysqld start # /usr/bin/mysql_secure_installation
Configure graphite to use the MySQL database within the /etc/graphite-web/local_settings.py config file.
/etc/graphite-web/local_settings.py
DATABASES = { 'default': { 'NAME': 'graphite', 'ENGINE': 'django.db.backends.mysql', 'USER': 'graphite', 'PASSWORD': 'secret', 'HOST': 'localhost', 'PORT': '3306', } }
Create graphite database
# mysql -e "CREATE USER 'graphite'@'localhost' IDENTIFIED BY 'secret';" -u root -p # mysql -e "GRANT ALL PRIVILEGES ON graphite.* TO 'graphite'@'localhost';" -u root -p # mysql -e "CREATE DATABASE graphite;" -u root -p # mysql -e 'FLUSH PRIVILEGES;' -u root -p
Setup the graphite database with a schema
/usr/lib/python2.6/site-packages/graphite/manage.py syncdb
Restart apache.
# chkconfig httpd on # service httpd restart
If all goes well you can point your browser at your graphite VM and you should be rewarded with the graphite home page.
Start carbon daemons
# chkconfig carbon-cache on # service carbon-cache start
xAP Applet configuration
The sample applet that can feed data to a Carbon data aggregator is called graphiteApplet.lua and can be found in the plugboard samples directory.
The only change required is to adjust the IP address to that of your graphite server.
graphite={port=2003,host="192.168.4.46"}
Copy the sample to the /etc/plugboard directory, edit, then restart the plugboard engine
/etc/init.d/xap restart plugboard
By default the applet will feed all xAPBSC.event data items to the back-end for recording and charting, along with the weather.data schema. Adjust the code to suit your environment.