KUSANAGI にZabbix3.0 serverを入れてみる

KUSANAGIでZabbix Server

KUSANAGIにはZabbix2.2 Agentが標準で入っています。Zabbix Serverを用意すれば、簡単に監視できますね。
ということで、リリースされて久しい Zabbix 3.0 Server を入れてみました。もちろんKUSANAGIにね。

Zabbix Server自体は、MySQLなどを利用した情報収集プログラムですが、そのWebUI(とAPI)はPHPで書かれています。
ですので、KUSANAGIで提供しているNginx+PHP7で動くはずです。

Zabbix Server3.0インストール

  1. kusanagiインストール
    今回は、さくらのクラウド(1Core、1GB、SSD 20GB の構成)へKUSANAGIを入れます(さくらのクラウドへのKUSANAGIインストール手順)。
    今ならkusanagi-7.8.2+nginx-1.10.0+php7.0.6 がインストールされます(5/21現在)。
  2. zabbix22のアンインストール
    kusanagi-7.8.2 のRPMは、zabbix22-agent をrequire しています。そのため、普通にzabbix22-agent を削除すると、kusanagi パッケージまで削除されてしまいます。そこで小技を使って、zabbix22-agent(とzabbix22)のみを削除します。
    rpm -e で削除する際に –nodeps を指定すると、依存関係を無視して指定したRPMのみを削除してくれます。

  3. zabbix-3.0 repository 登録
    ZabbixのWebサイトの手順に従って、repositoryを登録したいと思います。手順では rpmコマンドを使用していますが、ここではyum を使います。

  4. Zabbix-server/agent インストール
    Zabbix server とagentをインストールします。依存関係によりphp56のパッケージがインストールされるので、–enablerepo でremi-php56を有効にします。
    Zabbix WebUIで使用する日本語フォントをインストールするため、zabbix-web-japanese もインストールしておきます。

Zabbix設定

  1. kusanagi provision
    WebUIの設定ファイルを生成するために、kusanagi provision を実行します。ここは通常のkusanagi provision手順の通りです。

    ZabbixのDB名、ユーザ名、パスワードは、ここで作成したものを使用します。
    また今回httpsを使用するつもりなので、メールアドレスを指定して Let’s Encrypt の証明書も取得・設定しておきます。
    ここでインストールされるWordPressは使用しません。ファイル削除してもいいですが、nginxの設定でrootを書き換えるので、そのままでもWordPressのコードは使用されません。

  2. Zabbix DB初期化
    ZabbixのDB設定では、文字コードと照合順序(collations)を指定しておく必要があるため、alterで変更します。

    あとは、Zabbixの手順通りに初期化用のSQLをMySQLに設定します。

  3. Zabbix server設定
    /etc/zabbix/zabbix_server.conf で、DBName, DBUser, DBPassword をkusanagi provision で指定したものを記述します。以下記述例。

  4. Zabbix server起動
    Zabbix Serverを起動し、問題なく起動することを確認します。

  5. Zabbix agentd起動
    Zabbix agentdも起動しておきます。

  6. nginx設定
    /etc/nginx/conf.d/zabbix_http.conf と zabbix_ssl.conf の root の部分を書き替え、Zabbixのパス(/usr/share/zabbix)を設定します。

  7. また、http 接続から https接続へのredirect を設定し、nginxを再起動します。

  8. PHP設定
    今回、PHP7を使用します。Zabbixの仕様のため、/etc/php7-fpm.d/www.conf の末尾に以下の設定を加えます。

    ここで、php7 を起動します。

  9. Zabbix 権限設定

    以下のように、WebUIで使用するディレクトリのオーナーを、nginx/php7 の起動ユーザ httpd:www に変更します。
    また、php-56のUpdateによって変更された/var/lib/php/* のgroup権限も、wwwに変更しなおします。

  10. Zabbix confファイル設定

    通常、ここでWebUIで初期設定を行うのですが、なぜか初期画面の「Next」から先に進まないので、設定ファイルを直接作成します。
    テンプレート(zabbix.conf.php.sample) を /etc/zabbix/web/zabbix.conf.php にコピーします。

    設定ファイル /etc/zabbix/web/zabbix.conf.php の、以下の Zabbix DBの接続情報部分を書き換えます。

  11. Zabbix WebUIアクセス

    kusanagi provisionで指定したホスト名にwebブラウザでアクセスすると、ログイン画面が出ます。

    zabbix login

  12. 初期ユーザ・パスワード(User=Admin、password=zabbix)でログインし、Adminのパスワードを変更します。

Zabbix の速度を見る

あとは、通常通りZabbixの設定を行っていきます。
これで、KUSANAGIの nginx+php7 を使用した超早いZabbix WebUIが実現しました。
ほんとに早くなったのか見てみましょう。FirefoxのWeb inspectionで速度を見てみます。

  • KUSANAGI Zabbix ダッシュボード
    大体、50ms以下に収まっていますね。
    dashboard speed

  • KUSANAGI Zabbix スクリーン
    チャートの生成に100ms程度かかっていますが、map生成なども50ms程度に収まっています。
    screen speed

  • Zabbix デモ環境
    比較のため、Zabbix.org のデモサイトにguest loginして、Firefoxで速度を見ました。
    待機時間(通信している時間以外=PHPの生成時間)は、おおむね500ms程度です。
    zabbix demo speed

このKUSANAGI Zabbixサイトは作ったばかりなので、Zabbix.orgのdemo環境とは持っている監視データ量が全然違います。
これを差し引いて比較する必要がありますが、PHPのページ生成が100ms以下なので、KUSANAGIを使用することでWebUIは超早くなってるのではないでしょうか?

今後の課題

今後、Zabbixで以下のようなことをやりたいと思っています。

  • Zabbix Agent通信の暗号化
  • hhvm での動作確認
  • KUSANAGIで使用しているPHP7の APC/APCuやOPCacheのパラメータ監視
  • APIの速度も比較

APIの速度測定はどうしたものか。どこかのZabbixおじさんを召喚するか?