pixel
Seite wählen

NETWAYS Blog

Icinga 2 mit InfluxDB 2

Die Überwachung von Infrastruktur und Software ist eine grundlegende Sache in der IT. Beim Monitoring spielt aber nicht nur der Status und die Benachrichtigung der zu überwachenden Objekte eine wesentliche Rolle, sondern auch die Aufbewahrung und die nachträgliche Betrachtung von Performancedaten. Diese lassen sich bei Icinga 2 anhand von Check Plugins ermitteln und mit unterschiedlichen Writern bzw. Features u.a. an InfluxDB weiterleiten.

Nach der Installation von Icinga 2 und influxDB 2 können wir einen Bucket erstellen in dem wir später die Icinga 2 Metriken aufbewahren können.

# influx bucket create -n icinga
ID                  Name      Retention   Shard group duration     Organization ID 
b07cac747d7d6dd7    icinga    infinite    168h0m0s                 74cacb1ac05bfe71

Icinga 2 benötigt einen Token um in diesen Bucket schreiben zu können. Den Token für die Schreibberechtigung können wir wie folgt generieren.

# influx auth create --write-bucket b07cac747d7d6dd7

Damit Icinga 2 mit dem Export der Metriken anfängt, muss das folgende Object konfiguriert werden.

# cat /etc/icinga2/features-available/influxdb2.conf
object Influxdb2Writer "influxdb2" {
  host = "127.0.0.1"
  port = 8086
  organization = "icinga"
  bucket = "icinga"
  auth_token = "TKfmBkRdJ2HfjcVk35nwr0eX0TiYCbEcBe8xDh-_dIafGFpGalTe5HlCAKt6ZlPlJsyw4uH8Mfk4Mt7uI-xqyQ=="
  flush_threshold = 1024
  flush_interval = 10s

Ab diesem Zeitpunkt können wir die Daten im InfluxDB UI auf https://x.x.x.x:8086 ansehen. Die dortigen Dashboards kann man z. B. durch Grafana oder InfluxDB zusammenstellen bzw. anzeigen lassen. Um mehr über InfluxDB 2 und Grafana zu erfahren, könnt Ihr die InfluxDB Schulung buchen & besuchen.

Afeef Ghannam
Afeef Ghannam
Systems Engineer

Afeef hat seine Ausbildung Als Fachinformatiker in Richtung Systemintegration im Juli 2020 bei NETWAYS absolviert, seitdem unterstützt er die Kolleg:innen im Support und bei der Betriebsunterstützung. Nach der Arbeit macht er gerne Sport, trifft Freunde oder mag es Filme zu schauen.

Better Late than never – Graphite-Web installation unter Debian 10 – Part 3

This entry is part 3 of 3 in the series Graphite-Web

Photo by Vita Vilcina on UnsplashHerzlich Willkommen,

wir verliessen unsere tapferen Helden in der letzten Episode bei der schwierigen Aufgabe, Timmy, dem schlauen Collie, die Installation von Graphite-Web via Django zu erklären. Nein, Scherz beiseite. Wir sind nun im finalen Teil unserer dreiteiligen Serie und steigen bei der Finalisierung der Graphite-Web-Installation ein.

Zuletzt hatten wir die Apache2-Konfig, welche wir in die /etc/apache2/sites-available abgelegt hatten, per apachectl -t validiert. Nun folgt die Initialisierung des eigentlichen Graphite-Web Contents.

Zuerst die Initialisierung der Graphitedb.

PYTHONPATH=/opt/graphite/webapp django-admin.py migrate --settings=graphite.settings --run-syncdb

Gefolgt von der Benutzererstellung für das Graphite-Web Frontend.

PYTHONPATH=/opt/graphite/webapp django-admin.py createsuperuser --settings=graphite.settings

Abschließend die Generierung der statischen Website-Elemente.

PYTHONPATH=/opt/graphite/webapp django-admin.py collectstatic --noinput --settings=graphite.settings

Nach der Generierung versorgen wir die Ordner und Dateien mit der korrekten Berechtigung chown -R www-data. /opt/graphite.

Um das Ganze nun in Betrieb zu nehmen, aktivieren wir im Apache2 noch die ssl also auch wsgi-Module. Des Weiteren aktivieren wir auch die graphite-web-ssl.conf

#>a2enmod ssl;
#>a2enmod wsgi;
#>a2ensite graphite-web-ssl.conf;

Somit sind die Voraussetzungen für den Apache2 aktiviert und wir müssen nur noch Sorge dafür tragen, dass die Komponenten bei einem Neustart automatisch initialisiert werden.

systemctl enable apache2 --now
systemctl enable go-carbon.service --now

Nun kann die Website von Graphite-Web unter der angegeben IP-Adresse aufgerufen werden, wo man bei erfolgreichem Ablauf folgende Website sehen sollte:

Aus dem Off hört man eine Stimme von Rodrigo, dem Plantagenbesitzer, der fordert, dass dieser How-to-Guide mit Centos 8.1 wiederholt wird. Ich bedanke mich für die Aufmerksamkeit und freue mich, Sie gern wieder zu einer weiteren Episode ‘curacon fuego del graphite con centos ocho’ begrüßen zu können.

Servus sagt David!

David Okon
David Okon
Senior Systems Engineer

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

Better Late than never – Graphite-Web-Installation unter Debian 10 – Part 2

This entry is part 2 of 3 in the series Graphite-Web

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

David Okon
David Okon
Senior Systems Engineer

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

OSMC 2021: The Agenda is set!

OSMC 2021 approaches more and more and we’re excited to announce that the conference program is now set. You can expect 2 days with a total of 30 lecture sessions by well-known open source experts. The 2021 edition o fthe event will sum up the current state of the art in open source monitoring and give you as a community member the chance to meet again since 2019. Doesn’t that sound great?

 

Get inspired…

… and check out these three folks to set the mood for OSMC!

 

PHILIPP KRENN – On the Bleeding Edge of Open Telemetry

Tracing and telemetry are popular topics right now, but the development is so quick that it also confuses:

Starting with OpenTracing, then W3C Trace-Context, and now OpenTelemetry there are plenty of standards, but what do or don’t they cover?

How do the Cloud Native Computing Foundation (CNCF) and its projects like Jaeger play into that.

Where is OpenTelemetry headed, and how can projects tie into it?

 

 

 

PETER ZAITSEV – Advanced MySQL optimization and roubleshooting using PMM 2

 

Optimizing MySQL performance and troubleshooting MySQL problems are two of the most critical and challenging tasks for MySQL DBA’s. The databases powering your applications need to be able to handle changing traffic workloads while remaining responsive and stable so that you can deliver an excellent user experience. Further, DBA’s are also expected to find cost-efficient means of solving these issues. In this presentation, we will demonstrate the advanced options of PMM version 2 that enables you to solve these challenges, which is built on free and open-source software.

 

 

 

TOBIAS BERDIN & STEPHAN SCHMIDT – Thola – A tool for monitoring and provisioning network devices

Thola is a new open source tool for reading, monitoring and provisioning network devices. We will inform about the current state of development as well as planned features, including reading out inventory, configuring network devices, support for other monitoring systems and many more. It serves as a unified interface for communication with network devices and features a check mode which complies with the monitoring plugins development guidelines.

 

 

Now it’s your turn

Besides seeing the exact date, time and topic of each presentation you also have the option to add your favourite talks to your personal calendar. This way you can be sure to receive a reminder for your most preferred presentations. So what are you waiting for? Have a look at our agenda and select your personal highlights!

 

Workshop & Hackathon

If you want to dive even deeper into open source monitoring just register for this year’s Icinga Workshop or participate in the inspiring OSMC Hackathon following the presentation program on November 11.

 

What OSMC is all about

The Open Source Monitoring Conference is the annual meeting of international monitoring experts where future trends and perspectives are set. It’s a three-day event that comprises two tracks of expert sessions. On top there’s a hackathon and a workshop on the 3rd conference day. Since the tickets for attending the lecture program are already sold out – due to Corona current restrictions – you still have the possibility to register for the waitinglist. Workshop and Hackathon are still bookable.

We’re looking forward to seeing you in person this autumn on November 9 to 11, in Nuremberg!

Katja Kotschenreuther
Katja Kotschenreuther
Online Marketing Manager

Katja ist seit Oktober 2020 Mitglied im Marketing-Team von NETWAYS. Nach ihrem Studium in Passau vollzog sie ihren Berufseinstieg im Bereich der Suchmaschinenoptimierung und möchte sich nun neben SEO auch anderen Online Marketing-Kanälen widmen. Neben Basteln und Malen, treibt sie in ihrer Freizeit gerne Sport und spielt Klavier und Gitarre.

Icinga for Windows v1.6.0 – Einfacher. Zentraler. Sicherer.

Die Kollegen von Icinga haben letzte Woche Icinga for Windows in Version v1.6.0 veröffentlicht. Auch wenn diese Version keine neuen Plugins für die Überwachung bietet, hat sich im Bereich des Icinga PowerShell Frameworks einiges getan. Dadurch ist die Lösung nicht nur einfacher zu verwenden, sondern auch noch zentraler verwaltbar und sicherer.

Dürfen wir vorstellen: Die IMC

Die IMC (Icinga Management Console) wurde im Rahmen vergangener Icinga for Windows als experimental eingeführt. Ziel war es, ein einfaches Management zu schaffen, um die meisten Funktionalitäten über eine UI abbilden zu können. Dadurch ist es nicht mehr notwendig, sich alle Befehle von Icinga for Windows zu merken oder diese zu kennen – sondern die Konfiguration erfolgt direkt darüber.

Im Zuge der Einführung der IMC, wurde ebenfalls ein neuer Setup Wizard generiert, welcher nicht nur einfacher und intuitiver ist als der alte, sondern auch noch über eine Hilfe verfügt, welche einem erklärt, welche Eingaben im jeweiligen Bereich notwendig sind und was diese bedeuten. Die Konfiguration ist hierbei im nicht-advanced Modus auf die absoluten Grundlagen beschränkt, um schnell ans Ziel zu kommen. Die restlichen Einstellungen im advanced Teil, können simpel eingesehen und geändert werden, wurden jedoch so ausgewählt, dass man in vielen Umgebungen auf eine Änderung sogar verzichten könnte.

Zentrale Verwaltung mit Repositories

Einer der großen Kritikpunkte an Icinga for Windows war die Komponenten Installation. Bisher musste jede Komponente einzeln heruntergeladen und mit einem Pfad bei der Installation hinterlegt werden. Mit Icinga for Windows v1.6.0 wurde nun ein Repository-Management hinzugefügt. Hierdurch können direkt entweder die offiziellen Repositories von Icinga for Windows auf packages.icinga.com angebunden werden oder ein eigenes, zentrales. Icinga for Windows bietet dabei die Möglichkeit, vorhandene Repositories zu synchronisieren, um diese in seiner lokalen Umgebung zu spiegeln. Dadurch kann die Installation von Systemen, welche nicht in das Internet können, deutlich vereinfacht werden. Ein Beispiel wäre hier, die offiziellen Icinga Repositories auf seinen Icinga 2 Master zu synchronisieren, um dort ein Repository für alle Systeme bereitzustellen.

Im Falle von DMZ Systemen kann das Repository wiederum von zentralen Icinga 2 Master auf Icinga Satellitensysteme synchronisiert oder aber auf zentrale File-Shares abgelegt werden, um von dort die Komponenten zu installieren. Für das Update von Repositories gibt es ebenfalls Kommandos, die eine Aktualisierung ermöglichen.

Der Vorteil des Repositories liegt darin, dass direkt die aktuellen Versionen der jeweiligen Komponenten installiert oder mit einem simplen Befehl die gesamte Umgebung aktualisiert werden kann. Sollte es aus bestimmen Gründen notwendig sein, kann die Version von einzelnen Komponenten auch gelockt werden. Das bedeutet, sofern eine ältere Version installiert ist, wird bis zur gelockten Version aktualisiert. Ist bereits die gelockte Version installiert und eine neue verfügbar, wird diese übersprungen.

Weitere Details hierzu gibt es direkt in der Icinga for Windows Repository Dokumentation.

Mehr Sicherheit durch JEA

JEA steht für Just-Enough-Administration und ist eine Lösung von Microsoft für PowerShell. Durch JEA können einzelne Benutzer, welche keine Administratoren sind, Befehle mit erhöhten Rechten im System Kontext ausführen. Die Funktionalität ist dabei ähnlich wie sudo auf Linux.

In der Vergangenheit gab es des Öfteren Probleme, das diverse Überwachungsmöglichkeiten nicht genutzt werden können, da der Benutzer beispielsweise nicht in der Hyper-V Administrator Gruppe ist und deshalb den Status der virtuellen Maschinen nicht abfragen kann. Ein weiteres Problem ergibt sich auch, wenn man diverse Services oder Tasks überwachen möchte, welchen mit einem normalen Standardbenutzer nicht eingesehen werden können.

Durch ein JEA-Profil wird es erlaubt, dass ein bestimmter Benutzer diese Plugins nun im Systemkontext mit erhöhten Rechten ausführt. Dabei wird von Icinga for Windows ein Profil basierend auf allen installierten Komponenten erstellt. Dieses Profil deckt jedoch nur die notwendigen Befehle zum Ausführen von Plugins und Komponenten ab. Für Icinga for Windows notwendigen Befehle für das Management der Umgebung, werden dabei nicht berücksichtigt.

Um das ganze abzurunden und die Trennung perfekt zu machen, bietet Icinga for Windows die Möglichkeit an, einen Managed User mit dem Namen icinga anzulegen. Dieser Benutzer ist ein lokaler Benutzer auf dem System, ohne Berechtigungen sich lokal oder per RDP anzumelden. Der einzige Zweck ist, dass er als Service Benutzer fungiert und den Icinga Agent sowie den Icinga for Windows Dienst startet. Im Zusammenspiel mit dem von Icinga for Windows generierten JEA-Profil, kann dann das System vollständig überwacht werden. Die Verwaltung des Benutzers obliegt dabei vollständig Icinga for Windows und im Rahmen der Erstellung des Benutzers oder bei diversen Änderungen an den Services während der Icinga for Windows Installation oder Updates, wird jedes Mal ein neues, zufälliges 60-stelliges Password generiert und dem Benutzer zugewiesen. Dieses Password wird nach Ende der jeweiligen Installationsschritte intern wieder verworfen und wird nirgends abgelegt. Hierdurch wird eine Kompromittierung des Systems ohne bereits vorhandene Administratorrechte deutlich erschwert.

Weitere Details sowie Anforderungen, finden sich direkt in der Icinga for Windows JEA Dokumentation.

Performance Gewinn durch API-Check Forwarder

Ein weiteres Thema welches mit Icinga for Windows v1.6.0 von experimental als stabil gilt, ist der API-Check Forwarder, welcher in vergangenen Versionen eingeführt wurde. Hintergrund dieser Lösung ist, dass das Starten sowie die Ausführung von PowerShell Befehlen innerhalb der von Icinga 2 gestarteten Shells vor allem bei Systemen mit weniger Kernen eine erhöhte Systemlast verursachen. Durch den API-Check Forwarder wird zumindest der Ausführungsteil ausgelagert, da alle Befehle für die Plugin-Ausführung innerhalb des Icinga for Windows Dienstes durchgeführt und lediglich das Ergebnis an die lokale Shell weitergereicht wird.

Für diese Lösung werden zwei zusätzliche von Icinga bereitgestellte Komponenten benötigt, um eine REST-Api bereitzustellen sowie die Checks per API auszuführen. Beides kann direkt über die neuen Icinga Repositories installiert werden. Für eine sichere Verbindung werden direkt die Zertifikate des Icinga Agent verwendet. Nach Bedarf können jedoch auch eigene Zertifikate verwendet werden. Wichtig dabei ist, dass eine Erstellung des REST-Api Sockets ohne ein TLS Zertifikat nicht möglich ist.

In der zugehörigen Dokumentation zum API-Check Forwarder von Icinga for Windows gibt es weitere Details.

Was bringt die Zukunft?

Die nächste Version von Icinga for Windows v1.7.0 ist bereits zur diesjährigen OSMC eingeplant. Hier werden wir noch weiter den Schwerpunkt auf Performance sowie eine Vielzahl von Optimierungen für Entwickler legen, um es noch einfacher zu machen eigene Plugins und Komponenten zu entwickeln. Ein entsprechender Talk ist ebenfalls eingereicht.

Wir freuen uns auf eine rege Teilnahme und wünschen bis dahin alles Gute!

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".