Open Source im professionellen Einsatz
Linux-Magazin 01/2016
© Sergey Nivens, 123RF

© Sergey Nivens, 123RF

Container überwachen

Auf dem Schirm

Wo Container großflächig zum Einsatz kommen, sollte ein Überwachungsmechanismus her, der den überraschungsarmen Betrieb sicherstellt. Admins müssen bestehende Monitoringlösungen anpassen, um sie fit für eine containerisierte Welt zu machen.

832

Will ein Admin Container überwachen, muss er sich zunächst klarmachen, welche Erwartungen an das Monitoring er hegt. Möchte er wissen, wie stark die Container die Host-Ressourcen auslasten oder interessiert ihn eher die Verfügbarkeit der containerisierten Dienste? Für beide Anwendungsfälle gibt es verschiedene Ansätze, zum Teil lassen sich bestehende Monitoringlösungen nutzen.

Fürs Grobe

Docker [1] selbst bietet zwar diverse Informationen zu den Containern an [2] – aber nur anderen Tools als Ausgangsbasis für komplexere Monitoring-Ansätze. Docker selbst bereitet die Daten nicht auf. Aber es kennt ein paar Kommandos, mit denen ein Admin Container zumindest rudimentär überwacht.

Der Befehl »docker ps« zeigt alle Container an, die auf einem Host laufen oder gelaufen sind (Abbildung 1). Dies gibt dem Admin einen groben Überblick darüber, ob Container noch laufen oder eine Anwendung verfügbar ist. Außerdem fördert der Befehl weitere Angaben, etwa zu geöffneten und weitergeleiteten Ports, zutage. Beendet das System eine Anwendung, erscheint ein Returncode.

Abbildung 1: Der Befehl docker ps verschafft eine Übersicht der laufenden Container.

Das »docker logs« -Kommando fragt ab, was die im Container laufende Anwendung nach Stdout und Stderr schreibt. Wer diese Logs scannt, kann sich so ebenfalls ein simples Monitoring aufbauen. Damit das Kommando funktioniert, muss der Admin zuvor den standardmäßig eingestellten Logging-Treiber »json-file« aktivieren. Alternativ wählt er »syslog« oder »journald« als Logziel aus, was ihm bessere Verarbeitungsmöglichkeiten der Ausgaben beschert.

Das »docker stats« -Kommando (Abbildung 2) zeigt CPU-Verbrauch, Speicherauslastung und Netzwerk-I/O an. Die Anzeige der Daten aktualisiert sich dabei automatisch. Wer die Daten automatisiert auswerten möchte, schaltet dieses Feature besser mit dem Parameter »--no-strem« ab, dann erscheint nur das jeweils erste Ergebnis.

Abbildung 2: Auch docker stats zeigt einige rudimentäre Statistiken zum ausgewählten Container an.

Möchte der Containerbetreiber diese Daten weitergehend verarbeiten, hilft es ihm unter Umständen mehr, direkt die Quelle der Ressourcenstatistik anzuzapfen: Cgroups. Wie im Artikel zu Docker Security [3] beschrieben, ordnen Cgroups Prozesse hierarchisch, um sie gemeinsam zu verwalten. Cgroups bieten aber auch die Gelegenheit, Ressourcenstatistiken aufzuzeichnen. Die bilden dann die Grundlage für den »docker stats« -Befehl.

Systemd legt die »cgroup« -Daten standardmäßig im Dateisystem unter »/sys/fs/cgroup« ab. Für jedes aktive »cgroup« -Subsystem wartet hier ein Ordner, in dem das System die hierarchische Struktur der Prozesse abbildet. Unter »/sys/fs/cgroup/memory/system.slice/docker-Container-ID .scope/memory.stat« finden sich zum Beispiel die für den Container gespeicherten Artbeitsspeicher-Statistiken.

Die von Docker bereitgestellten Tools bieten einen groben Überblick für einen Host, lassen sich aber kaum für großflächiges Monitoring anwenden. Zu diesem Zweck müssen Admins andere Werkzeuge einsetzen.

Container-Statistiken live

