Сервер на котором будем устанавливать и тестировать Graphite
# lsb_release -a Distributor ID: CentOS Description: CentOS release 6.2 (Final) Release: 6.2 Codename: Final # uname -a Linux graphite.bezha.od.ua 2.6.32-220.23.1.el6.x86_64 GNU/Linux
Устанавливаем EPEL и обновляем систему
Устанавливаем дополнительные пакеты
# yum install gcc zlib-devel curl curl-devel openssl rpm-build rpm-build python python-ldap mod_wsgi # yum install python-memcached python-sqlite2 pycairo python-twisted Django django-tagging bitmap httpd # yum install bitmap-fonts python-devel glibc-devel gcc-c++ openssl-devel python-zope-interface memcached
Скачиваем Graphite
# mkdir /root/graphite && cd /root/graphite # wget https://launchpad.net/graphite/0.9/0.9.10/+download/graphite-web-0.9.10.tar.gz # wget https://launchpad.net/graphite/0.9/0.9.10/+download/carbon-0.9.10.tar.gz # wget https://launchpad.net/graphite/0.9/0.9.10/+download/whisper-0.9.10.tar.gz
Устанавливаем Whisper
# tar xvf whisper-0.9.10.tar.gz # cd whisper-0.9.10 # python setup.py install
Устанавливаем Carbon
# tar xvf carbon-0.9.10.tar.gz # cd carbon-0.9.10 # python setup.py install
Устанавливаем пакет Graphite-Web
# tar xvf graphite-web-0.9.10.tar.gz # cd graphite-web-0.9.10 # python setup.py install
Копируем конфигурационные файлы Graphite
# cd /opt/graphite/conf/ # for i in *example; do mv -v $i `basename $i ".example"`; done
Создаем Django DB
# python /opt/graphite/webapp/graphite/manage.py syncdb
Конфигурация Apache
# cp /opt/graphite/examples/example-graphite-vhost.conf /etc/httpd/conf.d/graphite-vhost.conf # mkdir /var/run/wsgi # grep WSGISocketPrefix /etc/httpd/conf.d/graphite-vhost.conf WSGISocketPrefix /var/run/wsgi # chown -R apache:apache /opt/graphite/storage/
Создаем init скрипт для запуска carbon
#!/bin/bash # # This is used to start/stop the carbon-cache daemon # chkconfig: - 99 01 # description: Starts the carbon-cache daemon # Source function library. . /etc/init.d/functions RETVAL=0 prog="carbon-cache" start_relay () { /usr/bin/python /opt/graphite/bin/carbon-cache.py start RETVAL=$? [ $RETVAL -eq 0 ] && success || failure echo return $RETVAL } start_cache () { /usr/bin/python /opt/graphite/bin/carbon-relay.py start RETVAL=$? [ $RETVAL -eq 0 ] && success || failure echo return $RETVAL } stop_relay () { /usr/bin/python /opt/graphite/bin/carbon-relay.py stop RETVAL=$? [ $RETVAL -eq 0 ] && success || failure echo return $RETVAL } stop_cache () { /usr/bin/python /opt/graphite/bin/carbon-cache.py stop RETVAL=$? [ $RETVAL -eq 0 ] && success || failure echo return $RETVAL } # See how we were called. case "$1" in start) #start_relay start_cache ;; stop) #stop_relay stop_cache ;; restart) #stop_relay stop_cache #start_relay start_cache ;; *) echo $"Usage: $0 {start|stop}" exit 2 ;; esac
Создаем сервис carbon-cache и добавляем его в атозагрузку
# chmod +x /etc/init.d/carbon-cache # chkconfig --add carbon-cache # chkconfig carbon-cache on # chkconfig --list |grep carbon-cache carbon-cache 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Запускаем сервисы
# service httpd start # service carbon-cache start
Запустим парочку графиков на коленке
# PYTHONPATH=`pwd`/whisper /opt/graphite/bin/carbon-cache.py --debug start # cd /opt/graphite/examples # ./example-client.py