Tableau Server in einem Container – Fehlerbehebung

Einführung

Tableau Server in einem Container ist das erste containerbasierte Serverangebot von Tableau. Tableau Server in einem Container ist eine All-in-One-Tableau Server-Instanz, die in einem Linux-Docker-Container ausgeführt wird. Mit anderen Worten: Ein Image von Tableau Server in einem Container ist ein Docker-Image, das eine komplette, eigenständige Tableau Server-Anwendung ausführt. Tableau Server in einem Container ist unser erster von vielen Schritten zur Unterstützung von Tableau Server in einer containerbasierten Umgebung. Die einfachste Möglichkeit, das Konzept von Tableau Server in einem Container zu verstehen, besteht darin, es sich wie eine VM mit vorinstalliertem Tableau Server vorzustellen. Das Image basiert auf einem UBI 8-Image (CentOS 7.x für Version 2022.1 und früher) und führt supervisord (anstelle von systemd) innerhalb des Containers aus. Wenn der Container supervisord startet, versucht er sofort, Tableau Server zu initialisieren und zu starten. Ein Großteil dieser Dokumentation beschreibt, wie Sie die Konfiguration bereitstellen und die Automatisierung nutzen können, damit Sie Tableau Server in Docker-Umgebungen ausführen können.

Mit dem Einrichtungstool für ein "Tableau Server in einem Container"-Image können Sie Container-Images erstellen und so anpassen, dass es benutzerdefinierte Pakete und Artefakte enthält. Eine der Hauptfunktionen des Tools besteht darin, das Container-Image zu erstellen und benutzerdefinierte Datenconnectoren zu installieren.

Informationen zum schnellen Testen des Images von Tableau Server in einem Container im Rahmen eines Machbarkeitsnachweises finden Sie unter Tableau Server in einem Container – Schnellstart.

Einschränkungen

  • Tableau Server in einem Container unterstützt nur die Lizenzaktivierung über Server-ATR, wofür der Container über einen Internetzugang verfügen muss. Daher ist eine Offline-Aktivierung in einer "Air-Gapped"-Umgebung nicht möglich.
  • Tableau Server in einem Container unterstützt derzeit den Resource Monitoring Tool (RMT)-Agent nicht.
  • Kerberos wird in Tableau Server in einem Container nicht unterstützt.

Problembehebung

Wenn bei der Ausführung von Tableau Server Probleme auftreten, gibt es verschiedene Möglichkeiten, um eine Lösung zu finden. Dieser Abschnitt enthält allgemeine Hinweise zur Fehlerbehebung bei Tableau Server, z. B. wo Sie Protokolle finden und was sie bedeuten. Es werden auch einige spezifische bekannte Szenarien und Abhilfemaßnahmen behandelt.

Wenn Sie zusammen mit dem Tableau-Support an der Behebung eines Problems arbeiten, kann die Angabe von folgenden Informationen hilfreich sein:

  • Tableau Server-Protokolle (das Zusammenstellen dieser Protokolle wird unten erläutert).
  • Die Protokolle stdout des Docker-Containers.
  • Dockerfile von Tableau Server (sofern Anpassungen vorgenommen wurden).
  • Bereitstellungskonfiguration einschließlich:

    • Kubeconfig (oder eine äquivalente Bereitstellungskonfiguration).
    • Statische Konfigurationsdateien zur Konfiguration des Tableau Server-Containers.

Installations- und Initialisierungsfehler

Wenn Sie Tableau Server zum ersten Mal initialisieren oder eine Neuinstallation in einem Container durchgeführt haben, lässt sich der Server nicht einfach durch einen Neustart des Containers wiederherstellen. Jeder Installationsversuch sollte ein leeres Datenverzeichnis verwenden. Dies kann bedeuten, dass persistente Volume-Daten aus früheren Containerausführungen gelöscht werden müssen. Wenn Sie dies tun, stellen Sie sicher, dass Sie Protokolle und Informationen speichern, die für das Debugging nützlich sein könnten.

Beheben von Installationsfehlern

Tableau Server-Container sind so konzipiert, dass sie beendet werden, wenn ein Installationsfehler auftritt. Dieses Muster erleichtert die Automatisierung und das Identifizieren von Installationsfehlern. Allerdings kann dies die Fehlersuche erschweren, da der Container beendet wird und keinen untersuchbaren Laufzeitzustand hinterlässt. Wenn Sie eine Debugsitzung innerhalb eines aktiven Containers durchführen möchten, der während der Initialisierung fehlschlägt, führen Sie die folgenden Schritte aus:

  1. Bereiten Sie eine neue Bereitstellung von Tableau Server in einem Container vor.
  2. Konfigurieren Sie den Container für die Ausführung mit der Umgebungsvariablen TSM_ONLY=1. Die Umgebungsvariable TSM_ONLY=1 weist Tableau Server an, nur TSM zu initialisieren. Dies entspricht der Ausführung des Skripts initialize-tsm in einer Standardinstallation ohne Container.
  3. Führen Sie den Tableau Server-Container aus.
  4. Öffnen Sie eine Shell im Container.
  5. Sie können jetzt TSM-Befehle ausführen, auch wenn Tableau Server nicht initialisiert wurde. Um die normalerweise während der Initialisierung stattfindende Automatisierung wieder aufzunehmen, führen Sie das Skript tsm-commands aus: "${DOCKER_CONFIG}"/config/tsm-commands

Tableau-Support und Kubernetes

Tableau Server in einem Container kann mit Kubernetes ausgeführt werden, dies ist jedoch nicht erforderlich. Wir gehen davon aus, dass die meisten Kunden Kubernetes oder eine der zugehörigen verwalteten Cloud-Umgebungen (EKS, AKS oder GKS) verwenden, um Tableau Server in einem Container auszuführen und zu verwalten.

Kubernetes kann eine komplexe Umgebung zum Ausführen und zur Fehlersuche sein und beinhaltet oft Abhängigkeiten von der Infrastruktur und Einrichtung einzelner Unternehmen. Aus diesem Grund kann der Tableau-Support Kunden nicht bei der Lösung von Kubernetes-Problemen (oder Problemen bei der Bereitstellung der Infrastruktur) im Zusammenhang mit der Ausführung von Tableau Server in einem Container unterstützen. Tableau unterstützt jedoch die Ausführung von Tableau Server in einem Docker-Container. Wenn Sie also Probleme mit der Ausführung von Tableau Server in einem Container unter Verwendung von Kubernetes haben, kann der Tableau-Support nur überprüfen, ob der Docker-Container an sich ordnungsgemäß funktioniert.

Weitere Informationen zum Ausführen von Tableau Server in einem Container mithilfe von Kubernetes finden Sie auf dieser GitHub-Site: https://github.com/tableau/tableau-server-in-kubernetes(Link wird in neuem Fenster geöffnet).

Protokolle

Protokolle sind eine wichtige Ressource für das Erkennen, Verstehen und Lösen von Problemen in Tableau Server. Sie helfen unseren Support-Teams bei der Suche nach der Ursache von Problemen, die bei Ihnen auftreten. Protokolle können auch für Ihre eigene Fehlersuche und -behebung nützlich sein.

Extrahieren aller Protokolle

Wenn Sie alle Protokolle für die weitere Fehlersuche oder zum Senden an unsere Support-Teams extrahieren müssen, gibt es mehrere Methoden zum Abrufen dieser Informationen.

Ziplogs

TSM kann ein komprimiertes Archiv erstellen, das alle relevanten Serverprotokolle enthält. Sie können dies mit dem Befehl tsm maintenance ziplogs auslösen. Wenn der Befehl abgeschlossen ist, wird der Dateipfad des Protokollarchivs angegeben. Sie müssen das Archiv mit der für Ihre Situation am besten geeigneten Dateiübertragungsmethode kopieren. Weitere Informationen zu Ziplogs finden Sie unter tsm maintenance ziplogs.

Beispielbefehl, der im Container ausgeführt wird:

tsm maintenance ziplogs
Manueller Tar-Befehl

Wenn Sie den ziplogs-Befehl nicht ausführen können, z. B. wenn der Server keinen konsistenten Zustand erreicht, können Sie die Protokolle immer noch abrufen, indem Sie einen tar-Befehl im Container ausführen. Sie müssen das Archiv mit der für Ihre Situation am besten geeigneten Dateiübertragungsmethode herauskopieren.

Beispielbefehl, der im Container ausgeführt wird (schreibt die tar-Datei in ein temporäres Verzeichnis im Datenverzeichnis des Containers):

tar -zcvf /var/opt/tableau/tableau_server/temp/<archive_name>.tar.gz \
/var/opt/tableau/tableau_server/data/tabsvc/logs/. \
/var/opt/tableau/tableau_server/supervisord/ \
/var/opt/tableau/tableau_server/data/tabsvc/config/ \
/docker/.metadata.conf \
--exclude='*keystores' --exclude='*.jks' --exclude='*.tks' \
--exclude='*asset_keys.yml' --exclude='*.ks' --exclude='*.ts' \
--exclude='*.crt' --exclude='*cacerts' --exclude='*.key'
Navigieren in Protokollen und Tipps zur Fehlerbehebung

Es gibt allgemeine Schritte zur Diagnose der meisten Probleme in Tableau Server. Wenn Sie sich Ihre Serverprotokolle ansehen möchten, kann es hilfreich sein, die gesuchten Informationen danach aufzuschlüsseln, an welcher Stelle im Lebenszyklus des Servers der Fehler aufgetreten ist.

Starten des Containers (Initialisierung/Installation)

Wenn der Container sofort abstürzt oder die Installation oder Initialisierung fehlschlägt, überprüfen Sie die folgenden Ressourcen:

stdout des Containers

Untersuchen Sie stdout für den Docker-Container. Dies ist meist zugänglich, indem Sie sich die Containerausgabe ansehen, die von Ihrem Container-Orchestrierungssystem (z. B. Kubernetes) gesammelt wird. Da Tableau Server ein Multiprozesssystem ist, das in einem Container ausgeführt wird, ist stdout oft nicht nützlich und meldet nicht die Ursache des Problems, es sei denn, es treten katastrophale Fehler beim Starten auf. Es wird empfohlen, stdout des fehlerhaften Containers zu überprüfen, bevor Sie sich die Tableau Server-Protokolle eingehender ansehen.

Beispiel:

docker logs <container-name>

Startprotokoll des Tableau Server-Containers

Das Startprotokoll des Tableau Server-Containers erfasst die Ausgabe der Automatisierung, die Tableau Server initialisiert, konfiguriert und startet. Wenn Sie feststellen, dass Ihr Container beim Hochfahren oder beim ersten Start Probleme aufweist, ist dies das erste Protokoll, das Sie überprüfen sollten:

/var/opt/tableau/tableau_server/supervisord/run-tableau-server.log

Sehen Sie unten im Protokoll nach, ob ein Fehler gemeldet wurde. Manchmal wird der Fehler gemeldet und ist sofort aus dem Protokoll ersichtlich. Wenn der Fehler nicht eindeutig aus dem Protokoll hervorgeht, ist die Ursache möglicherweise nur in einer stufenspezifischen oder dienstspezifischen Protokolldatei einsehbar. Die unten aufgeführten Protokolle decken diese Möglichkeiten ab.

Tableau Server-Installationsprotokoll

Wenn das Startprotokoll anzeigt, dass es ein Problem mit der Automatisierung gab, die für die TSM-Initialisierungsphase verantwortlich ist, überprüfen Sie dieses Protokoll:

/var/opt/tableau/tableau_server/logs/app-install.log

Tableau Server-Controllerprotokoll

Wenn das Startprotokoll anzeigt, dass es ein Problem mit dem Initialisieren und Starten der Serverphase gab (nur CLI), überprüfen Sie das Dienstprotokoll von tabadmincontroller:

/var/opt/tableau/tableau_server/data/tabsvc/logs/tabadmincontroller/tabadmincontroller_node1-0.log

Diese Protokolldatei bezieht sich auf einen bestimmten Dienst namens tabadmincontroller. Tabadmincontroller ist für die Orchestrierung der Initialisierungs- und Startfunktionalität im Server verantwortlich. Dieses Protokoll kann komplex und umfangreich sein. Fehler in dieser Protokolldatei weisen möglicherweise immer noch nicht auf die Ursache hin. Manchmal werden die Fehler durch Dienste verursacht, auf die sich tabadmincontroller zur Ausführung einer bestimmten Aufgabe stützt. Weitere Informationen finden Sie unten im Abschnitt zur Serverlaufzeit.

Dienstprotokolle – Serverlaufzeit

Wenn Tableau Server während der normalen Laufzeit auf Probleme stößt oder wenn Dienste Aufgaben nicht abschließen können oder ausgefallen sind, können Sie die Dienstprotokolle auf weitere Informationen überprüfen. Jeder Dienst, der als Teil von Tableau Server ausgeführt wird, verfügt über eine Dienstprotokolldatei. Wenn Sie wissen, welchen Dienst Sie untersuchen möchten, finden Sie die Protokolle dieses Dienstes in diesem allgemeinen Verzeichnis:

/var/opt/tableau/tableau_server/data/tabsvc/logs/<service_name>

Geben Sie den Namen des Dienstes im Argument <service_name> des Dateipfads an. Jeder Dienst kann mehrere Arten von Protokolldateien schreiben. Außerdem werden alle Dienstprotokolle in dasselbe Dienstverzeichnis geschrieben, wenn mehr als eine Instanz desselben Dienstes ausgeführt wird.

Allgemeine dienstspezifische Protokolldateiklassifizierungen

Diese Tabelle enthält die häufigsten Namen, Typen und Beschreibungen von Dienstprotokolldateien für Tableau Server-Dienste. Die Spalte "Fehlerarten" gibt an, welche Protokolldateien in einem bestimmten Fehlerszenario wahrscheinlich nützlich sind.

NameDateinamenformatBeschreibungFehlerartenBeispiel
Control-Appcontrol_<service_name>_<node_id>-<instance_id>.logEnthält Informationen zum Control-App-Prozess, der für die Installation und Konfiguration eines Dienstes verantwortlich ist. Dies ist oft das erste Protokoll, das zu einem Dienst geschrieben wird. Suchen Sie hier zuerst nach Fehlern bei der Installation und Konfiguration von Diensten.Installation, Konfiguration, Statuscontrol_backgrounder_node1-0.log
Dienstprotokoll<service_name>_<node_id>-<instance_id>.logPrimäres Protokoll für einen ausgeführten Dienst. In den meisten Fällen enthält dieses Protokoll die Ausgabe der Spring/Java-Anwendungsebene.Start, Laufzeit, Statusbackgrounder_node1-1.log
Stdout-Protokollstdout_<service_name>_<instance_id>.logEnthält die Ausgabe stdout für den Dienst. Die meisten Dienste geben nicht viele Informationen in stdout aus und schreiben stattdessen in das primäre Protokoll. Manchmal kann dieses Protokoll nützliche Informationen enthalten, wenn ein Dienst beendet wird.Starten, Anhaltenstdout_backgrounder_0.log
NativeAPI-Protokollnativeapi_<service_name>_<instance_id>.txtEinige Dienste führen eine native Codeebene aus. Dieses Protokoll zeichnet diesen Teil der Anwendungslaufzeit auf.Lizenzierung, Start, Laufzeit, Statusnativeapi_backgrounder_1-1_2021_05_10_00_00_00.txt
Tomcat-Protokolltomcat_<service_name>_<node_id>-<instance_id>.logDies gilt nur für Dienste, die in einem Tomcat-Container ausgeführt werden, und enthält Tomcat-Protokolle. Es werden selten Informationen über Dienstausfälle bereitgestellt. Es kann nützlich für die Fehlersuche bei einigen Netzwerkproblemen sein.Netzwerk, Starttomcat_backgrounder_node1-0.2021-05-10.log
Angehaltener Container

Falls der Container angehalten wird oder es aus anderen Gründen schwierig ist, darin Befehle auszuführen, können Sie die Protokolle dennoch einsehen, wenn das Datenverzeichnis des Servers auf ein eingebundenes Volume ausgelagert ist. Andernfalls kann lediglich das stdout des Containers im Orchestrierungssystem des Containers untersucht werden, das oft nicht die eigentliche Ursache enthält.

Fehler beim Festlegen der Authentifizierungseigenschaften

Es scheint ein Problem beim Einstellen von Authentifizierungseigenschaften in Tableau Server zu geben, wenn nicht zuerst der Identitätsspeicher eingerichtet wird. Um dieses Problem zu umgehen, legen Sie einfach den Identitätsspeicher im Vorinitialisierungs-Hook fest.

  1. Erstellen Sie eine Datei mit dem Namen ./customer-files/pre_init_command im Verzeichnis "customer-files" des Image-Erstellungstools von Tableau Server und bearbeiten Sie sie so, dass sie Folgendes enthält:

    #!/bin/bash
    tsm configuration set -k wgserver.authenticate -v local --force-keys
  2. Legen Sie fest, dass das Skript ausführbar ist.

    chmod +x ./customer-files/pre_init_command
  3. Erstellen Sie das Image und führen Sie es aus.

