Tableau Server i en behållare – felsökning

Introduktion

Tableau Server i en container är Tableaus första containerbaserade server. Tableau Server i en container är en heltäckande Tableau Server-instans som körs inuti en Linux Docker-container. Med andra ord är en Tableau Server i en container-avbildning en Docker-avbildning som kör ett helt fristående Tableau Server-program. Tableau Server i en container är det första av våra många steg mot att stödja Tableau Server som körs i container-baserade miljöer. Det enklaste sättet att förstå begreppet Tableau Server i en container är att se det som en virtuell dator med Tableau Server förinstallerat. Avbildningen bygger på en UBI 8-avbildning (CentOS 7.x för version 2022.1 och tidigare) och kör supervisord (istället för systemd) inuti behållaren. När behållaren startar supervisord försöker den omedelbart initiera och starta Tableau Server. Syftet med en stor del av dokumentationen här är att beskriva hur du kan skapa konfigurationer och använda automatisering för att köra Tableau Server i Docker-miljöer.

Med verktyget för avbildningskonfiguration för Tableau Server i en container kan du skapa och anpassa container-avbildningar så att de inkluderar anpassade paket och artefakter. En av verktygets primära funktioner är att bygga behållaravbildningen och installera anpassade datakopplingar.

Om du snabbt vill testa Tableau Server i en behållare-avbildningen i ett koncepttest läser du Tableau Server i en container - Snabbstart.

Begränsningar

  • Tableau Server i en container stöder endast licensaktivering med Server ATR, vilket kräver att behållaren har internetåtkomst. Därför går det inte att aktivera den offline i en frånkopplad miljö.
  • Tableau Server i en container stöder för närvarande inte RMT-agenten (Resource Monitoring Tool).
  • Kerberos stöds inte i Tableau Server i en behållare.

Felsökning

Om du råkar ut för problem med Tableau Server finns det flera olika sätt att leta efter en lösning. Det här avsnittet innehåller allmänna felsökningstips om Tableau Server, som var loggarna finns och hur de ska tolkas. Här finns också information om vissa specifika scenarier och lösningar.

Om du samarbetar med Tableaus support för att felsöka ett problem är det bra om du kan tillhandahålla följande:

  • loggar för Tableau Server (hur du samlar dem beskrivs nedan)
  • loggar för Docker-behållaren stdout
  • Docker-fil för Tableau Server (om anpassningar har gjorts)
  • driftsättningskonfiguration, inklusive:

    • Kubeconfig (eller motsvarande driftsättningskonfiguration)
    • statiska konfigurationsfiler som konfigurerar Tableau Server-behållaren

Installations- och initieringsfel

Om du initierar Tableau Server för allra första gången, eller om du har gjort en ny installation inuti en behållare, går det inte att återställa servern bara genom att starta om behållaren. Varje enskild installation bör använda en ren datakatalog. Det kan innebära att du måste ta bort beständiga volymdata från tidigare behållarkörningar. Om du gör det ser du till att du sparar loggfiler och information som kan behövas vid eventuell felsökning.

Felsöka misslyckade installationer

Tableau Server-behållare är konstruerade för att avslutas när ett installationsfel inträffar. Tack vare det här beteendet är det enklare att automatisera identifieringen av installationsfel. Men det kan också göra felsökningen svårare eftersom behållaren avslutas och inte lämnar någon körningsstatus att undersöka efter sig. Om du vill ha en felsökningssession inuti en behållare som körs och som råkar ut för fel under initieringen följer du de här stegen:

  1. Förbered en ny driftsättning av Tableau Server i en behållare.
  2. Konfigurera behållaren att köras med miljövariabeln TSM_ONLY=1. Miljövariabeln TSM_ONLY=1 talar om för Tableau Server att bara initiera TSM. Det här motsvarar att bara köra skriptet initialize-tsm i en standardinstallation utan behållare.
  3. Kör Tableau Server-behållaren.
  4. Öppna ett skal inuti behållaren.
  5. Nu kan du köra TSM-kommandon, trots att Tableau Server inte har initierats. Om du vill återuppta den automatisering som vanligtvis äger rum vid initiering kör du skriptet tsm-commands: "${DOCKER_CONFIG}"/config/tsm-commands

Tableau-support och Kubernetes

Tableau Server i en behållare kan köras med Kubernetes, men det är inget krav. Vi antar att de flesta av våra kunder använder Kubernetes eller någon av dess associerade hanterade molnmiljöer (EKS, AKS eller GKS) för att köra och administrera Tableau Server i en behållare.

Kubernetes kan vara en komplex miljö att köra och felsöka, och den är ofta beroende av enskilda företags infrastruktur och konfiguration. Av den anledningen kan Tableaus support inte hjälpa kunder att lösa problem med Kubernetes (eller driftsättning av infrastrukturer) som är kopplade till att köra Tableau Server i en behållare. Tableau har däremot stöd för att köra Tableau Server i en Docker-behållare. Därför, om du har problem att köra Tableau Server i en behållare med Kubernetes kan Tableaus support som mest hjälpa dig med att bekräfta att Docker-behållaren fungerar som den ska för sig själv.

