Skip to content

Instantly share code, notes, and snippets.

@rezigned
Last active December 16, 2015 13:29
Show Gist options
  • Save rezigned/5441969 to your computer and use it in GitHub Desktop.
Save rezigned/5441969 to your computer and use it in GitHub Desktop.
Installing Graphite on OS X Mountain Lion & Cent OS

Prerequisites

Notes

Before continuing to the installation section. Please make sure that /usr/bin/local comes before /usr/bin in your /etc/paths file.

Install python

brew install python

Install Cairo

XQuartz is required by cairo library. If you haven't installed this you can download it from here http://xquartz.macosforge.org/

brew install cairo, py2cairo

** Notes: If your system doesn't have pip installed. You can install it via sudo easy_install pip

Install Graphite and dependencies

sudo pip install carbon
sudo pip install whisper
sudo pip install django==1.4.5
sudo pip install django-tagging
sudo pip install graphite-web

** Notes: By default pip will try to download the latest version of the software so this might be a problem in some cases. Graphite has some problem when I tried to install it using latest django 1.5+. Some people suggests to use 1.4.5

After successfully installed graphite, /opt/graphite/ directory will be created. This will contain graphite-related stuffs.

Configure Django app

Update Django's settings.py located at /opt/graphite/webapp/graphite/settings.py and add the following code at the bottom of the file

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(STORAGE_DIR, 'graphite.db'),
    },
}

Then execute these commands.

cd /opt/graphite/webapp/graphite/
python manage.py syncdb

Configure Graphite

sudo chown -R nobody:nobody /opt/graphite/storage/
cd /opt/graphite/conf
cp storage-schemas.conf.example storage-schemas.conf
cp carbon.conf.example carbon.conf

# Create a bin directory for Graphite
mkdir /opt/graphite/bin
ln -s /usr/local/share/python/run-graphite-devel-server.py /opt/graphite/bin/
ln -s /usr/local/share/python/carbon-cache.py /opt/graphite/bin/

Final step, Start Carbon and Graphite

python /opt/graphite/bin/carbon-cache.py start # You can use --debug to enable debugging mode
python /opt/graphite/bin/run-graphite-devel-server.py /opt/graphite/

Then open http://localhost:8080 and have fun!

Troubleshooting

  • If you manage to get the server running but have some errors similar to this "Your database file is not writable". Please check your permission on the parent directory (In our case /opt/graphite/storage/). It must has write permission.
  • To check wheter your graphite installation is working or not you can try using the example graphite client in /opt/graphite/example/ by executing this command python /opt/graphite/example/example-client.py

References

# Install EPEL
rpm -ivh http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-5.noarch.rpm

# Instll dependencies
yum install Django pycairo bitmap bitmap-fonts python-pip gcc python-devel mod_wsgi perl django-tagging

pip-python install carbon
pip-python install carbon
pip-python install whisper
pip-python install graphite-web

cd /opt/graphite/conf
cp carbon.conf.example carbon.conf
cp storage-schemas.conf.example storage-schemas.conf
cp graphite.wsgi.example graphite.wsgi

vi /etc/httpd/conf.d/graphite.conf

cd /opt/graphite/webapp/graphite
cp local_settings.py.example local_settings.py
vi local_settings.py

python manage.py syncdb

# Start carbon
cd /opt/graphite/
./bin/carbon-cache.py start

chown -R apache:apache /opt/graphite/storage/

# This is very important! Disable SELinux security protection. Without this line apache will be failed to restart.
setenforce 0
service httpd restart

# Don't forget to add firewall rules to allow Graphite & statsd ports.
# Graphite - tcp:2003
# Statsd   - udp:8125

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment