ubuntu 9.04 に Zabbix を入れて色々と試しているのだが、PC を再起動するとなぜか Zabbix が立ち上がらない。
Zabbix の本体は zabbix-server というデーモンだが、そのログを見ると「Cannot create PID file [/var/run/zabbix-server/zabbix_server.pid] [No such file or directory]」と最後に記録されている。
どうやら PID ファイルが作成できないのが原因で、zabbix-server が強制終了しているようだ。
そういえば、別件で Zabbix のことを調べていたときに、どこかでこんな現象を見た記憶がある。
確か ubuntu か debian のパッケージ関連の情報が書いてある Web ページだったような気がする。
そこにはデーモンの起動スクリプトを修正するとか書いてあったはず。
ということで「zabbix init.d pid script ubuntu」をキーワードにググってみると…、発見!!
ubuntu の BTS (Bug Tracking System) に報告されている Bug #172775 in zabbix (Ubuntu): “/var/run/zabbix-server deleted after reboot” がそれのようだ。
PC を再起動すると、何故か zabbix-server の pid ファイルが作成されるディレクトリがなくなってしまうらしい。
逆に言えば、この不具合を解消するには、zabbix-server を起動する前にこのディレクトリを作っておけばいいということになる
実際、上に挙げたページでは起動スクリプトの最初の部分に、pid ファイルのディレクトリが無ければそれを作成するような修正を施している。
これと全く同じ修正をしても良いのだが、起動スクリプトは zabbix-server を止めるときにも使うので、もっと厳密に、zabbix-server の起動時にだけ pid のディレクトリを作成するように、少し変えてみた。
オリジナルの起動スクリプト (/etc/init.d/zabbix-server) との差分だけを以下に載せておく。
####### diff -u zabbix-server.orig zabbix-server #######
--- zabbix-server.orig 2009-01-03 00:50:44.000000000 +0900
+++ zabbix-server 2009-06-07 09:46:23.000000000 +0900
@@ -11,6 +11,7 @@
NAME=zabbix_server
DESC="Zabbix server"
PID=/var/run/zabbix-server/$NAME.pid
+DIR=`/usr/bin/dirname "$PID"`
test -f $DAEMON || exit 0
@@ -21,6 +22,10 @@
case "$1" in
start)
rm -f $PID
+ if [ ! -d "$DIR" ]; then
+ /bin/mkdir -p "$DIR"
+ /bin/chown -R zabbix:zabbix "$DIR"
+ fi
echo "Starting $DESC: $NAME"
start-stop-daemon --oknodo --start --pidfile $PID
--exec $DAEMON >/dev/null 2>&1
ところでもう一つ、Zabbix のエージェントモジュールである zabbix-agent も PC の再起動で立ち上がってこない。
どうやらこれも zabbix-server と全く同じ原因のようだ。
これについても既に ubuntu の BTS に報告されている。
Bug #96644 in zabbix (Ubuntu): “zabbix_agentd will not start after reboot” がそうだ。
こちらについても zabbix-server への修正と同様に、zabbix-agent の起動時にだけpid のディレクトリを作成するようにした。
zabbix-agent の起動スクリプト (/etc/init.d/zabbix-agent) との差分は以下の通り。
####### diff -u zabbix-agent.orig zabbix-agent #######
--- zabbix-agent.orig 2009-01-03 00:50:44.000000000 +0900
+++ zabbix-agent 2009-06-07 09:59:22.000000000 +0900
@@ -11,6 +11,7 @@
NAME=zabbix_agentd
DESC="Zabbix agent"
PID=/var/run/zabbix-agent/$NAME.pid
+DIR=`/usr/bin/dirname "$PID"`
test -f $DAEMON || exit 0
@@ -21,6 +22,10 @@
case "$1" in
start)
rm -f $PID
+ if [ ! -d "$DIR" ]; then
+ /bin/mkdir -p "$DIR"
+ /bin/chown -R zabbix:zabbix "$DIR"
+ fi
echo "Starting $DESC: $NAME" >;&2
start-stop-daemon --oknodo --start --pidfile $PID
--exec $DAEMON >/dev/null 2>&1


最近のコメント