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のみを削除してくれます。

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

    # yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
  4. Zabbix-server/agent インストール
    Zabbix server とagentをインストールします。依存関係によりphp56のパッケージがインストールされるので、–enablerepo でremi-php56を有効にします。
    Zabbix WebUIで使用する日本語フォントをインストールするため、zabbix-web-japanese もインストールしておきます。

    # yum --enablerepo=remi,remi-php56 install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese 

Zabbix設定

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

    # kusanagi provision zabbix

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

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

    # echo 'alter database zabbix charactKer sertKt yKutf8 collate utf8K_bin;'| mysql -uzabbix -p zabbix
    Enter password:
    

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

    # cd /usr/share/doc/zabbix-server-mysql-3.0.0
    # zcat create.sql.gz | mysql -uroot -p zabbix
    
  3. Zabbix server設定
    /etc/zabbix/zabbix_server.conf で、DBName, DBUser, DBPassword をkusanagi provision で指定したものを記述します。以下記述例。

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

    # systemctl start zabbix-server
    # systemctl status zabbix-server
    ● zabbix-server.service - Zabbix Server
       Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
       Active: active (running) since Sat 2016-05-21 04:54:04 JST; 1h 30min ago
      Process: 24363 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
     Main PID: 24365 (zabbix_server)
       CGroup: /system.slice/zabbix-server.service
               ├─24365 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
      (中略)
    # systemctl enable  zabbix-server
    Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/sy
    stem/zabbix-server.service.
    
  5. Zabbix agentd起動
    Zabbix agentdも起動しておきます。

    # systemctl start zabbix-agent
    # systemctl status zabbix-agent
    ● zabbix-agent.service - Zabbix Agent
       Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
       Active: active (running) since Sat 2016-05-21 04:54:56 JST; 1h 33min ago
     Main PID: 24421 (zabbix_agentd)
       CGroup: /system.slice/zabbix-agent.service
               ├─24421 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
               ├─24422 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
               ├─24423 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
               ├─24424 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
               ├─24425 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
               └─24426 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
    May 21 04:54:56 zabbix systemd[1]: Starting Zabbix Agent...
    May 21 04:54:56 zabbix systemd[1]: PID file /run/zabbix/zabbix_agentd.pid not readable (yet?) after start.
    May 21 04:54:56 zabbix systemd[1]: Started Zabbix Agent.
    # systemctl enable zabbix-agent
    Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/sys
    tem/zabbix-agent.service.
  6. nginx設定
    /etc/nginx/conf.d/zabbix_http.conf と zabbix_ssl.conf の root の部分を書き替え、Zabbixのパス(/usr/share/zabbix)を設定します。

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

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

    php_value[max_execution_time]  = 300
    php_value[max_input_time]  = 300
    php_value[date.timezone]  = Asia/Tokyo
    

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

    # kusanagi php7
  9. Zabbix 権限設定

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

    # chown -R httpd:www /usr/share/zabbix /etc/zabbix/www
    # chown :www  /var/lib/php/*
  10. Zabbix confファイル設定

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

    # cp /usr/share/zabbix/conf/zabbix.conf.php.example /etc/zabbix/web/zabbix.conf.php
    

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

    
    $DB['DATABASE']                 = 'zabbix';
    $DB['USER']                             = 'zabbix';
    $DB['PASSWORD']                 = 'zabbix';
    
  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おじさんを召喚するか?

Follow me!

Leave a Reply