Mer information om hur du kör Tableau Server i en behållare med Kubernetes finns på Github: https://github.com/tableau/tableau-server-in-kubernetes(Länken öppnas i ett nytt fönster).

Loggar

Loggar är viktiga resurser för att hitta, förstå och lösa problem med Tableau Server. De underlättar för våra supportteam att hitta orsaken till problem. Loggarna är också användbara när du själv vill felsöka.

Extrahera alla loggar

Om du behöver extrahera alla loggar för ytterligare felsökning eller för att skicka dem till våra supportteam kan du hämta informationen på ett par olika sätt.

Ziploggar

TSM kan skapa ett komprimerat arkiv med alla relevanta serverloggar. Om du vill göra det kör du kommandot tsm maintenance ziplogs. När kommandot har körts får du veta var loggarkivet placerats. Du måste kopiera arkivet på det sätt som passar bäst i just ditt fall. Mer information om ziploggar finns i tsm maintenance ziplogs.

Exempelkommando som körs inuti behållare:

tsm maintenance ziplogs
Manuellt tar-kommando

Om du inte kan köra kommandot ziplogs, till exempel om servern inte når ett konsekvent tillstånd, kan du ändå hämta loggarna genom att köra ett tar-kommando inuti behållaren. Du måste kopiera arkivet på det sätt som passar bäst i just ditt fall.

Exempelkommando som körs inuti behållare (skriver tar-filen till en tillfällig katalog i behållarens datakatalog):

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'
Hitta rätt i loggar och felsökningstips

Det finns ett antal vanliga sätt att diagnosticera de flesta problem i Tableau Server. Om du funderar på att läsa serverloggarna kan det vara bra att spalta upp den information du letar efter beroende på var i serverns livscykel felet inträffade.

Vid start av behållaren (initiering/installation)

Om behållaren kraschar direkt eller inte installeras eller initieras kontrollerar du följande resurser:

stdout för behållaren

Undersök stdout för Docker-behållaren. Detta gör du enklast genom att titta i de behållarutdata som samlas in av ert behållarsamordningssystem (till exempel Kubernetes). Eftersom Tableau Server är ett system med flera processer som körs inuti en behållare är stdout ofta inte till någon nytta och ger ingen information om orsaken till problemet, såvida det inte inträffar katastrofala fel vid starten. Du bör kontrollera stdout för den behållare som inte fungerar innan du gräver djupare i loggarna för Tableau Server.

Exempel:

docker logs <container-name>

Startlogg för Tableau Server-behållare

Startloggen för Tableau Server-behållaren hämtar utdata från automatisk initiering, konfiguration och start av Tableau Server. Om du märker att behållaren råkar ut för problem vid start eller när den körs för första gången ska du kontrollera den här loggen först:

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

Gå till slutet av loggen och se om något fel rapporterats. Ibland rapporteras felet och du ser det direkt i loggen. Om loggen inte ger någon tydlig vägledning till vad felet är kan du kanske bara hitta orsaken i en fas- eller tjänstspecifik loggfil. Loggarna nedan omfattar de scenarierna.

Installationslogg för Tableau Server

Om startloggen anger att det fanns problem med den automatisering som sköter TSM-initieringen kontrollerar du den här loggfilen:

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

Styrenhetslogg för Tableau Server

Om startloggen anger att det fanns problem med att initiera och starta servern (endast CLI) kontrollerar du den här tabadmincontroller-loggen:

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

Den här loggfilen avser en specifik tjänst som heter tabadmincontroller. Tabadmincontroller samordnar initierings- och startfunktioner på servern. Den här loggfilen kan vara komplex och omfattande. Trots det är det inte säkert att fel i den här loggfilen säger något om orsaken till problemet. Ibland orsakas felen av tjänster som tabadmincontroller är beroende av för att slutföra en viss uppgift. Läs mer i avsnittet om serverkörning nedan.

Tjänstloggar – serverkörning

Om Tableau Server råkar ut för fel vid normal körning eller problem med tjänster som inte slutför uppgifter eller inte fungerar kan du kontrollera tjänstloggarna för att få mer information. Alla tjänster som körs som en del av Tableau Server har tjänstloggar. Om du vet vilken tjänst du vill undersöka letar du upp loggfilerna för den i den här allmänna katalogen:

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

Ange namnet på tjänsten i argumentet <service_name> i sökvägen. Alla tjänster kan skapa flera olika sorters loggfiler. Om du har mer än en instans av en tjänst igång skrivs alla tjänstloggar till samma tjänstkatalog.

Allmänna tjänstspecifika loggfiler

Den här tabellen innehåller namn på samt typ och beskrivning av de vanligaste tjänstloggarna för Tableau Server. I kolumnen Feltyper ser du vilka loggfiler som du kan ha nytta av i ett visst scenario.

