Datadog Nginx Integration

Server Monitoring NGINX Integration mit Datadog unter Plesk

Seit ein paar Monaten probiere ich immer mal, den Service von Datadog zu testen.

Datadog wird in der englischsprachigen Wikipedia beschrieben als:

Datadog is a monitoring service for cloud-scale applications, bringing together data from servers, databases, tools, and services to present a unified view of an entire stack. These capabilities are provided on a SaaS-based data analytics platform.

(https://en.wikipedia.org/wiki/Datadog)

Durch Zufall bin ich auf diesen Service gestossen und war gleich interessiert, mir das mal anzuschauen. Dazu kam, dass der Datadog Agent, welcher auf dem zu überwachenden Server läuft, in Python implementiert ist. Weiterhin hat mich die große Anzahl an möglichen Integrationen mit üblichen Serverkomponenten aufhorchen lassen.

In diesem Beitrag möchte ich auf die Integration Datadog – NGINX eingehen

Für einen Kunden betreue ich einen virtuellen Server bei STRATO. Dieser Server muss überwacht werden. Folgende Services laufen darauf:

  • Apache
  • NGINX
  • MySQL
  • Gunicorn

Der V-Server wird über Plesk ONYX verwaltet.

Eine Firmenwebsite auf Basis PHP / MySQL und ein Kundentool auf Basis von Django / MySQL sind die zu überwachenden Anwendungen. NGINX fungiert für beide Anwendungen als Proxy. Bei der Website leitet NGINX zu Apache weiter, bei dem Kundentool leitet NGINX zu gunicorn weiter. In beiden Fällen ist NGINX für die Auslieferung der statischen Elemente vorgesehen.

Somit ist es klar, das ich NGINX auf dem Server gerne unter Beobachtung hätte.

Datadog Account (free) anlegen

Ein kostenloser Account für Datadog ist schnell angelegt. Auf der Webseite: https://www.datadoghq.com/ auf den Button Get Started Free klicken, die gewünschten Informationen eingeben und los kann es gehen.

Installation des Datadog Agent auf dem Server

Datadog benötigt einen Agent auf dem Server, welcher die Aufgaben des Monitorings übernimmt. Hier beschreibe ich kurz die Installation unter Ubuntu.

Im Datadog Dashboard (zu sehen, wenn man sich mit seinen Zugangsdaten bei Datadog anmeldet) auf den Menüpunkt: Integrations klicken und dort in der oberen Leiste auf Agent gehen.

Nun wählt man sein Server Betriebssystem aus, unter welchem man den Agent installieren möchte. Man bekommt dann eine Anleitung, welchen Befehl man auf der Serverkonsole absetzten muss.

Bei mir unter Ubuntu war es ein Befehl und die grundlegende Installation war komplett und funktionierte. Hier der Befehl:

DD_API_KEY=xxxxxxxxx bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/install_agent.sh)"

Der DB_API_KEY ist für den jeweiligen angemeldeten User bereits eingetragen.

Nun ein kurzer Test ob Datadog auf dem Server läuft und auch alles fehlerfrei installiert ist:

sudo /etc/init.d/datadog-agent info

Die Ausgabe enthält die nunmehr laufenden Dienste. Hier bitte auf eventuelle Fehlermeldungen in der Ausgabe achten.
Die Fehlermeldung, dass der Docker Client nicht gestartet werden kann, konnte ich ignorieren.

Das System wird nun überwacht. Im Dashboard kann man auf Erkundungstour gehen, welche Infos einem zu Verfügung stehen. Darauf will ich hier aber nicht weiter eingehen.

Installation der NGINX Integration

Im Dashboard unter: Integrations und in der oberen Menüleiste Integrations kann man sich die Vielzahl vorhandener Integrationen ansehen. Hier soll aber nur die Integration zwischen Datadog und NGINX kurz beschrieben werden.

In das Suchfenster gibt man den Begriff nginx ein und bekommt anschließend auf dem großen Button die Möglichkeit Install zu klicken. Wenn man das tut, wird diese Integration installiert. Nun geht es ans konfigurieren.

Alles was folgt, gilt für Ubuntu!

Als erstes ist sicher zu stellen, das NGINX auf dem Server mit dem ngx_http_stub_status_module läuft. Um das zu testen gibt man Folgendes ein:

nginx -V 2>&1| grep -o http_stub_status_module

Hier sollte jetzt bei installiertem Status Modul die Ausgabe erscheinen.

Das Modul muss man jetzt auf dem Server in den NGINX Konfigurationsdateien noch starten.
Im Verzeichnis /etc/nginx/conf.d legt man eine Datei nginx-status.conf mit folgendem Inhalt an:

# added for nginx monitoring
server {
listen 81 default_server;

access_log off;
allow 127.0.0.1;
deny all;

location /nginx_status {
	# freely available with open source NGINX
	stub_status on;
	}
}

Mit einem sudo nginx -t kann man testen, ob die Konfigurationsdateien fehlerfrei sind. Ist das der Fall, sollte NGINX neu gestrtet werden. Ein Reload der Konfigurationsdateien hat bei nicht ausgereicht.

/etc/init.d/nginx restart

Nun der Test, ob das Status Modul auch läuft. Dazu ruft man auf dem Server folgende Seite auf:

curl http://127.0.0.1:81/nginx_status

Ist alles OK, sollte eine Ausgabe wie folgt erscheinen:

Active connections: 1
server accepts handled requests
1673 1673 2188
Reading: 0 Writing: 1 Waiting: 0

Nun ist NGINX soweit eingerichtet, dass Statusdaten bereitstehen. Diese sollen nun vom Datadog Agent genutzt werden können.

Im Verzeichnis /etc/dd-agent/conf.d legt man eine Datei nginx.yaml mit folgendem Inhalt an:

init_config:

instances:
 - nginx_status_url: http://localhost:81/nginx_status/

Der Datadog Agent muss neu gestartet werden um die Integrationn zu aktivieren.

sudo /etc/init.d/datadog-agent restart

Ob die Integration fehlerfrei läuft bekommt man über folgenden Befehl feststellen:

sudo /etc/init.d/datadog-agent info

Die Ausgabe sollte einen Bereich wie den folgenden beinhalten:

...
Checks
======

nginx (5.18.0)
--------------
- instance #0 [OK]
- Collected 7 metrics, 0 events & 1 service check
...

Zusammenfassung

Datadog als Monitoring Tool für einen eigenen Server macht für mich einen guten Eindruck. Bisher habe ich nur wenige Bereiche für mich getestet, bin aber mit dem, was ich als Informationen bekomme, sehr zufrieden.

Selbstverständlich bietet Datadog alle Möglichkeiten, ein Servermonitoring professionell aufzuziehen. Benachrichtigungen bei Überschreitung von selbst eingestellten Grenzwerten wie Speicherauslastung, Server Request pro Zeiteinheit, Netzwerktraffic out of range und und und.

Screenshot Datadog NGINX Integration

Screenshot Datadog NGINX Integration

Ebenso kann man mehrere Server unter einer Oberfläche zusammengefasst verwalten und auch die Live Daten ansehen.

Von mir aus aus gibt es eine Empfehlung.

Für Kommentare, Korrekturen und Anregungen bin ich wie immer zu haben!

Stay tuned! 🙂

Edit 14.10.2017: Typo und Screenshot

 

Werbung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.