0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ZABBIX7.0LTS】Linux系Zabbix Agent が起動しない。

Last updated at Posted at 2024-11-25

はじめに

【ZABBIX7.0LTS】Linux系Zabbix Agent オフラインインストール でZABBIX-Agentをインストールしたが、OS再起動後、起動しない事象が発生した。原因を調べて解決できたため、ここに備忘録として残したいと思う。

結論

早く対応方法が知りたい方は、根本対応 に飛んでください。

エラー内容

「systemctl start zabbix-agent」を実行すると、下記のエラーが出力された。
どうやら「/run/zabbix/zabbix_agentd.pid」がないから起動に失敗しているようだ。

エラー確認
## 起動失敗
[root@localhost /]# systemctl start zabbix-agent
Job for zabbix-agent.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status zabbix-agent.service" and "journalctl -xe" for details.
[root@localhost /]#

## ジャーナルログ確認
[root@localhost /]# journalctl -xe 

~省略~

-- Unit zabbix-agent.service has begun starting up.
## 「/run/zabbix/zabbix_agentd.pid」が探せないって言っている。
11月 25 19:37:14 localhost.localdomain systemd[1]: zabbix-agent.service: Can't open PID file /run/zabbix/zabbix_agentd.pid (yet?) after start: No such file or directory
11月 25 19:37:14 localhost.localdomain systemd[1]: zabbix-agent.service: Failed with result 'protocol'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://support.oracle.com
--
-- The unit zabbix-agent.service has entered the 'failed' state with result 'protocol'.
11月 25 19:37:14 localhost.localdomain systemd[1]: Failed to start Zabbix Agent.
-- Subject: Unit zabbix-agent.service has failed
-- Defined-By: systemd
-- Support: https://support.oracle.com
--
-- Unit zabbix-agent.service has failed.
--
-- The result is failed.

【 journalctl コマンド 】
inux のシステムログ管理ツールである systemd-journald が記録しているログを表示するためのコマンド。エラーや問題のトラブルシューティング時に役立つ。

オプション -x:エラーの詳細を表示
オプション -e:ログの末尾(最新部分)を表示
オプション -u:特定の systemd ユニットのログを絞り込む

問題個所の確認

実際に「/run/zabbix/zabbix_agentd.pid」が存在するか確認してみる。
やはり、案の定ない…。

問題個所確認
[root@localhost /]# ls -la /run/zabbix
ls: '/run/zabbix' にアクセスできません: そのようなファイルやディレクトリはありません
[root@localhost /]#

対応

んじゃ、無いのでディレクトリ作成「/run/zabbix」してしてみる。
作成するとすぐにPIDファイル「zabbix_agentd.pid」が生成された。あれ?
ZABBIX-Agentのサービス状態を確認してみると、失敗していたのが起動している!?

ディレクトリ作成
## ディレクトリ作成
[root@localhost /]# mkdir -p /run/zabbix

## この階層を使用するのはZABBIXユーザーのため、所有者変更もすること。(※所有者がrootだとZabbixユーザーが使用できない。)
## 所有者をZABBIXユーザーにする理由は、サービスファイル(systemdの「ユニットファイル (unit file)」)で、サービス実行ユーザーを「ZABBIX」ユーザーに指定しているから。
[root@localhost /]# chown zabbix:zabbix /run/zabbix
[root@localhost /]#
[root@localhost /]# ls -la /run/zabbix
合計 4
drwxr-xr-x  2 zabbix zabbix  60 11月 25 20:00 .
drwxr-xr-x 26 root   root   740 11月 25 20:00 ..
-rw-rw-r--  1 zabbix zabbix   4 11月 25 20:00 zabbix_agentd.pid ←★ すぐに生成された。
[root@localhost /]#

## ZABBIX-Agentのステータス状態(Active)
[root@localhost /]# systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/etc/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-11-25 20:00:41 JST; 50s ago
  Process: 1791 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3559 ExecStart=/usr/local/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 3561 (zabbix_agentd)
    Tasks: 13 (limit: 5834)
   Memory: 112.9M
   
~省略~

11月 25 20:00:40 localhost.localdomain systemd[1]: Starting Zabbix Agent...
11月 25 20:00:41 localhost.localdomain systemd[1]: Started Zabbix Agent.
[root@localhost /]#

勝手に起動した理由を調べてみると、サービスファイル(systemdの「ユニットファイル (unit file)」)で、サービス起動失敗時に再起動する設定がされていたからだった。

/etc/systemd/system/zabbix-agent.service
# 失敗時にサービスを再起動
Restart=on-failure

# 再起動するまでの待機時間を10秒に設定
RestartSec=10s
journalctl -xe
## 10秒おきに起動が実行されている。
~省略~
-- Unit zabbix-agent.service has begun starting up.
11月 25 19:59:41 localhost.localdomain systemd[1]: zabbix-agent.service: Can't open PID file /run/zabbix/zabbix_agentd.pid (yet?) after start: No such file or directory
~省略~
-- Unit zabbix-agent.service has begun starting up.
11月 25 19:59:53 localhost.localdomain systemd[1]: zabbix-agent.service: Can't open PID file /run/zabbix/zabbix_agentd.pid (yet?) after start: No such file or directory
~省略~

