13 その他の問題
Loginとsystemd
zabbix ユーザーは、ログインできないシステムユーザーとして作成することを推奨します。推奨に従わず、Zabbix が動作しているホストにログインするために同じアカウントを使用するユーザーもいます(例: SSH を使用)。この場合、ログアウト時に Zabbix デーモンがクラッシュすることがあります。その場合、Zabbix サーバーのログには次のような内容が出力されます:
zabbix_server [27730]: [file:'selfmon.c',line:375] lock failed: [22] Invalid argument
zabbix_server [27716]: [file:'dbconfig.c',line:5266] lock failed: [22] Invalid argument
zabbix_server [27706]: [file:'log.c',line:238] lock failed: [22] Invalid argument
また、Zabbix エージェントのログには次のように出力されます:
zabbix_agentd [27796]: [file:'log.c',line:238] lock failed: [22] Invalid argument
これは、/etc/systemd/logind.conf で設定されている systemd のデフォルト設定 RemoveIPC=yes が原因です。システムからログアウトすると、以前に Zabbix によって作成されたセマフォが削除され、それがクラッシュの原因になります。
systemd のドキュメントからの引用:
RemoveIPC=
Controls whether System V and POSIX IPC objects belonging to the user shall be removed when the
user fully logs out. Takes a boolean argument. If enabled, the user may not consume IPC resources
after the last of the user's sessions terminated. This covers System V semaphores, shared memory
and message queues, as well as POSIX shared memory and message queues. Note that IPC objects of the
root user and other system users are excluded from the effect of this setting. Defaults to "yes".
この問題には 2 つの解決策があります:
- (推奨)zabbix アカウントを Zabbix プロセス以外に使用しないようにし、他の用途には専用のアカウントを作成する。
- (非推奨)
/etc/systemd/logind.confでRemoveIPC=noを設定し、システムを再起動する。RemoveIPCはシステム全体に影響するパラメータであるため、変更するとシステム全体に影響します。
プロキシの背後でZabbixフロントエンドを使用する
Zabbixフロントエンドがプロキシサーバーの背後で実行されている場合、リバースプロキシパスと一致させるために、プロキシ設定ファイルのCookieパスを書き換える必要があります。 以下の例を参照してください。 Cookieパスが書き換えられていない場合、ユーザーがZabbixフロントエンドにログインしようとしたときに認証の問題が発生する可能性があります。
nginxの設定ファイル例
# ..
location / {
# ..
proxy_cookie_path /zabbix /;
proxy_pass http://192.168.0.94/zabbix/;
# ..
Apacheの設定ファイル例
# ..
ProxyPass "/" http://host/zabbix/
ProxyPassReverse "/" http://host/zabbix/
ProxyPassReverseCookiePath /zabbix /
ProxyPassReverseCookieDomain host zabbix.example.com
# ..