現在位置: ホーム / サポート / MIRACLE ZBX 3.0 技術情報 / MIRACLE ZBX 3.0 サポート関連情報 / systemdを用いた環境で発生するサービス制御に関する問題

systemdを用いた環境で発生するサービス制御に関する問題

systemdを用いた環境で発生するサービス制御に関する問題

問題

当社が提供しているMIRACLE ZBXパッケージにおいて、Red Hat Enterprise Linux 7以降に使用されているsystemdを用いた環境で、下記のエラーが出力されることがあります。

# systemctl status zabbix-agent
...
zabbix-agent.service: Supervising process xxxx
which is not our child. We'll most likely not notice when it exits.

これはsystemdが起動したサービスのプロセス状況を正しく把握できていない状態となります。Zabbix agentに関しては特に影響はないと思われますが、Zabbix server,Zabbix proxyに関しては、systemdの動作上の問題に起因し、サービス終了時にデータを正しく書き出せなくなります。これは、この状態の場合systemdがサービス終了時に、サービスの親プロセスにSIGTERMを送った直後にSIGKILLを投げてしまうためです。なお、バージョン3.0以前のZabbix Server/Proxyでの発生は確認できていません。

対処方法

本問題への対策を行ったパッケージをリリースしました。パッケージのアップデートを行ってください。

MIRACLE ZBX V3.0.x

MIRACLE ZBX 3.0.25-1

https://www.miraclelinux.com/support/miracle-zbx30/zbx-update/20190313

 

なお、問題が発生している状態でZabbix server, proxyのサービスを停止させるには、下記のようにしなくてはなりません。

(1) systemd設定ファイルを変更する

設定ファイル(/usr/lib/systemd/system/zabbix-server.service)の Restart=always 部を Restart=no に書き換え、systemdに反映させる。

  • File:/usr/lib/systemd/system/zabbix-server.service 
[Service]
Restart=no
# systemctl daemon-reload

(2) サービスのメインプロセスにSIGTERMを送る

# kill -TERM `cat /var/run/zabbix/zabbix_server.pid`

システム規模により停止時間は異ります。下記のように、ログを出力して進行状況を確認してください。(終了するには、Ctl-cを実行します。)

# tail -f /var/log/zabbix/zabbix_server.log

 正常に終了すると最終行に以下の表示が出ます。(終了するには、Ctrl+Cを実行します。)

Zabbix Server stopped. Zabbix x.x.x-x (revision xxxxx).

 

上記の方法で正常終了しない場合は下記を行います。

(1) サービスのメインプロセスへSIGKILLを送る

# kill -KILL `cat /var/run/zabbix/zabbix_server.pid`

(2) Pollerプロセス等へSIGKILLを送る

  • 下記コマンドでPIDを確認してください。(複数出力されます。)
# ps aux|grep -v grep | grep "zabbix_server: poller" | awk '{print $2}'
# kill -KILL PID
 

(3) History Syncerプロセスが書き出しをしなくなったことを確認して、サービスを停止させる

# systemctl stop zabbix-server
MIRACLE ZBX サポートRSS

アップデート情報RSS

サポート関連情報RSS