Tableau Server in een container - Problemen oplossen

Inleiding

Tableau Server in een container is het eerste containergebaseerde serveraanbod van Tableau. Tableau Server in een container is een alles-in-één Tableau Server-instantie die wordt uitgevoerd in een Linux Docker-container. Met andere woorden: een afbeelding van Tableau Server in een container is een Docker-afbeelding die een volledige, zelfstandige Tableau Server-toepassing uitvoert. Tableau Server in een container is de eerste stap in ons proces om het uitvoeren van Tableau Server in containergebaseerde omgevingen mogelijk te maken. De eenvoudigste manier om het concept van Tableau Server in een container te begrijpen, is door het te zien als een virtuele machine waarop Tableau Server vooraf is geïnstalleerd. De afbeelding is gebaseerd op een UBI 8-afbeelding (CentOS 7.x voor versie 2022.1 en lager) en voert supervisord uit (in plaats van systemd) in de container. Wanneer de container supervisord start, wordt er onmiddellijk geprobeerd om Tableau Server te initialiseren en te starten. Een groot deel van de documentatie hier beschrijft hoe u configuratie kunt bieden en automatisering kunt benutten, zodat u Tableau Server in Docker-omgevingen kunt uitvoeren.

Met de configuratietool van Tableau Server in een container-afbeelding kunt u container-afbeeldingen maken en aanpassen, zodat u aangepaste pakketten en artefacten kunt toevoegen. Een van de belangrijkste functies van de tool is het bouwen van de containerafbeelding en het installeren van aangepaste dataconnectors.

Zie Tableau Server in een container – Snelle start om Tableau Server in een container-afbeelding snel te testen in een 'proof-of-concept'-scenario.

Beperkingen

  • Tableau Server in een container ondersteunt alleen licentie-activering met behulp van Server ATR. Hiervoor moet de container toegang hebben tot internet. Daarom is offline activering in een 'air-gapped' omgeving niet mogelijk.
  • Tableau Server in een container ondersteunt momenteel de RMT-agent (Resource Monitoring Tool) niet.
  • Kerberos wordt niet ondersteund in Tableau Server in een container

Problemen oplossen

Als u problemen ondervindt bij het uitvoeren van Tableau Server, zijn er verschillende manieren om een oplossing te vinden. In deze sectie vindt u algemene adviezen voor het oplossen van problemen met Tableau Server, zoals waar u logboeken kunt vinden en wat ze betekenen. De sectie behandelt ook een aantal specifieke bekende scenario's en beperkingspaden.

Als u samenwerkt met Tableau-ondersteuning om een probleem op te lossen, kan het handig zijn als u het volgende verstrekt:

  • Tableau Server-logboeken (hieronder wordt uitgelegd hoe u deze logboeken ophaalt).
  • Docker-container stdout logboeken.
  • Docker-bestand van Tableau Server (indien er aanpassingen zijn gemaakt).
  • Implementatieconfiguratie, waaronder:

    • Kubeconfig (of een gelijkwaardige implementatieconfiguratie).
    • Statische configuratiebestanden waarmee de Tableau Server-container wordt geconfigureerd.

Installatie- en initialisatiefouten

Als u Tableau Server voor de eerste keer initialiseert of als u een nieuwe installatie in een container hebt uitgevoerd, kan de server niet worden hersteld door de container eenvoudigweg opnieuw op te starten. Elke installatiepoging moet een opgeschoonde datadirectory gebruiken. Dit kan betekenen dat persistente volumedata uit eerdere containeruitvoeringen moeten worden verwijderd. Zorg er in dat geval voor dat u logboeken en informatie opslaat die nuttig kunnen zijn bij het opsporen van fouten.

Fouten opsporen bij mislukte installatie

Tableau Server-containers zijn zo ontworpen dat ze worden afgesloten wanneer er een installatiefout optreedt. Met dit patroon kunt u eenvoudig automatiseren en vaststellen wanneer een installatie is mislukt. Het kan echter lastig zijn om fouten op te sporen, omdat de container wordt afgesloten en geen enkele controleerbare looptijdstatus achterlaat. Als u een sessie voor foutopsporing wilt uitvoeren in een actieve container die tijdens de initialisatie mislukt, volgt u deze stappen:

  1. Bereid een nieuwe implementatie van Tableau Server in een container voor.
  2. Configureer de container voor uitvoering met de omgevingsvariabele TSM_ONLY=1. De omgevingsvariabele TSM_ONLY=1 vertelt Tableau Server om alleen TSM te initialiseren. Dit is het equivalent van het gewoon uitvoeren van het script initialize-tsm in een standaard, niet-containerinstallatie.
  3. Voer de Tableau Server-container uit.
  4. Open een shell in de container.
  5. U kunt nu TSM-opdrachten uitvoeren, zelfs als Tableau Server nog niet is geïnitialiseerd. Om de automatisering te hervatten die normaal tijdens de initialisatie plaatsvindt, voert u het script tsm-commands: "${DOCKER_CONFIG}"/config/tsm-commands uit.