Fehler beim Neustart (z. B. Gründe dazu, warum Tableau Server nicht gestartet wird)

  • Wenn Probleme bei der Initialisierung oder Inbetriebnahme von Tableau Server auftreten, gibt es eine Reihe von Problembehandlungsmöglichkeiten, die Ihnen dabei helfen können, das Problem zu beheben.
  • Wenn der Container überhaupt nicht gestartet werden kann, sollten Sie den stdout aus dem PID 1-Prozess mithilfe des Befehls docker logs <container-name> überprüfen.
  • Wenn der Container ausgeführt wird, Tableau Server jedoch nicht ordnungsgemäß initialisiert oder ausgeführt zu werden scheint, muss an zweiter Stelle diese Datei nach Fehlern durchsucht werden:
${DATA_DIR}/supervisord/run-tableau-server.log

Beispiel:

docker exec -it <container-name> bash -c 'cat $DATA_DIR/supervisord/run-tableau-server.log'

Diese Protokolldatei enthält alle Ereignisse, die vom Tableau-Container-Initialisierungsdienst orchestriert werden, der den Start von Tableau Server verarbeitet und alle Setup-Skripte oder benutzerdefinierten Konfigurationen ausführt, die Sie möglicherweise im Container bereitgestellt haben. Die meisten Startfehler melden hier die Probleme. Wenn der Fehler mit einem TSM- oder Tableau Server-Prozess zusammenhängt, wird manchmal eine andere Protokolldatei vorgeschlagen, die genauere Informationen erhält.

Fehler beim Neustart oder Start eines Containers mit vorhandenen Daten

Server startet keinePostGRES (oder andere Prozesse)

Wenn Daten außerhalb des Containers vorgehalten werden und Sie ein anderes Image von Tableau Server in einem Container mit diesen alten Daten starten, ist es wichtig zu beachten, dass der interne Hostname des neuen Containers mit dem Hostnamen des Containers übereinstimmen muss, der die persistenten Daten initialisiert hat. Tableau Server kommt mit dynamischen Hostnamenänderungen nicht gut zurecht und das Starten eines neuen Containers mit einem anderen internen Hostnamen trägt aktiv zu diesem Szenario bei.

Die Abhilfe besteht einfach darin, sicherzustellen, dass der Hostname des Containers auf den gleichen Wert wie der Container festgelegt ist, der zuvor mit diesen Daten ausgeführt wurde. Dies ist nicht zu verwechseln mit Mehrknoten; Worker können (und sollten wahrscheinlich) unterschiedliche Hostnamen haben. Wichtig ist, dass der nachfolgende Container denselben Hostnamen wie sein Vorgänger hat, wenn ein Container neu gestartet oder gelöscht werden muss.

Beispiele für Bereitstellungskonfigurationen

Docker

Grundlegende Verwendung von Tableau Server in einem Container
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
Grundlegende Verwendung von Tableau Server in einem Container mit automatisiertem ursprünglichem Administratorbenutzer
docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Nur TSM-Modus
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Grundlegende Verwendung mehrerer Knotenpunkte
Anfangsknoten

Option 1: Verwenden Sie Folgendes, wenn die Serverkonfiguration (CONFIG_FILE) eine Topologie mit mehreren Knoten vorgibt:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<name-of-host-machine> \
-d <Tableau Server in a Container image ID or tag>

Option 2: Verwenden Sie Folgendes, wenn Sie eine Bereitstellung mit mehreren Knoten wünschen, auch wenn die Serverkonfiguration keine Topologie mit mehreren Knoten vorgibt:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<name-of-host-machine> \
-d <Tableau Server in a Container image ID or tag>
Weiterer Knoten
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
Externalisieren der Datennutzung
docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
---hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Grundlegende Verwendung des Init-Containers

Init-Container

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
-e INIT_CONTAINER=1 \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Ausführen des Containers

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Grundlegendes Wiederherstellen aus einer Einzelknotensicherung
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Docker Compose

version: '3.2'
services:
    tableau-server:
         hostname: localhost
         volumes:
              - <your-tsm-command-file>:/docker/config/tsm-commands:ro
              - <your-config-file >:/docker/config/config.json:ro
         ports:
              - "8080:8080"
         image: ${IMAGE_NAME}
         environment:
              - LICENSE_KEY=<license-key>

 

 

Vielen Dank für Ihr Feedback!Ihr Feedback wurde erfolgreich übermittelt. Vielen Dank.