『ZABBIXサーバーが動作していません』という警告が出力され続ける

大変お世話になっております。

先日ZABBIXを構築し、エージェント側のデータも収集できており、アラートのメール送信も問題なく送信されてましたが、
色々な設定値の調整を行っていたところ、突然、『ZABBIXサーバーが動作していません(画面のリフレッシュを行って
ステータスを再確認してください)』の表示が、画面中央上部に表示されるようになりました。

Zabbixのバージョンは下記です。

 Serverバージョン:2.4.8
 Agentバージョン:2.2.5、2.0.6

上記の警告が表示され始めてからも[監視データ]-[最新データ]を参照すると、Agentからデータが収集できておりますが、
警告が出力され始めてからアラートメールが送信されなくなってしまった状態でございます。

本件についてどういった原因が考えられるかをご教示いただきたく存じます。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。

広瀬です

ご提示のエラー、『ZABBIXサーバーが動作していません(画面のリフレッシュを行ってステータスを再確認してください)』
が出ている場合は、ZabbixServerプロセスが止まっている場合、またはzabbix.conf.phpのZBX_SERVER値を変えた場合
などでも発生します。

「色々な設定値の調整を行っていたところ」との事ですが、具体的に何を行ったのでしょうか?ともに戻してみましたか?
操作上で不都合出た場合、元に戻るのは基本中の基本です。

ご確認ください

今回実際に設定値を変更したのは、/etc/hostsです。
設定変更後はもちろん元に戻しました。

<現状の/etc/hosts>
====================================
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost zabbix-server zabbix-server.comnetsystem.co.jp
127.0.0.1 zabbix-server.novalocal zabbix-server
====================================

最下行の『127.0.0.1 zabbix-server.novalocal zabbix-server』行は、削除しても、
再起動するたびに追加されてきます。

/etc/hosts変更後に『ZABBIXサーバーが動作していません~』の出力が始まったので、
"zabbix.conf.php"の"ZBX_SERVER"に設定されている『localhost』の設定が正常に名前解決できていない
のかと思い、サーバ自身のIPアドレスに変更してみたりもしましたら、改善されませんでした。
(現状は『localhost』に戻しています。)

その時点からアラートメールも送信不可となりましたので、名前解決関連に異常があるのかと思い、
/etc/resolv.confの見直し等も行い、nslookupでも正常に名前解決できているため、問題ないように思われます。

こういった状況で現状行き詰っている状況となってしまっております。。。

広瀬です

uname -nを実行した際に出力される値はどうなってますか?

ユーザー TNK の写真

広瀬さんも書かれていますが、具体的にどのような作業を行われた
のかを確認してください。
きちんと記録していなかったのであれば、今後は記録しておいて、
何らかの問題が発生した時に元に戻せるように準備をしておくこと
をお勧めします。

広瀬さんが書かれている以外であれば、zabbix_server.conf内の設
定を変更されませんでしたか?

もしも、zabbix_server.conf内のListenIPの値を、デフォルトのコ
メントアウトされた状態から、127.0.0.1以外の特定のIPアドレス
を指定するように変更していた場合にはlocalhostでは接続できな
くなります。

理由を簡単に説明すると、デフォルトでは、0.0.0.0が使用される
ので、そのサーバーに接続されているすべてのネットワークインタ
ーフェースから接続できるようになっています。

例えば、eth0というネットワークインターフェースがあって、その
インターフェースに192.168.1.1というIPアドレスを付与していた
場合、

 ・ローカルループバックの127.0.0.1
 ・eth0の192.168.1.1

の両方でZabbixサーバーのプロセスが要求を受け付けられるように
なります。
つまり、Webインターフェースの設定で指定した「localhost」とネ
ットワーク経由でのアクセスの両方からアクセスできるわけです。

そこで、

 ListenIP=192.168.1.1

と指定してしまうと、ローカルループバックでの接続はできなくな
るので、Webインターフェースの設定で「localhost」と設定してい
たのでは接続できなくなります。

ご確認ください。

ユーザー hajime の写真

OSを記載されておりませんので、なんとも言いがたいところですが、
SE Linux の設定ではないでしょうか?無効にすれば出なくなるかも…

広瀬です

私もそれ(SELinux)を疑ってますが、zabbix.conf.phpへのアクセスが出来なくなるので、
たぶんエラーが異なってくるかなぁと思い、指摘を避けました(当然、オーナーや権限もですが)。

 ※zabbix.conf.phpを読み込めなかったら、DBアクセスにも影響出るからです