Tableau-ondersteuning en Kubernetes

Tableau Server in een container kan worden uitgevoerd met Kubernetes, maar dit is geen vereiste. Wij verwachten dat de meeste klanten Kubernetes of een van de bijbehorende beheerde cloudomgevingen (EKS, AKS of GKS) zullen gebruiken om Tableau Server in een container uit te voeren en te beheren.

Kubernetes kan een complexe omgeving zijn om uit te voeren en fouten op te sporen. Vaak zijn er afhankelijkheden van de infrastructuur en configuratie van afzonderlijke bedrijven. Daarom kan Tableau-ondersteuning klanten niet helpen met het oplossen van problemen met Kubernetes (of implementatie van de infrastructuur) die verband houden met het uitvoeren van Tableau Server in een container. Tableau ondersteunt echter wel het uitvoeren van Tableau Server in een Docker-container. Als u problemen ondervindt bij het uitvoeren van Tableau Server in een container met behulp van Kubernetes, kan Tableau-ondersteuning alleen valideren of de Docker-container zelfstandig goed werkt.

Zie deze Github-site: https://github.com/tableau/tableau-server-in-kubernetes(Link wordt in een nieuw venster geopend) voor meer informatie over het uitvoeren van Tableau Server in een container met behulp van Kubernetes.

Logboeken

Logboeken zijn een essentiële bron voor het vinden, begrijpen en oplossen van problemen in Tableau Server. Ze zijn nuttig om onze ondersteuningsteams te helpen de oorzaak te vinden van de problemen die u ondervindt. Logboeken kunnen ook nuttig zijn voor uw eigen foutopsporing en probleemoplossing.

Alle logboeken extraheren

Als u alle logboeken wilt extraheren voor verdere foutopsporing of om ze naar onze ondersteuningsteams te sturen, zijn er een aantal methoden om deze informatie op te halen.

Ziplogs

TSM kan een gecomprimeerd archief maken waarin alle relevante serverlogboeken zijn opgenomen. U kunt dit activeren door de opdracht tsm maintenance ziplogs uit te voeren. Wanneer de opdracht is voltooid, wordt het bestandspad van het logboekarchief gerapporteerd. U moet het archief kopiëren met de bestandsoverdrachtmethode die het beste werkt voor uw situatie. Zie tsm maintenance ziplogs voor details over ziplogs.

Voorbeeldopdracht uitgevoerd in een container:

tsm maintenance ziplogs
Handmatige Tar-opdracht

Als u de opdracht ziplogs niet kunt uitvoeren, bijvoorbeeld omdat de server geen consistente status kan bereiken, kunt u de logboeken nog steeds ophalen door een tar-opdracht uit te voeren in de container. U moet het archief kopiëren met de bestandsoverdrachtmethode die het beste werkt voor uw situatie.

Voorbeeldopdracht uitgevoerd in een container (schrijft de tar naar een tijdelijke directory in de datadirectory van de container):

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'
Navigeren door logboeken en tips voor foutopsporing

Er zijn algemene stappen voor het diagnosticeren van de meeste problemen in Tableau Server. Als u overweegt om de logboeken van uw server te bekijken, kan het nuttig zijn om te bepalen welke informatie u moet zoeken, afhankelijk van waar in de levenscyclus van de server de fout is opgetreden.

De container starten (initieel/installeren)

Als de container direct vastloopt of niet kan worden geïnstalleerd of geïnitialiseerd, controleer dan de volgende bronnen:

Container stdout

Onderzoek stdout voor de docker-container. U kunt dit meestal doen door te kijken naar de containeruitvoer die is verzameld door uw containerorkestratiesysteem (bijvoorbeeld Kubernetes). Omdat Tableau Server een systeem met meerdere processen is dat in een container draait, is stdout vaak niet nuttig en wordt de hoofdoorzaak van het probleem niet gerapporteerd, tenzij er bij het opstarten ernstige fouten optreden. Het wordt aanbevolen dat u stdout van de defecte container controleert voordat er verder wordt gegraven in de Tableau Server-logboeken.

