Install Graphite (latest via PIP) Centos 7.4

Hi ! Ich wollte mal den Installationsablauf Dokumentieren wenn man Graphite direkt per PIP und nicht per Pakten installieren moechte.

Ausgangslage ist wie someist hier Centos 7.4
Fangen wir mit den Basisinstallationschritten an.

yum install epel-release -y
yum groupinstall 'Development Tools' -y
yum install install python2-pip gcc -y
yum install install gcc -y
yum install python-devel.x86_64 -y
yum install python-scandir -y
yum install mod_wsgi -y
yum install libffi-devel -y
yum install cairo-devel -y

Um die anderen Schritte etwas zu vereinfachen werden wir den folgenden Pfad als ENV setzen.

export GRPH=/opt/graphite

Man muss auch SELinux auf permissive setzen sonst funkt es dazwischen.

vi /etc/selinux/config
-SELINUX=enforcing
+SELINUX=permissive

Nun folgt die eigentliche PIP installation von Graphite, Carbon & Graphite-Web

pip install --upgrade pip
pip install --upgrade setuptools
pip install carbon==1.0.1
pip install whisper==1.0.1
pip install graphite-web==1.0.1

Danach muessen wir Symlinks wegen der Verzeichnisstruktur aendern und natuerlich Config Dateien umkopieren.

ln -s $GRPH/lib/carbon-1.0.1-py2.7.egg-info/ /usr/lib/python2.7/site-packages/
ln -s $GRPH/webapp/graphite_web-1.0.1-py.2.7.egg-info /usr/lib/python2.7/site-packages/
cp $GRPH/conf/carbon.conf.example $GRPH/conf/carbon.conf
cp $GRPH/conf/storage-schemas.conf.example $GRPH/conf/storage-schemas.conf
cp $GRPH/examples/example-graphite-vhost.conf /etc/httpd/conf.d/graphite-web.conf
cp $GRPH/conf/graphite.wsgi.example $GRPH/conf/graphite.wsgi
cp $GRPH/webapp/graphite/local_settings.py.example $GRPH/webapp/graphite/local_settings.py

Es bleibt noch etwas Handarbeit bei der editierung von Konfigurationsdateien uebrig.

Fangen wir mir einem Unitfile fuer den Betrieb mit Systemd an:

vi /etc/systemd/system/carbon.service
+[Unit]
+Description=Graphite Carbon Cache
+After=network.target

+[Service]
+Type=forking
+StandardOutput=syslog
+StandardError=syslog
+ExecStart=/opt/graphite/bin/carbon-cache.py --config=/opt/graphite/conf/carbon.conf --pidfile=/var/run/carbon-cache.pid --logdir=/var/log/carbon/ start
+ExecReload=/bin/kill -USR1 $MAINPID
+PIDFile=/var/run/carbon-cache.pid

+[Install]
+WantedBy=multi-user.target

Nicht zu vergessen das wir die local_settings.py editieren muessen wegen zwei Kleinigkeiten:

vi /opt/graphite/webapp/graphite/local_settings.py
- SECRET_KEY = 'UNSAFE_DEFAULT'
+ SECRET_KEY = 'BRAND_NEW_PASSWORD'

- TIME_ZONE = 'WHATEVER'
+ TIME_ZONE = 'Europe/Berlin'

Es bleibt uebrig das wir die Graphite.db generieren.

PYTHONPATH=$GRPH/webapp django-admin.py migrate --settings=graphite.settings --run-syncdb
PYTHONPATH=$GRPH/webapp django-admin.py collectstatic --noinput --settings=graphite.settings

Wir haben es beinahe geschafft nun kommen noch Berechtigungen auf Ordner & Dateien:

chown apache:root $GRPH/storage
chown apache:apache $GRPH/storage/graphite.db
chown -Rf apache:root $GRPH/storage/log

Fast verdraengt die Webkonfig muss noch angefasst werden:

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

+<Directory /opt/graphite/static>
+		Require all granted
+</Directory>

Nach einem httpd durchstarten und natuerlich dem start des carbon service sollte alles laufen.

Danke fuer die Aufmerksamkeit verbesserungen und Anmerkungen sind gern willkommen.