Wissensdatenbank
Buehl, Kevin
16 Februar 2016
4.748

Wissensdatenbank

Graphite Installation und Integration in IcingaWeb2

Vorwort

Graphite ist ein Tool, welches die Performance-Daten von Icinga Grafisch aufbereitet. Wie Sie Graphite installieren erkläre ich hier.

Icinga-Modul


Vorbereitung

Sollten Sie git noch nicht installiert haben, sollten Sie git nun installieren:
apt install git
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
ca-certificates git-man libcurl3-gnutls liberror-perl librtmp1 libssh2-1 patch rsync
Vorgeschlagene Pakete:
git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn ed diffutils-doc
Die folgenden NEUEN Pakete werden installiert:
ca-certificates git git-man libcurl3-gnutls liberror-perl librtmp1 libssh2-1 patch rsync
0 aktualisiert, 9 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 5'687 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 25.8 MB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n] j


Download

Wechseln Sie in das Modulverzeichnis von Icinga und laden Sie graphite herunter:
cd /usr/share/icingaweb2/modules/
git clone https://github.com/findmypast/icingaweb2-module-graphite.git
Klone nach 'icingaweb2-module-graphite'...
remote: Counting objects: 317, done.
remote: Total 317 (delta 0), reused 0 (delta 0), pack-reused 317
Empfange Objekte: 100% (317/317), 125.30 KiB | 0 bytes/s, Fertig.
Löse Unterschiede auf: 100% (110/110), Fertig.
Prüfe Konnektivität... Fertig.
mv icingaweb2-module-graphite graphite


Konfiguration


mkdir /etc/icingaweb2/modules/graphite/
nano /etc/icingaweb2/modules/graphite/config.ini
[graphite]
metric_prefix = icinga
base_url = http://www.4b42.com/graphite/render?

Nun können Sie über das IcingaWeb2 Interface graphite aktiveren.


Graphite


Installation

apt install graphite-carbon graphite-web libapache2-mod-wsgi python-mysqldb


Graphite-Konfiguration

Erstellen Sie nun einen MySQL Benutzer:
echo "CREATE DATABASE graphite;" > /tmp/graphite.sql
echo "CREATE USER 'graphite_dat'@'localhost' IDENTIFIED BY '4b42';" >> /tmp/graphite.sql
echo "GRANT ALL PRIVILEGES ON graphite.* TO 'graphite_dat'@'localhost';" >> /tmp/graphite.sql
echo "FLUSH PRIVILEGES;" >> /tmp/graphite.sql
mysql -u root -p < /tmp/graphite.sql

Aktiveren Sie den Cache:
echo "CARBON_CACHE_ENABLED=true" > /etc/default/graphite-carbon
service carbon-cache start

Apache2-Konfiguration

Kopieren Sie die Beispiel-Konfigurationsdatei in den Apache2 Ordner und passen Sie einige Konfigurationsparameter an:
cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available/graphite.conf
sed -i '3i<Directory /usr/share/graphite-web/>' /etc/apache2/sites-available/graphite.conf
sed -i '4iRequire all granted' /etc/apache2/sites-available/graphite.conf
sed -i '5i</Directory>' /etc/apache2/sites-available/graphite.conf
a2ensite graphite
Enabling site graphite.
To activate the new configuration, you need to run:
service apache2 reload
service apache2 reload


Abschluss-Konfiguration

Aktivieren Sie die Icinga2 Features:
icinga2 feature enable perfdata graphite
Enabling feature perfdata. Make sure to restart Icinga 2 for these changes to take effect.
Enabling feature graphite. Make sure to restart Icinga 2 for these changes to take effect.
/etc/init.d/icinga2 restart
[ ok ] Restarting icinga2 (via systemctl): icinga2.service.

MySQL Zugangsdaten in Konfiguration anpassen:
sed -i 's/'NAME'.*/NAME'\'': '\''graphite'\'',/g' /etc/graphite/local_settings.py
sed -i 's/'ENGINE'.*/ENGINE'\'': '\''django.db.backends.mysql'\'',/g' /etc/graphite/local_settings.py
sed -i 's/'USER'.*/USER'\'': '\''graphite_dat'\'',/g' /etc/graphite/local_settings.py
sed -i 's/'PASSWORD'.*/PASSWORD'\'': '\''4b42'\'',/g' /etc/graphite/local_settings.py
sed -i 's/'HOST'.*/HOST'\'': '\''localhost'\'',/g' /etc/graphite/local_settings.py
sed -i 's/'PORT'.*/PORT'\'': '\''3306'\'',/g' /etc/graphite/local_settings.py


graphite-manage syncdb
/usr/lib/python2.7/dist-packages/graphite/settings.py:234: UserWarning: SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security
warn('SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security')
System check identified some issues:

WARNINGS:
?: (1_6.W001) Some project unittests may not execute as expected.
HINT: Django 1.6 introduced a new default test runner. It looks like this project was generated using Django 1.5 or earlier. You should ensure your tests are all running & behaving as expected. See https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner for more information.
Operations to perform:
Synchronize unmigrated apps: account, dashboard, tagging, events
Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Creating table account_profile
Creating table account_variable
Creating table account_view
Creating table account_window
Creating table account_mygraph
Creating table dashboard_dashboard_owners
Creating table dashboard_dashboard
Creating table events_event
Creating table tagging_tag
Creating table tagging_taggeditem
Installing custom SQL...
Installing indexes...
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying sessions.0001_initial... OK

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): no


Sicherheit

Hier einige Sicherheitskonfigurationen, da man Standardmässig alle graphite Daten im Baum einsehen kann, habe ich den zugriff auf das root Verzeichnis gesperrt. Somit kann man nur über den /render Pfad auf die Graphen zugreifen.
nano /etc/apache2/sites-enabled/graphite.conf
[...]
ServerName monitoring.4b42.com
[...]
<Location />
Order deny,allow
Deny from all
</Location>
<Location /render>
Order deny,allow
Allow from all
</Location>
[..]