Voorbeeld:

docker logs <container-name>

Opstartlogboek van Tableau Server-container

Het opstartlogboek van de Tableau Server-container legt de uitvoer vast van automatisering die Tableau Server initialiseert, configureert en start. Als u merkt dat uw container problemen ondervindt bij het opstarten of de eerste keer uitvoeren, controleert u als eerste dit logboek:

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

Controleer onderaan het logboek of er een fout is gemeld. Soms wordt de fout gemeld en is deze direct duidelijk zichtbaar in het logboek. Als de fout niet duidelijk uit het logboek blijkt, is het mogelijk dat de hoofdoorzaak alleen zichtbaar is in een fase- of servicespecifiek logboekbestand. De onderstaande logboeken behandelen deze mogelijkheden.

Installatielogboek Tableau Server

Als het opstartlogboek aangeeft dat er een probleem is met de automatisering die de initialisatiefase van TSM afhandelt, controleer dan dit logboek:

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

Controllerlogboek Tableau Server

Als het opstartlogboek aangeeft dat er een probleem was met het initialiseren en starten van de serverfase (alleen CLI), controleer dan het servicelogboek van tabadmincontroller:

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

Dit logboekbestand is voor een specifieke service, genaamd tabadmincontroller. Tabadmincontroller is verantwoordelijk voor het orkestreren van de initialisatie- en opstartfunctionaliteit in Server. Dit logboek kan complex en uitgebreid zijn. Fouten in dit logboekbestand wijzen mogelijk nog steeds niet naar de hoofdoorzaak. Soms worden de fouten veroorzaakt door services waarvan tabadmincontroller afhankelijk is om een bepaalde taak uit te voeren. Controleer de looptijdsectie van de Server hieronder voor meer details.

Servicelogboeken - Serverlooptijd

Als Tableau Server problemen ondervindt tijdens de normale looptijd of als er problemen zijn met services die taken niet voltooien of niet beschikbaar zijn, kunt u de servicelogboeken raadplegen voor meer informatie. Elke service die onderdeel is van Tableau Server heeft een servicelogboekbestand. Als u weet welke service u wilt onderzoeken, kunt u de logboeken van die service vinden in deze algemene directory:

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

Geef de naam van de service op in de arg <service_name> van het bestandspad. Elke service kan meerdere soorten logboekbestanden schrijven. Als u bovendien meerdere services tegelijk uitvoert (meerdere instanties), worden alle servicelogboeken naar dezelfde servicedirectory geschreven.

Algemene servicespecifieke classificaties van logboekbestanden

In deze tabel worden de meest voorkomende namen, typen en beschrijvingen van servicelogboekbestanden voor Tableau Server-services beschreven. In de kolom 'Fouttypen' wordt aangegeven welke logboekbestanden waarschijnlijk nuttig zijn in een bepaald foutscenario.

NaamOpmaak bestandsnaamBeschrijvingFouttypenVoorbeeld
Control-appcontrol_<service_name>_<node_id>-<instance_id>.logBevat informatie over het control-app-proces dat verantwoordelijk is voor het installeren en configureren van een service. Dit is vaak het eerste logboek dat met betrekking tot een service wordt geschreven. Kijk eerst hier als er problemen zijn met de installatie en configuratie van de service.Installeren, configureren, statuscontrol_backgrounder_node1-0.log
Servicelogboek<service_name>_<node_id>-<instance_id>.logPrimair logboek voor een actieve service. Meestal bevat dit logboek uitvoer van de Spring/Java-toepassingslaag.Starten, looptijd, statusbackgrounder_node1-1.log
Stdout-logboekstdout_<service_name>_<instance_id>.logBevat stdout uitvoer voor de service. De meeste services leveren niet veel inhoud aan stdout en schrijven in plaats daarvan naar het primaire logboek. Soms kan dit logboek nuttige informatie bevatten wanneer een service wordt afgesloten.Starten, stoppenstdout_backgrounder_0.log
NativeAPI-logboeknativeapi_<service_name>_<instance_id>.txtSommige services maken gebruik van een systeemeigen codelaag. In dit logboek wordt dat deel van de looptijd van de toepassing vastgelegd.Licentie, starten, looptijd, statusnativeapi_backgrounder_1-1_2021_05_10_00_00_00.txt
Tomcat-logboektomcat_<service_name>_<node_id>-<instance_id>.logDit geldt alleen voor services die in een tomcat-container worden uitgevoerd en tomcat-logboeken bevatten. Er wordt zelden informatie verstrekt over een servicefout. Het kan nuttig zijn om netwerkproblemen op te lossen.Netwerk, startentomcat_backgrounder_node1-0.2021-05-10.log
Gestopte container

