- Better Late than never – Graphite-Web-Installation unter Debian 10 – Part 1
- Better Late than never – Graphite-Web-Installation unter Debian 10 – Part 2
- Better Late than never – Graphite-Web installation unter Debian 10 – Part 3
Willkommen zum zweiten Teil des Blogposts zur Graphite-Web-Installation unter Debian 10.
Wir springen hier direkt an die Stelle, an der wir aufgehört haben, und editieren die storage-schemas.conf unter /etc/go-carbon/
In der Storage-Schemas liegt das default-storage Schema:
Dadurch dass wir Icinga 2 installiert haben und auch dort Graphen generieren möchten, nehmen wir das folgende Schema:
[icinga_internals]
pattern = ^icinga\..*\.(max_check_attempts|reachable|current_attempt|execution_time|latency|state|state_type)
retentions = 5m:7d
[icinga_default]
pattern = ^icinga\.
retentions = 1m:2d,5m:10d,30m:90d,360m:4y
Damit haben wir die Konfiguration vom go-carbon in diesem Beispiel abgeschlossen.
Der nächste Schritt ist nun Whisper selbst und Graphite-Web.
Da das Graphite-Web immer noch Python-lastig ist, müssen wir einen kleinen Schritt im Voraus machen.
Wir definieren die Pfade im Voraus:
export PYTHONPATH="/opt/graphite/lib/:/opt/graphite/webapp/"
Danach erfolgt der allseits beliebte und gefürchtete pip-Aufruf:
pip install --no-binary=:all: https://github.com/graphite-project/whisper/tarball/1.1.6
pip install --no-binary=:all: https://github.com/graphite-project/graphite-web/tarball/1.1.6
Nach der Installation der beiden Komponenten wechseln wir in das /opt/graphite/webapp/graphite Verzeichnis und kopieren die local_settings.py.example, damit wir eine local_settings.py Datei haben, um die Einstellungen zu verändern.
SECRET_KEY = 'Sollte_durch_eine_zufällige_Zeichenkette_ersetzt_werden'
ALLOWED_HOSTS = [ '*' ] // Für den Testzweck belassen wir es bei dem Asterisk, es sollte aber in Produktivumgebungen ersetzt werden durch die Maschinen welche mit dem Graphite sprechen dürfen.
TIME_ZONE = 'America/Los Angeles' // Die Zeitzone ist selbsterklärend
WHISPER_DIR = '/var/lib/graphite/whisper' // Das Whisper Datei Verzeichnis wo unserer Whisper Dateien liegen
Kleiner Hinweis wegen der Random-Zeichenkette:
Diese kann man mit dem folgenden Kommando erzeugen, wenn man möchte:
openssl rand -base64 32
Nun müssen wir noch den Ordner für unsere Whisper-Dateien anlegen und berechtigen.
mkdir -pv /var/lib/graphite/whisper
chown -Rf carbon. /var/lib/graphite/whisper
Daraufhin kopieren wir das Graphite.wsgi File um, damit es verwendbar ist.
cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
An dieser Stelle kommt nun die Konfiguration des Apache2. Wenn jemand eine nginx-Konfiguration braucht, bitte ich diese Personen, sich in der Community zu melden, damit wir auswerten können, wie viele Anfragen es gibt, um eine ‘Standard’-Konfig für die nächste Iteration dieses Blogposts zu erstellen. 🙂
Wir erstellen im Apache-Verzeichnis eine graphite-web-ssl.conf und befüllen diese mit dem folgenden Beispielinhalt. Dieser ist je nach Umgebung anzupassen.
cd /etc/apache2/sites-available/
vi graphite-web-ssl.conf
Inhalt der graphite-web-ssl.conf:
# Enable virtualhosts, perhaps by adding this to your server's config somewhere,
# probably the main httpd.conf
# NameVirtualHost *:443
# This line also needs to be in your server's config.
# LoadModule wsgi_module modules/mod_wsgi.so
# You need to manually edit this file to fit your needs.
# This configuration assumes the default installation prefix
# of /opt/graphite/, if you installed graphite somewhere else
# you will need to change all the occurrences of /opt/graphite/
# in this file to your chosen install location.
LoadModule wsgi_module modules/mod_wsgi.so
# XXX You need to set this up!
# Read http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGISocketPrefix
# For example, create a directory /var/run/wsgi and use that.
WSGISocketPrefix /var/run/apache2/wsgi
# Base Configuration
ServerName localhost.local
DocumentRoot "/opt/graphite/webapp"
# Log Configuration
ErrorLog /opt/graphite/storage/log/webapp/error.log
CustomLog /opt/graphite/storage/log/webapp/access.log common
# SSL Configuration
SSLEngine On
SSLCertificateFile /etc/pki/tls/private/certificate.crt
SSLCertificateKeyFile /etc/pki/tls/private/certificate.key
SSLCertificateChainFile /etc/pki/tls/private/certificate.pem
# Graphite Related Configuration
# I've found that an equal number of processes & threads tends
# to show the best performance for Graphite (ymmv).
WSGIDaemonProcess graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120
WSGIProcessGroup graphite
WSGIApplicationGroup %{GLOBAL}
WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite application-group=%{GLOBAL}
# XXX You will need to create this file! There is a graphite.wsgi.example
# file in this directory that you can safely use, just copy it to graphite.wgsi
WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi
# XXX To serve static files, either:
# * Install the whitenoise Python package (pip install whitenoise)
# * Collect static files in a directory by running:
# django-admin.py collectstatic --noinput --settings=graphite.settings
# And set an alias to serve static files with Apache:
Alias /static/ /opt/graphite/static/
########################
# URL-prefixed install #
########################
# If using URL_PREFIX in local_settings for URL-prefixed install (that is not located at "/"))
# your WSGIScriptAlias line should look like the following (e.g. URL_PREFX="/graphite"
# WSGIScriptAlias /graphite /srv/graphite-web/conf/graphite.wsgi/graphite
# Alias /graphite/static /opt/graphite/webapp/content
# <Location "/graphite/static/">
# SetHandler None
#
# XXX In order for the django admin site media to work you
# must change @DJANGO_ROOT@ to be the path to your django
# installation, which is probably something like:
# /usr/lib/python2.6/site-packages/django
Alias /media/ "@DJANGO_ROOT@/contrib/admin/media/"
# The graphite.wsgi file has to be accessible by apache. It won't
# be visible to clients because of the DocumentRoot though.
Order deny,allow
Allow from all
= 2.4>
Require all granted
Order deny,allow
Allow from all
= 2.4>
Require all granted
Abschließend überprüfen wir die Konfig mit
apachectl -t
Hier erreichen wir nun den spannenden Teil (Cliffhanger) der Graphite-Web-Installation, und wie zuletzt um den Spannungsbogen zu erhöhen,
bitte ich um etwas Geduld, da im finalen und letzten spannenden Teil dieser Serie wir Graphite-Web initialisieren werden.
Bis dahin mit einem Servus
David