念のため最後にOS再起動し、問題なくZABBIX-Agentが起動するか確認する。
再起動後、また「/run/zabbix」が消えており、起動していなかった…。

失敗
## ステータス確認
[root@localhost ~]# systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/etc/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: protocol) since Mon 2024-11-25 20:47:05 JST; 755ms ago
  Process: 1318 ExecStart=/usr/local/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)

## ジャーナルログ確認
[root@localhost ~]# journalctl -ex
-- Unit zabbix-agent.service has begun starting up.
11月 25 20:47:05 localhost.localdomain systemd[1]: zabbix-agent.service: Can't open PID file /run/zabbix/zabbix_agentd.pid (yet?) after start: No such file or directory
11月 25 20:47:05 localhost.localdomain systemd[1]: zabbix-agent.service: Failed with result 

## ディレクトリ確認
[root@localhost ~]# cd /run/zabbix
-bash: cd: /run/zabbix: そのようなファイルやディレクトリはありません
[root@localhost ~]#

根本原因

「/run」ディレクトリは、一時的なランタイムデータを保存するためのディレクトリであり、メモリ領域(tmpfs:一時ファイルシステム)に作成されるメモリベースの仮想ファイルシステムである。よってOS再起動されると削除されるわけだ。

ファイルシステム確認
[root@localhost ~]# df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
devtmpfs              456M     0  456M    0% /dev
tmpfs                 477M     0  477M    0% /dev/shm
tmpfs                 477M  6.7M  471M    2% /run   ←★ ここ注目!!!
tmpfs                 477M     0  477M    0% /sys/fs/cgroup
/dev/mapper/ol-root    17G  3.3G   14G   20% /
/dev/nvme0n1p1       1014M  291M  724M   29% /boot
tmpfs                  96M     0   96M    0% /run/user/0
[root@localhost ~]#

根本対応

再起動後も「/run」ディレクトリに作成したものが消えないようにするには、「systemd-tmpfiles」コマンドで設定する必要がある。設定方法は以下の通り。

設定方法
## 設定ファイル作成
[root@localhost ~]# vi /etc/tmpfiles.d/zabbix-agent.conf
## 設定内容
[root@localhost ~]# cat /etc/tmpfiles.d/zabbix-agent.conf
d /run/zabbix 0755 zabbix zabbix
## 設定適用
[root@localhost ~]# systemd-tmpfiles --create /etc/tmpfiles.d/zabbix-agent.conf
## 適用確認
[root@localhost tmpfiles.d]# systemd-tmpfiles --cat-config
~省略~
# /etc/tmpfiles.d/zabbix-agent.conf
d /run/zabbix 0755 zabbix zabbix

【 systemd-tmpfile 】
Linux システムにおける 一時ファイルやディレクトリを動的に管理するためのツールである。主に /run や /tmp のような一時ディレクトリに存在するデータを管理する役割を持っている。

【 systemd-tmpfiles の動作の設定ファイル 】
以下の設定ファイルでsystemd-tmpfilesの動作を制御する。
/usr/lib/tmpfiles.d/:システムやパッケージのデフォルト設定(設定優先度:低)
/etc/tmpfiles.d/:管理者が設定を追加・上書きするための場所(設定優先度:中)
/run/tmpfiles.d/:一時的な設定(再起動でクリア)(設定優先度:高)

設定を適用するとすぐに「/run」ディレクトリ配下にディレクトリが作成される。

/run配下確認
[root@localhost ~]# ls -la /run/zabbix/
合計 4
drwxr-xr-x  2 zabbix zabbix  60 11月 25 21:11 .
drwxr-xr-x 26 root   root   740 11月 25 21:11 ..
-rw-rw-r--  1 zabbix zabbix   4 11月 25 21:11 zabbix_agentd.pid
[root@localhost ~]#

最後にOS再起動して、問題なく「/run/zabbix」ディレクトリが作成されているのとZABBIX-Agentが起動しているのを確認する。

最終確認
##「/run/zabbix」が問題なく生成されている。
[root@localhost ~]# ls -la /run/zabbix/
合計 4
drwxr-xr-x  2 zabbix zabbix  60 11月 25 21:32 .
drwxr-xr-x 26 root   root   740 11月 25 21:32 ..
-rw-rw-r--  1 zabbix zabbix   3 11月 25 21:32 zabbix_agentd.pid

## ZABBIX-Agentの起動も問題ない。
[root@localhost ~]# systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/etc/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-11-25 21:32:02 JST; 57s ago
  Process: 855 ExecStart=/usr/local/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 864 (zabbix_agentd)
    Tasks: 13 (limit: 5834)
   Memory: 6.7M
~省略~
11月 25 21:32:02 localhost.localdomain systemd[1]: Starting Zabbix Agent...
11月 25 21:32:02 localhost.localdomain systemd[1]: Started Zabbix Agent.
[root@localhost ~]#

以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?