Als de container is gestopt of als het om een andere reden lastig is om opdrachten uit te voeren, kunt u de logboeken nog steeds bekijken als de datadirectory van de server is geëxternaliseerd naar een gekoppeld volume. Anders kan alleen de stdout van de container worden onderzocht in het orkestratiesysteem van de container, dat vaak niet de hoofdoorzaak bevat.

Fout bij instellen verificatie-eigenschappen

Er lijkt een probleem te zijn met het instellen van verificatie-eigenschappen in Tableau Server zonder dat het identiteitenarchief eerst is ingesteld. U kunt dit probleem omzeilen door het identiteitenarchief in de pre-initialisatiehaak te plaatsen.

  1. Maak een bestand met de naam ./customer-files/pre_init_command in de directory klantbestanden van de opbouwtool van de Tableau Server-afbeelding en bewerk deze zodat deze het volgende bevat:

    #!/bin/bash
    tsm configuration set -k wgserver.authenticate -v local --force-keys
  2. Maak het script uitvoerbaar.

    chmod +x ./customer-files/pre_init_command
  3. Bouw en voer de afbeelding uit.

Fout bij opnieuw opstarten (bijvoorbeeld waarom start Tableau Server niet?)

  • Als u problemen ondervindt bij het initialiseren of opstarten van Tableau Server, zijn er een aantal opties waarmee u het probleem kunt achterhalen en oplossen.
  • Als de container helemaal niet kan starten, moet u de stdout van het PID 1-proces controleren met de opdracht docker logs <container-name>.
  • Als de container actief is, maar Tableau Server niet lijkt te worden geïnitialiseerd of correct wordt uitgevoerd, kunt u als tweede controleren op fouten in dit bestand:
${DATA_DIR}/supervisord/run-tableau-server.log

Voorbeeld:

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

Dit logboekbestand bevat alle gebeurtenissen die worden georkestreerd door de initialisatieservice van de Tableau-container die het opstarten van Tableau Server afhandelt en eventuele installatiescripts of aangepaste configuratie uitvoert die u in de container hebt opgegeven. De meeste opstartfouten worden hier gemeld. Als de fout te maken heeft met een TSM- of Tableau Server-proces, wordt er soms een ander logboekbestand voorgesteld om meer gedetailleerde informatie te bekijken.

Fout bij opnieuw opstarten of starten van een container met bestaande data

Server start PostGRES (of andere processen) niet

Wanneer data buiten de container worden opgeslagen en u een andere instantie van Tableau Server in een container-afbeelding start met die oude data, is het belangrijk om te weten dat de interne hostnaam van de nieuwe container moet overeenkomen met de hostnaam van de container die de opgeslagen data heeft geïnitialiseerd. Tableau Server kan niet goed overweg met dynamische hostnaamwijzigingen. Het opstarten van een nieuwe container met een andere interne hostnaam veroorzaakt dit scenario.

De oplossing is om er eenvoudigweg voor te zorgen dat de hostnaam van de container is ingesteld op dezelfde waarde als de container die eerder met die data werd uitgevoerd. Dit moet niet worden verward met meerdere knooppunten. Workers kunnen (en moeten waarschijnlijk) verschillende hostnamen hebben. Het belangrijkste is dat wanneer een bepaalde container opnieuw wordt opgestart of wordt beëindigd, de daaropvolgende container dezelfde hostnaam moet hebben als zijn voorganger.

Voorbeelden van implementatieconfiguraties

Docker

Basisgebruik van Tableau Server in een 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>
Basisgebruik van Tableau Server in een container met geautomatiseerde initiële beheerdersgebruiker
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>
Alleen TSM-modus
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Basisgebruik van meerdere knooppunten
Eerste knooppunt

Optie 1: Gebruik dit als de serverconfiguratie (CONFIG_FILE) een topologie met meerdere knooppunten specificeert:

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>

Optie 2: Gebruik dit als u een implementatie met meerdere knooppunten wilt, zelfs als de serverconfiguratie geen topologie met meerdere knooppunten specificeert:

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>
Extra knooppunt
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>
Datagebruik externaliseren
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>
Basisgebruik van Eerste container

Eerste 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>

Container uitvoeren

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>
Basisherstel van back-up met één knooppunt
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-samenstelling

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>