Setting up Graphite (alpha docs)
April 23, 2013 1 Comment
The latest releases of graphite have some nice new shiny features thanks to these guys. Once I get some feedback I will edit the below to make it suitable for the official documentation. In the meantime:
Installing the latest version of graphite (alpha documention)
Prep Work
If you do not have the below yum repos:
$ sudo yum install -y python python-devel python-setuptools gcc python-devel httpd mysql-server MySQL-python python-zope-interface python-twisted python-rrdtool python-memcached wget git pycairo python-ldap mod_wsgi dejavu-sans-fonts
If you do not have pip:
$ sudo /usr/bin/easy_install-2.6 pip
Install Django (note 1.5 does not work OOB and pip will not install previous versions)
$ sudo /usr/bin/easy_install-2.6 Django==1.4
If you do not have the below packages:
$ sudo /usr/bin/pip-2.6 install pytz django-tagging txamqp Twisted
pyparsing never installs right from pip for me (transparent fail), do it the hard way
‘
http://sourceforge.net/projects/pyparsing/files/latest/download
unzip
$ sudo python setup.py install
If you are using the alpha release (YES) you need ceres:
wget https://github.com/graphite-project/ceres/tarball/master -O ceres-latest.tar.gz
tar -xzf
$ sudo python setup.py install
if py2cairo doesn’t install from yum, get it the hard way if yum didn’t install the right version (good as of 6.4)
wget http://cairographics.org/releases/py2cairo-1.10.0.tar.bz2
tar -xjf
$ sudo python setup.py install
If you run into issues with Twisted:
Download Twisted from
http://twistedmatrix.com/trac/
tar -xjf
$ sudo python setup.py install
Installing Graphite:
Clone the repos into the right place
$ cd /opt/
$ sudo git clone https://github.com/graphite-project/graphite-web.git
$ sudo git clone https://github.com/graphite-project/carbon.git
$ sudo git clone https://github.com/graphite-project/whisper.git
verify that you got all of your dependencies:
$ pushd graphite-web;sudo python check-dependencies.py;popd
All necessary dependencies are met.
All optional dependencies are met.
Make sure you get above.
install the services:
$ pushd whisper; sudo python setup.py install; popd
$ pushd carbon; sudo python setup.py install; popd
$ pushd graphite-web; sudo python setup.py install;popd
copy the example configs:
$ pushd /opt/graphite/conf; sudo cp carbon.conf.example carbon.conf; sudo cp storage-schemas.conf.example storage-schemas.conf; popd
$ sudo cp /opt/graphite/examples/example-graphite-vhost.conf /etc/httpd/conf.d/graphite-vhost.conf
$ sudo cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
If testing this locally you can now add
graphite to your /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 graphite
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 graphite
if you are doing an actual setup it is expected you will know how to configure
sqllite never works for me, here are the mysql instructions:
$ sudo /etc/init.d/mysqld start
$ sudo /usr/bin/mysqladmin -u root password 'NewPassword'
$ mysql -u root -pNewPassword
CREATE USER 'graphite'@'localhost' IDENTIFIED BY 'AnotherNewPassword';
GRANT ALL PRIVILEGES ON *.* TO graphite@'%' IDENTIFIED BY 'AnotherNewPassword';
GRANT ALL PRIVILEGES ON *.* TO graphite@'localhost' IDENTIFIED BY 'AnotherNewPassword';
FLUSH PRIVILEGES;
exit;
$ mysql -u graphite -pAnotherNewPassword
create database graphiteDB;
exit;
Copy the example settings and configure
$ sudo cp /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py
$ sudo vim /opt/graphite/webapp/graphite/local_settings.py
edit the appropriate section to
DATABASES = {
'default': {
'NAME': 'graphiteDB',
'ENGINE': 'django.db.backends.mysql',
'USER': 'graphite',
'PASSWORD': 'GraphitePassword',
'HOST': 'localhost',
'PORT': '3306'
}
}
sync the DB
$ cd /opt/graphite/webapp/graphite
$ sudo python manage.py syncdb
yes to django auth and set accordingly.
start the carbon cache
$ sudo /opt/graphite/bin/carbon-cache.py start
unless someone wants to update this to support selinux config
$ sudo setenforce 0
$ sudo vim /etc/sysconfig/selinux
EDIT to: SELINUX=permissive
change permissions and start the webserver
$ sudo chown -R apache /opt/graphite/
$ sudo /etc/init.d/httpd start
A note from @svenner1983 who was too busy to post it here:
If you have really fast disks/disk controllers you want to drop the number in the carbon.conf to ~50. It will alleviate system load and get your data to disk more efficiently. Carbon assumes really slow disks by default.
https://github.com/graphite-project/carbon/blob/master/conf/carbon.conf.example#L48