Ein solches Tool ist etwa das Google-Projekt C-Advisor [4]. Ursprünglich für das Google-eigene Lmctfy (Let me contain that for you) entwickelt, unterstützt es mittlerweile auch Docker, vorausgesetzt dies setzt die seit Version 1.0 standardmäßig aktivierte Bibliothek Libcontainer als Execution Driver ein. Die Installation als Docker-Container ist die einfachste Möglichkeit, eine C-Advisor-Instanz zu starten.

Das Tool bereitet die Perfomance- und Auslastungsdaten in einem sich aktualisierenden Webinterface auf (Abbildung 3). Dies zeigt Ergebnisse für den ganzen Host oder für einzelne Container an, dazu gehören CPU-Auslastung, Speicherverbrauch, Netzwerk-Traffic und belegter Plattenplatz. So gewinnt der Admin einen schnellen Überblick, wie ausgelastet der Host und in welchem Zustand die Container sind.

Abbildung 3: Googles C-Advisor bringt ein hübsches Webinterface mit und nutzt Influx DB als Datenbank.

C-Advisor aktualisiert die Daten live, fortschreitende Graphen visualisieren die gewonnenen Daten. Standardmäßig speichert die Software diese Daten jedoch nicht zwischen. Dafür bietet Google die Möglichkeit, die Performancedaten in eine Influx DB [5] zu schreiben. Diese hält die Daten für spätere Auswertungen bereit. Das erledigt allerdings nicht mehr C-Advisor, sondern dafür kommen andere Tools zum Zug.

Eines jener Werkzeuge, das Statistiken einer Influx DB grafisch aufbereitet, heißt Grafana [6]. Es handelt sich um einen Fork des im ELK-Stack verwendeten Kibana [7], der mit einem konfigurierbaren Dashboard punktet, das die Daten visualisiert. Der Benutzer kann aus den vorhandenen Daten eigene Graphen erzeugen, die das Dashboard dann anzeigt. Es unterstützt diverse Diagrammtypen, etwa Punkt-, Balken- oder Liniendiagramme. Für sie lassen sich weitere Optionen einstellen, etwa Stacking der Datenpunkte oder eine prozentuale Darstellung. Weitere Diagrammtypen fügt der Admin über Plugins hinzu.

Die Kombination aus Influx DB und Grafana erlaubt zudem den Einsatz von C-Advisor für eine große Menge an Hosts. Daneben konsolidiert es die Anzeige der Daten in Graphen oder Dashboards und bringt diese zwecks Überblick auf den großen Schirm. So behält der Admin die Docker-Landschaft stets im Blick.

In Zukunft soll C-Advisor weitergehende Features erhalten und Empfehlungen zur Optimierung der Containerperformance geben. Weiter soll C-Advisor die Container automatisch für die bestmögliche Performance feintunen. Die dazu nötigen Auslastungsvoraussagen sollen auch für Clustermanager zugänglich sein.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • C-Advisor 0.9.0 holt mehr Infos aus Containern

    C-Advisor (Container Advisor) zeigt Admins, welche Ressourcen ihre Container belegen und unterstützt Docker nativ. Version 0.9.0 verbessert den Support für Nicht-Ethernet-Schnittstellen und Partitionierungstypen.

  • Container-Beobachter Cadvisor erscheint in Version 0.26.0

    Cadvisor analysiert den Ressourcenverbrauch und Performance-Charakteristiken von laufenden Containern. Die neue Version 0.26.0 bringt unter anderem Support für ZFS mit und verbessert die Metriken.

  • Docker erreicht Version 0.5

    Von Docker ist eine neue Version 0.5 erschienen, die externe Mounts, detaillierte Portangaben und das einfachere Einrichten von eigenen Registries erlaubt.

  • Docker 1.9 unterstützt virtuelle Netzwerke und verbessert Volume-Management

    Docker 1.9 sei eine umfangreiche Release geben die Macher der Containerlösung zu Protokoll. Docker Swarm und Multihost-Networking seien einsatzbereit, zudem wartet ein überarbeitetes Volume-Management-System, um Daten dauerhaft zu speichern.

  • Container

    In dem Maße, wie Containerlösungen wie Docker in Unternehmen immer mehr Anwender finden, rücken Sicherheitsaspekte stärker in den Fokus. Schon länger bescheinigen Kritiker Docker Schwächen in diesem Bereich. Doch wo genau hat sich das Projekt verhoben?

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.