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.so
をsession 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
を必ず実行してください。