Traefik TroubLeshooting Guide

Traefik Architecture

In allen meiner Tutorials verwende ich Traefik als Reverse Proxy für Docker Container, so natürlich auch auf meinem YouTube Kanal. Im Laufe der Zeit fragen immer wieder Leser und Zuschauer ob ich ihnen bei ihrem Problem helfen kann. Dies mache ich natürlich gerne. Für ein gewisse Selbsthilfe möchte ich dir allerdings diesen Traefik Troubleshooting Guide an die Hand geben.

Vorbereitende Maßnahmen

Um mit einem guten Troubeshooting zu beginnen möchte ich zwei Maßnahmen vorweg greifen. Diese helfen dir ein paar Dinge auszuschließen bzw. eventuell schnell selbst auf eine Lösung zu kommen.

Container richtig neu starten

Wenn ihr Änderungen am Container von Traefik oder gar an den Konfigurationsdateien vornimmt, muss Traefik komplett neu gestartet werden. Ein stoppen des jeweiligen ist nicht ausreichend. Bei meinen Compose Dateien verwende also bitte nach dem stoppen noch ein

docker-compose rm

um diesen komplett zu löschen. Anschließend kannst du den Container wieder starten und eine neue Konfiguration ist übernommen.

Erhöhen des Log Levels

Zum Traefik Troubleshooting gehört auf jeden Fall auch das betrachten der Log Dateien. In meiner Vorlage steht das Logging auf einer sehr kleinen Stufe um nicht unnötig Speicherplatz zu benötigen. Wenn du mit Traefik startest empfehle ich dir, dieses auf debug zu stellen.

Hierzu einfach die traefik.toml Datei anpassen:

[log]
  level = "DEBUG"
Traefik Architecture

Fehlerlösungen

Die Webseite wird als nicht sicher angezeigt

Dieser Fehler entsteht zumeist wenn Traefik kein Let’s Encrypt Zertifikat abrufen konnte. Leider kann das mehrere Ursachen haben:

Zu häufiges Abrufen von Zertifikaten

Im Log steht hier meist, dass die Anzahl der Möglichen Erstellversuche von Zertifikaten erreicht ist. LE lässt es nur zu 10 Versuche binnen 24 Stunden auf ein SSL-Zertifikat zu erstellen. Wenn du eine eigene Domain hast, versuche es mit einer anderen Subdomain erneut. Andernfalls hilft nur warten.

Ein anderer Container hört auf Port 80

Let’s Encrypt nutzt bei der ersten Kommunikation zwischen Server und Client auch HTTP (Port 80). Wenn dieser Port also noch durch einen anderen Container geblockt ist kann keine Verbindung aufgebaut werden. Ebenso könnte es sein, dass dein NAT in deinem Router Port 80 noch nicht weiter leitet.

Eine 404-Seite wird angezeigt

Jetzt wird es spannend. Sobald eine 404-Seite angezeigt wird, gibts nämlich ein Problem mit dem Routing zu den Containern. Folgende Dinge kannst du hier prüfen:

  • Wird der korrekte Port weiter geleitet?
  • Stimmen alle Middlewere-Configs überein?

Warum ein Tesla? Der Grund hinter unserer Entscheidung

Als wir vor mehr als drei Jahren ein Auto brauchten, wollten wir eigentlich schon auf ein Plug-In Hybrid Fahrzeug wechseln. Damals stand der Audi A3 e-tron hoch im Kurs. Auf Grund sehr langer Lieferzeiten, mussten wir uns anderes entscheiden. Warum Tesla werden wir sicherlich auch noch häufiger in diesem Blog erläutern.

Ich bin weiterhin ein großer Audi-Fan. Ich mag die Designsprache, die Anmutung des Interieuer und das Fahrverhalten der Autos sehr. Entsprechend war die Begeisterung groß, als Audi ein rein elektrisch betriebenes KfZ vorstellte: Der Audi e-Tron

Weiterlesen

Homelab Monitoring – Wie siehts bei mir aus?

Viele meiner Leser wissen es bereits: Ich nutze sehr gerne ICINGA2 als meine Monitoring Software. Vor vielen Jahren bin ich von Nagios damals zu ICINGA 1 gewechselt und sehr zeitnah zu Version 2. Entsprechend ist klar, dass mein Homelab Monitoring primär von ICINGA2 durchgeführt wird.

Wie sieht für mich Monitoring aus?

Bevor ich dir mein Homelab Monitoring zeige, möchte ich erst mal auf die Frage eingehen, wie das ganze überhaupt für mich aussehen soll, bzw. was für mich der Sinn und Zweck eines Monitoring ist.

Privat als auch im beruflichen Leben weiß ich gern vor meinen Kunden (Partnerin, Kollegen, externe Kunden) ob etwas nicht funktioniert. Realistisch betrachtet gibt es Dinge die man nicht vor anderen wissen kann: zum Beispiel ob das Internet noch funktioniert. 🤷‍♂️

Entsprechend versuche ich viele Dinge zu überwachen und mit sauberen Schwellwerten zu versehen um möglichst frühzeitig ein Problem zu sehen oder gar vor einem Problem eingreifen zu können.

Was monitore ich im Homelab?

Nun kommen wir zur spannenden Frage was ich denn im Homelab überwache. Wie oben bereits geschrieben gibt es für mich kein Grund die Verfügbarkeit der Internetleitung zu überwachen. Es ist immer jemand im Haus der das vor mir erkennen würde. Zudem müsste ich für eine entsprechende Benachrichtigung eine zweite Internetleitung bereit stellen oder ein SMS Gateway anschaffen. Beides für daheim zu großer overhead.

Ansonsten versuche ich alle Infrastrukturdienste zu überwachen, sofern sie durch die jeweilige Software überwachbar sind. Mein DHCP Server ist z. B. in der Unifi USG integriert, hier kann ich den Dienst nicht sauber überwachen, da die Firmware ein geschlossenes System ist.

Anders sieht es z. B. beim Thema Smart Home aus. Hier überwache ich sämtliche Dienste (Home Assistant, zwave to mqtt, zigbee to mqtt, etc) auf deren Ausführung.

Dazu kommen natürlich noch alle anderen Bereitstellungen wie DMS, Netzwerkspeicher und so weiter. Überall werden, sofern es Sinn macht, natürlich auch Metriken wie CPU oder RAM Auslastung mit protokolliert und grafisch dargestellt.

Homelab Monitoring mit ICINGA2

Homelab Monitoring – Die Software

Wie bereits geschrieben nutze ich ICINGA2 als Software. Diese setzt zum Betrieb eine SQL Datenbank voraus. Ich für meinen Teil nutze wo immer es auch geht MariaDB, einfach als persönliche Präferenz.

Alle Metriken bzw. Performancedaten werden in eine InfluxDB Datenbank gespeichert. Die Grafen in ICINGA Web 2 sowohl als auch eigenständige Dashboard werden mittels Grafana realisiert. Dieses greift auf die Influx Datenbank zu und stellt nach meinen Wünschen die Werte grafisch dar.

Homelab Monitoring mit Grafana

In dem Screenshot wird Beispielhaft die Auslastung meines kleinen Kubernetes Clusters dargestellt. Dieser läuft auf diversen Raspberry Pis mit k3s.

WordPress Docker Performance

Das mein Blog mit der Software WordPress läuft, sollte eigentlich klar sein. Die ganze Zeit kämpfte ich mit massiven Performance Problemen die eigentlich nicht am Hostsystem liegen können. Andere Softwareprodukte laufen auf meinem NetCup VPS nämlich schnell und zuverlässig. Die Wordress Docker Performance leider ein wenig.

Im Internet gibt es nicht wirklich viele Informationen zu dem Problem. Meist wird behauptet, dass es am Hostsystem liegen soll. Da ich das bereits ausschließen konnte wurden viele Beiträge obsolet.

Weiterlesen

Neue Möglichkeiten mich zu unterstützen

Dinge die ich ins Internet stelle tue ich freiwillig und ohne irgendein finanzielles Interesse. Schließlich habe ich eine Festanstellung in einem Vollzeitjob.

Nichts desto trotz gibt es einige die sich gerne für meine Arbeit bedanken wollen. Regelmäßig erhalte ich Spenden via PayPal. An alle die gespendet haben, sei noch mal ein herzliches Dankeschön!

Seit kurzem bin ich bei YouTube für die Kanalmitgliedschaften qualifiziert. Dort kannst du für 99 Cent im Monat mich Unterstützen. Hier erhältst du als Gegenleistung Einblicke hinter die Kulissen. Bei einer größeren Menge an Unterstützer werde ich sicherlich auch exklusiven Content produzieren oder weitere Vorteile erstellen.

Heute Abend kam dann zudem noch die Bestätigung von GitHub, dass ich jetzt auch für das GitHub Sponsors Programm freigeschaltet bin. Dies war zwar auch ein aktiver Vorgang von mir, dennoch wird dort nicht immer jeder angenommen. Auch hier kannst du mich für 99 Cent im Monat unterstützen.

Das ist natürlich immer alles freiwillig. Ich werde meine Arbeit für die Community auch weiterhin kostenfrei machen, zumindest solange ich in einer Festanstellung bin. 🙂

Docker Befehle für den Alltag

docker-befehle

Um Docker im Alltag zu meisten, ist es ratsam sich ein paar Docker Befehle anzueignen und diese anwenden zu können. Ich möchte dir ein paar meiner alltäglichen Helfer in diesem Beitrag vorstellen.

Docker hat sich in den letzten Jahren immer mehr entwickelt und ist aus vielen Homelabs nicht mehr weg zu denken. Einige recht umfangreiche Infrastrukturen basieren vollständig auf dieser Art der Containerisierung. Im Laufe der Zeit wird man immer mehr zum Profi und kann auch komplexe Probleme schnell löschen. Als Anfänger allerdings steht man häufig vor Problemen.

Informationen über Docker Container

Wir starten mit einem Docker Befehl um die Informationen eines Containers, heißt IP-Adresse, Konfiguration und ähnliche Dinge einsehen zu können.

docker inspect {container name}

Log des Containers einsehen

Sollten alle Container immer problemlos laufen, bräuchten wir diesen Beitrag nicht. Aber wir wissen alle, dass das nicht der Fall ist. Um sich die Log Dateien bzw. das STDOUT des Containers anzuschauen gibt es den Befehl

docker logs {container name}

Dieser listet alle Loginformationen seit dem letzten Start des Containers auf. Dies kann also schon mal recht lang werden. Einfacher ist es dann den Befehl um ein -f zu erweitern

docker logs -f {container name}

Jetzt haben wir die Chance das Logfile dauerhaft anschauen zu können. Sobald der Container also etwas protokolliert, wird dies direkt angezeigt. Mit STRG+C können wir das abbrechen.

docker-befehle
Docker Befehle für den Alltag helfen wir bei deiner Arbeit

Alle Container stoppen

Manchmal muss man alle Container auf einmal beenden. Zum Beispiel wenn man Update am Hostsystem einspielen, das Hostsystem kontrolliert herunterfahren oder andere Wartungsarbeiten durchführen möchte.

Wer mit Docker Compose arbeitet und nur eine große Datei hat – davon sei übrigens abzuraten – hat es einfach. Allerdings ist das nur sehr selten der Fall.

docker stop $(docker ps -a -q)

Der Befehl stoppt alle Container (docker stop) die mit dem Befehl (docker -ps -a -q) gefunden werden. Also alle Container, egal welchen Status diese derzeit haben. Hier werden also Docker Befehle zusammen gefasst um dir das Leben direkt zu erleichtern.

Alle Container löschen

Ab und zu ist es auch notwendig alle Docker Container zu löschen. Zum Beispiel um neue Environment-Variablen einzulesen. Allerdings müssen wir erst alle Container stoppen, z. B. mit dem Befehl weiter oben.

Anschließend bedienen wir uns einer sehr ähnlichen Technik und löschen alle Container die mit docker ps gefunden werden

docker rm $(docker ps -a -q)

Ich hoffe ich konnte dir ein paar nützliche Docker Befehle mit an die Hand geben. Mich würde es noch interessieren, was deine Empfehlung für diese Liste wäre.

3D-Drucker fürs Homelab

Vor einigen Wochen bestellte ich mir einen 3D-Drucker. Einige Kollegen auf der Arbeit besitzen bereits einen und ich fand das Thema dann irgendwie doch spannender als gedacht. Entsprechen habe ich mir einen 3D-Drucker fürs Homelab bestellt.

Nach ein wenig Recherche und kurzer Unterstützung von MyDealz wurde es ein Creality Ender3 Pro. Ein sehr guter Einstiegsdrucker zu einem vernünftigen Preis. Ich hatte damals ca. 240 US-$ bei AliExpress bezahlt. Sollte man diese Geräte in Deutschland bestellen wollen, sind diese selten unter 300 Euro zu haben. Eine Bestellung in Fernost lohnt sich also.

Weiterlesen