また、ZabbixServer起動プロセスをroot権限ではなくzabbix権限に落としても、私の環境では
webディレクトリのオーナをrootにしたり、中身書き換え間違いしない限り、エラーは起きません
でしたね・・・

ユーザー TNK の写真

最初の質問の内容の読み違えでなければ、最初はエラーがでていな
くて、設定を調整していて突然エラー表示がでるようになったよう
です。

SELinuxの問題であれば、最初からエラーになっているのではない
でしょうか?

SELinuxが有効で、最初からエラーになっていたのであれば、httpd
からZabbixサーバーにネットワーク接続するためのパーミッション
の可能性も考えられます。
CentOS 7であれば、そのあたりも含めて手順を紹介しているので参
照して頂くと良いかもしれません。
http://qiita.com/atanaka7/items/294a639effdb804cfdaa

例:
# setsebool -P httpd_can_connect_zabbix on

実際にエラーが発生する直前に操作した内容としては、/etc/hostsを下記のような内容に書き換えを行いました。

<修正前>
 ============================================================
 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
 
 127.0.0.1 localhost zabbix-server zabbix-server.comnetsystem.co.jp
 127.0.0.1 zabbix-server.novalocal zabbix-server
 ============================================================

<修正後>
 ============================================================
 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
 
 127.0.0.1 localhost zabbix-server zabbix-server.comnetsystem.co.jp
 ============================================================

現在は設定をもとに戻しておりますが、エラーは継続して出力されている状況であり、かつ、<修正前>の最下行は、
OSを再起動すると、自動的に最下行に追加されてます。
そのため、hostsの内容を下記の1行のみに設定することも試してみましたが、エラーは改善されませんでした。

 127.0.0.1 zabbix-server.novalocal zabbix-server

uname -aの出力結果は下記のようになります。

 # uname -a
 Linux zabbix-server.novalocal 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

OSはCentOS 7.3になります。

 # cat /etc/redhat-release
 CentOS Linux release 7.3.1611 (Core)

また、確認してみたところ、現状zabbix-serverのstatusが「activating」となっており、正常に起動しておりませんでした。

 # systemctl status zabbix-server
 ● zabbix-server.service - Zabbix Server
  Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
  Active: activating (auto-restart) (Result: exit-code) since Sun 2017-06-25 14:40:53 JST; 5s ago
  Process: 3058 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=1/FAILURE)
  Process: 3051 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
  Main PID: 3053 (code=exited, status=1/FAILURE)
 
 Jun 25 14:40:53 zabbix-server.novalocal systemd[1]: zabbix-server.service: control process exite...=1
 Jun 25 14:40:53 zabbix-server.novalocal systemd[1]: Unit zabbix-server.service entered failed state.
 Jun 25 14:40:53 zabbix-server.novalocal systemd[1]: zabbix-server.service failed.
 Hint: Some lines were ellipsized, use -l to show in full.

こちらが原因かと思われますので、原因について調査してみようと思います。

先ほどのzabbix-server自体が起動していなかった件に関しては、zabbix-server.cont内の「CacheSize=8M」の
部分を増加させたところ、正常に起動するようになりました。

しかし、WEB画面上の『Zabbixサーバーが動作してません~』の表記は出力されたままになります。

zabbix-server.conf内の「ListenIP」については、元々デフォルトのコメントアウトのままでありましたので、
下記のように「127.0.0.1」を明示的に設定してみたいのですが、状況は変わっていない状況になります。

 ListenIP=127.0.0.1

ユーザー TNK の写真

ZabbixサーバーのListenIPを127.0.0.1にしてしまうと、ネットワ
ーク経由で各監視対象のアクティブチェック(特にログ監視)ができ
なくなるのでご注意ください。

zabbix_server.confのListenIPはコメントアウトしたままで、
zabbix.conf.php内の$ZBX_SERVERの値を、IPアドレスにしてみて
はいかがでしょうか?

デフォルト:
$ZBX_SERVER = 'localhost';
変更例:
$ZBX_SERVER = '127.0.0.1';

ご連絡いただきありがとうございます。

上記ご指摘いただいた設定自体は変更しておりませんが、25日に変更した状態で該当のエラーが出力されなくなりました。

これでしばらく様子を見てみようと思います。