Docker Error Logs via Push

All die vielen Container laufen, toll! Wo aber sind die Logs? Die sind in jedem Container für sich…

Ihr könnt also jeden einzelnen Container mit „docker logs {ID}“ abfragen, oder Ihr verwendet den alt bewährten ELK Stack. Für mich sind beide Lösungen nicht zufrieden stellend. Erstere ist einfach unpraktisch und der ELK Stack benötigt zu viele Resourcen und Wartungsaufwand. Die Lösung ist „Docker Logs via Pushover„!

Erst kürzlich habe ich auf dem DockerHub, für diesen Zweck, folgendes Image veröffentlicht: https://hub.docker.com/r/berndinox/fluentd-pushover/

Das Prinzip ist einfach:

Via nativen Docker Logging Treiber werden alle Logs die innerhalb eines Containers generiert werden an die Fluentd-Pushover Container weitergeleitet. Dieser analysiert die Log-Einträge und falls diese ein „Fail“ oder „Error“ beinhaltet wird dieser Log-Eintrag via Pushover weitergeleitet.

Klarer Vorteil:

Es ist keine Datenbank notwendig, keine komplexe ELK Umgebung, welche Resourcen frisst, außerdem wird nur minimaler Speicherplatz benötigt.

Howto:

Der empfohlene Weg ist der Einsatz via Docker-Compose. Ein beispiel findet Ihr auf meinem Github Repo, oder anbei:

version: '2'

services:
  fluentd:
    #build: .
    image: berndinox/fluentd-pushover
    hostname: fluentd
    expose:
      - "24224"
    volumes:
      - ./fluent.conf:/fluentd/etc/fluent.conf
    restart: always
    networks:
      logs:
        ipv4_address: 10.0.0.10

networks:
  logs:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 10.0.0.0/24
        gateway: 10.0.0.1

Es wird ein Netzwerk mit Subnet 10.0.0.0/24 erstellt, der Fluentd Container macht sein Service via Port 24224 unter IP 10.0.0.10 für alle anderen Container verfügbar.

Diese müssen nur mehr die Logs an diese Adresse weiterleiten, dies geschieht wie folgt:

version: '2'
services:
  ping:
      image: dockercloud/hello-world
      expose:
       - "80/tcp"
      logging:
       driver: "fluentd"
       options:
         fluentd-address: "10.0.0.10:24224"

Sprich, bei allen anderen Container-Services muss lediglich der Logging Driver angepasst werden, sowie die IP.

 

Achtung:

  • Ihr müsst auf Pushover.net einen Account erstellen und euren User sowie Account Token in der fluent.conf Dateil hinterlegen.
  • Verwendet Ihr meine Compose Vorlage wird die fluentd.conf via Volume in den Container gemappt. Alternativ kann man sein eigenes Image bauen lassen (Dockerfile)  und via „ADD fluentd.conf /etc/fluentd/“ die Configuration hinzufügen.

Coming soon: Setup für Docker 1.13 im Swarm Mode, stay tuned!

Schreibe einen Kommentar

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