サーバ再起動時にzabbix_server.logにエラーが出力される
平素より大変お世話になっております。
zabbix-1.8.10を使用しております環境で、
サーバ再起動後にzabbix_server.logを確認すると、以下のエラーが出力されました。
mysqlが起動している状態で、zabbix-serverのデーモンのみを再起動させた場合には出力されないため、
サーバ再起動時に、mysqlのデーモンが起動する前に、zabbix-severのデーモンが起動し、
mysqlにアクセスしてエラーとなっているのではないかと推測していますが、対処法がわかりません。
原因と対処法をご教示頂けないでしょうか?
--------------------------------------------------------------------
2102:20120307:105309.473 housekeeper deleted: 0 records from history and trends, 0 records of deleted items, 0 events, 0 alerts, 0 sessions
zabbix_server [3131]: Is this process already running? Could not lock PID file [/var/run/zabbix/zabbix_server.pid]: [11] Resource temporarily unavailable
2106:20120307:110449.093 [Z3005] query failed: [2006] MySQL server has gone away [select t.httptestid,t.name,t.applicationid,t.nextcheck,t.status,t.macros,t.agent,t.authentication,t.http_user,t.http_password from httptest t,applications a,hosts h where t.applicationid=a.applicationid and a.hostid=h.hostid and t.nextcheck<=1331085889 and mod(t.httptestid,1)=0 and t.status=0 and h.status=0 and (h.maintenance_status=0 or h.maintenance_type=0) and t.httptestid between 000000000000000 and 099999999999999]
2106:20120307:110449.093 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
2106:20120307:110449.093 Database is down. Reconnecting in 10 seconds.
2122:20120307:110451.242 [Z3005] query failed: [2006] MySQL server has gone away [select escalationid,actionid,triggerid,eventid,r_eventid,esc_step,status from escalations where status in (0,4,5,1) and nextcheck<=1331085891 and escalationid between 000000000000000 and 099999999999999]
--------------------------------------------------------------------
kodai - 投稿数: 1341
mysqlデーモンが起動してからzabbix-serverを起動するように変更されてはどうでしょうか。
initスクリプト(/etc/init.d/以下)の設定で起動順序を設定できます。
TNK - 投稿数: 4769
このエラーが出力されたのは、OS起動時ですか?シャットダウン時
ですか?
OSの起動時であれば、OKBさんがご自身でも書かれている通り、恐
らくmysqldとzabbix-serverの起動タイミングの問題であると思い
ます。
利用されているOSのディストリビューションやバージョンがわかり
ませんが、RHEL 5(CentOS 5)やRHEL 6(CentOS 6)やそれ以前のバー
ジョンでは、Zabbixサーバの起動スクリプト内にsleepを入れるな
どして起動タイミングを遅らせ、mysqldがクエリを受け付けられる
ような状態になるであろう時間分だけ待つようにする程度の対処策
しかないと思います。
initのS○○の番号で順序を入れ替えても、mysqldのプロセスが起
動してからクエリを受け付けられるまでに時間がかかってしまう場
合がありますので、改善はされても完全に解決できるわけではあり
ません。
将来的には、現在の標準のサービス起動で利用されているinitdで
はなく、SystemdやUpstartなどのサービス管理機能が標準的に用意
され、設定で改善できるようになるかもしれません。
とはいえ、これらを利用した場合でも、sleepなどでZabbixサーバ
の起動を少し遅らすような微調整が必要な場合があるようです。
あと、OSのシャットダウン時にもタイミングによっては同様のエラ
ーメッセージが出力される場合があります。
現時点では、OSのシャットダウン時やOSの起動時にデータベースへ
接続できないというエラーメッセージの出力に関しては、100%なく
すことはできないと思います。
直接関係は無いとは思いますが、以下のエラーメッセージも気にな
ります。
zabbix_server [3131]: Is this process already running? Could not lock PID file [/var/run/zabbix/zabbix_server.pid]: [11] Resource temporarily unavailable
これは、すでにzabbix-serverが起動されているのにさらに起動し
ようとしたり、シャットダウン時に正常にzabbix-serverの終了処
理が行われず、PIDファイルが削除できていなかった場合に発生し
たと思います。
OS起動時に二重に起動しようとしていないか、シャットダウン時に
zabbix-serverを停止するようになっているかも確認しておいた方
が良いかもしれません。
OKB - 投稿数: 40
kodai様、TNK様
平素より大変お世話になっております。
OSはRHEL6.2を、ZABBIXは1.8.10を使用しております。
TNK様の返信を拝見しますと、現状ではsleepを入れて
適宜チューニングをする必要があるということですね。
了解致しました。
エラーメッセージの件もありますので、
再インストールをしてみます。