NamnFilnamnsformatBeskrivningFeltyperExempel
Control-Appcontrol_<service_name>_<node_id>-<instance_id>.logInnehåller information om processen control-app, som hanterar installation och konfiguration av en tjänst. Detta är ofta den första logg som skrivs för en tjänst. Vid installations- och konfigurationsfel för en tjänst tittar du här först.Installation, konfiguration, statuscontrol_backgrounder_node1-0.log
Tjänstlogg<service_name>_<node_id>-<instance_id>.logDen primära loggfilen för en tjänst som körs. Oftast innehåller den här loggfilen utdata från spring/java-programskiktet.Start, körning, statusbackgrounder_node1-1.log
Stdout-loggstdout_<service_name>_<instance_id>.logInnehåller stdout-utdata för tjänsten. De flesta tjänster skriver inte särskilt mycket utdata till stdout utan skriver i stället till den primära loggfilen. Ibland innehåller den här loggfilen ändå nyttig information när en tjänst avslutas.Start, stoppstdout_backgrounder_0.log
NativeAPI-loggnativeapi_<service_name>_<instance_id>.txtVissa tjänster kör ett inbyggt kodskikt. Den här loggfilen samlar den delen av programmets körningsstatus.Licensiering, start, körning, statusnativeapi_backgrounder_1-1_2021_05_10_00_00_00.txt
Tomcat-loggtomcat_<service_name>_<node_id>-<instance_id>.logDenna gäller bara tjänster som körs inuti en tomcat-behållare och innehåller tomcat-loggar. Den innehåller sällan information om tjänstfel. Den kan dock vara till nytta vid felsökning av vissa nätverksproblem.Nätverk, starttomcat_backgrounder_node1-0.2021-05-10.log
Stoppad behållare

Om behållaren stoppas eller på något annat sätt har svårt att utföra kommandon kan du ändå titta på loggarna om serverns datakatalog finns externt på en monterad volym. I annat fall kan du bara kontrollera stdout för behållaren i behållarsamordningssystemet, och den innehåller oftast inte orsaken till problemet.

Fel vid inställning av autentiseringsegenskaper

Det verkar finnas ett problem med att ange autentiseringsegenskaper i Tableau Server när identitetsregistret inte anges först. Du kan komma runt detta genom att ange identitetsregistret i förinitieringshooken.

  1. Skapa en fil med namnet ./customer-files/pre_init_command i katalogen customer-files för Tableau Servers avbildningsverktyg och redigera den så att den innehåller följande:

    #!/bin/bash
    tsm configuration set -k wgserver.authenticate -v local --force-keys
  2. Ställ in skriptet så att det är körbart.

    chmod +x ./customer-files/pre_init_command
  3. Bygg och kör avbildningen.

Fel vid nystart (till exempel varför startar inte Tableau Server?)

  • Om du har problem med att initiera eller starta Tableau Server finns det ett antal felsökningssteg du kan prova för att hitta problemet.
  • Om behållaren inte kan startas alls kontrollerar du stdout från PID 1-processen med kommandot docker logs <container-name>.
  • Om behållaren är igång men Tableau Server inte verkar initieras eller köras korrekt är nästa ställe att leta efter felinformation i den här filen:
${DATA_DIR}/supervisord/run-tableau-server.log

Exempel:

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

Den här loggfilen innehåller alla händelser som samordnas av initieringstjänsten för den Tableau-behållare som hanterar start av Tableau Server liksom körning av ett startskript eller en anpassad konfiguration som du försett behållaren med. De flesta startfel rapporteras här. Om felet rör en TSM- eller Tableau Server-process kan det ibland hända att du uppmanas att kontrollera en annan loggfil för att få mer detaljerad information.

Fel vid omstart eller start av en behållare med befintliga data

Servern startar inte PostGRES (eller någon annan process)

När data bevaras utanför behållaren, och du startar en annan instans av en Tableau Server i en behållare-avbildning med sådana gamla data, är det viktigt att du tänker på att det interna värdnamnet för den nya behållaren måste matcha värdnamnet för den behållare som initierade de gamla bevarade data. Tableau Server är inte bra på att hantera dynamiska värdnamnsändringar och om du startar en ny behållare med ett annat internt värdnamn är det i princip det scenario du får.

Lösningen är helt enkelt att se till att behållarens värdnamn har samma värde som den behållare som kördes tidigare med samma data. Det här ska inte förväxlas med flera noder; arbetare kan (och ska förmodligen) ha olika värdnamn. Det viktiga är att när en viss behållare startas om eller stoppas måste den efterföljande behållaren ha samma värdnamn.

Exempel på konfiguration för driftsättning

Docker

Grundläggande användning av Tableau Server i en 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>
Grundläggande användning av Tableau Server i en container med automatisk första administratörsanvändare
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>
Endast TSM-läge
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Grundläggande användning med flera noder
Ursprunglig nod

Alternativ 1: Använd detta om serverkonfigurationen (CONFIG_FILE) föreskriver en topologi med flera noder:

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>

Alternativ 2: Använd detta om du vill ha en konfiguration med flera noder även om serverkonfigurationen inte föreskriver en topologi med flera noder:

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>
Ytterligare nod
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>
Externalisera dataanvändningen
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>
Grundläggande användning av Init-container

Init-behållare

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>

Körningsbehållare

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>
Grundläggande återställning från enkel säkerhetskopieringsnod
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>