systemd ユーザー サービスのエラー

新規インストール中に initialize-tsm をアップグレードしたり実行したりすると、次のいずれかのエラーが表示されることがあります。

  • 「Failed to get D-Bus connection: No such file or directory (D-Bus 接続に失敗しました: そのようなファイルやディレクトリはありません)」
  • 「$XDG_RUNTIME_DIR not found ($XDG_RUNTIME_DIR が見つかりません)」
  • 「systemd unit user@<userID> is not running. (Systemd ユニットuser@<userID> が実行されていません。)」「Check /var/log/messages or /var/log/syslog. (/var/log/messages or /var/log/syslog を確認してください。)」

背景

2018.1 時点で、Tableau Server は systemd ユーザー サービスを使用してプロセスを管理しています。これは、特権のないユーザーとして実行される systemd プロセスがあることを意味します。既定では、Tableau Server のセットアップで tableau という名前の特権のないアカウントが作成されます。Tableau Server プロセスは systemd プロセスからスポーンされたもので、ルートとして実行されるシステム全体の systemd プロセスではありません。

重要: このトラブルシューティングに関する注記は、主に RHEL 7 ベースのディストリビューションに適用されます。ただし、これらのエラーのいずれかが表示される場合、Ubuntu ディストリビューションにも同じ問題が存在する可能性があります。

systemd ユーザー サービスは、通常の systemd プロセス マネージャーほど一般的には使用されていません。Red Hat では、RHEL 7 (CentOS、Oracle Linux 7、Amazon Linux 2 など、RHEL から取得されるすべてのディストリビューション) の systemd ユーザー サービスが無効になっています。ただし、RedHat では、systemd ユーザー サービスが再度有効になっている限り、このユーザー サービスを実行している Tableau に対応することを保証しています。

Tableau Server on Linux 10.5 からのアップグレード

Tableau Server 10.5 からアップグレードする場合は、特権のないユーザーに有効なシェルとホーム ディレクトリがあることを確認します。Tableau Server 10.5 では、シェルが /sbin/nologin に設定され、ホーム ディレクトリが「/」の特権のないユーザーが意図的に作成されました。特権のないユーザーが initialize-tsm によって作成された場合は、2018.1 へのアップグレード時に Tableau でシェルとホーム ディレクトリが更新されます。

ただし、10.5 の初期インストール時に特権のないユーザーを作成した場合は、アップグレードしようとするとエラーが発生します。

これを修正するには、シェルを /sbin/nologin に、ホーム ディレクトリを「/」に設定してから、再度アップグレードを実行する必要があります。

新規インストール時に発生したエラーのトラブルシューティング

systemd ユーザー サービスが実行中であることを確認します。

ps -fww $(pgrep -f "systemd --user") コマンドを実行して確認します。

systemd ユーザー サービスが実行されていない場合は、何らかが起動を妨害しています。

トラブルシューティングを行うには、次のリストに従います。

  • /var/log/messages でログを確認します。

  • journalctl を実行します。

  • PAM 構成が含まれるように実行したカスタマイズで pam_systemd.so が削除されていないことを確認します。

    RHEL 7 PAM ファイルの場合は、/etc/pam.d/system-auth で次の行が欠落しています。

    -session optional pam_systemd.so

    Tableau Server が機能するには、この行を追加し直す必要があります。

  • -session optional pam_systemd.so が PAM 構成に存在しているがユーザー サービスを開始できず、エラー メッセージ $XDG_RUNTIME_DIR not found/var/log/messages に表示される場合は、環境変数の設定を試行しないでください。このシナリオのエラーは正確ではありません。

    実際のエラーは、PAM モジュール pam_systemd.so がユーザー セッションを割り当てることができないというものです。既定の構成では、pam_systemd.so からのエラー メッセージが表示されないようになっています。エラー メッセージとデバッグ メッセージを表示するには、/etc/pam.d/system-auth の行で-session optional pam_systemd.sosession optional pam_systemd.so debug に変更します(先頭のハイフンを削除するとエラー メッセージが表示され、debug を追加すると詳細なログ記録が表示されます)。

    これで、/var/log/messages/var/log/secure/var/log/audit/audit.log ファイルを確認するとエラー メッセージが表示されるようになります。

次のエラー メッセージが表示される場合があります。

systemd-logind: Failed to mount per-user tmpfs directory /run/user/0: Permission denied

この場合、オンラインでエラーを検索すると Redhat の KB 記事 (https://access.redhat.com/solutions/2460611(新しいウィンドウでリンクが開く)) が見つかります。

この記事では、sudo yum update selinux-policy を実行して selinux-policy パッケージを更新するよう推奨されています。

場合によっては、バージョン 3.12.X から 3.13.X にアップグレードすると $XDG_RUNTIME_DIR not found に関する問題が解決することがあります。パッケージの更新後は、sudo reboot を必ず実行してください。