Zabbix Server を入れてみる(kusanagi 8.0編)
祝 KUSANAGI 8.0 リリース
さて、先週無事にKUSANAGIの新バージョンがリリースされました。
KUSANAGI 8.0では、WordPressだけではなく、LAMP環境を構築することもできます。
また、kusanagi init や kusanagi provision コマンドで、オプション指定でパラメータを選択することが可能です。
ということで、LAMPアプリケーションの例として、以前行ったZabbix Server 3.0 をKUSANAGI 8.0で入れてみましょう。
Zabbix 3.0 インストール
KUSANAGI 8.0では、以下のようにすればKUSANAGIでLAMP環境を構築できます。
# kusanagi init --tz tokyo --lang en --keyboard en --passwd passw0rd --no-phrase --dbrootpass dbpassw0rd --php7 --nginx
# kusanagi provision --lamp --fqdn zabbix.example.com --email mail@example.com --dbname zabbix --dbuser zabbix --dbpass zabbix zabbix
また、KUSANAGI8.0では、Zabbix社公式リポジトリを使用してZabbix3.0 agent が入るので、以下のように zabbix server をインストールするだけです。
yum --enablerepo=remi,remi-php56 install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese
あとは、以前の手順と同様に、NGINX、PHP7、Zabbixの設定を行えば、Zabbix serverの設定が完了します。
さくらのクラウドのスクリプトで入れてみる
以前、「KUSANAGI for さくらのクラウド」でconcrete5を簡単に利用できるスタートアップスクリプトの紹介という記事を見つけましたが、さくらのクラウドではスタートアップスクリプトを使用して、初期設定を行うことができます。
今回このスクリプト機能を使用して、上記のZabbix serverのインストールを一撃!で行いたいと思います。
用意したスクリプトは以下の通りです。このスクリプトは、先ほどの記事のconcrete5 用のスクリプトを基に作成しています。
このスクリプトを、さくらのクラウドのスクリプトとして登録してください。
#!/bin/bash # @sacloud-once # @sacloud-desc KUSANAGI zabbix server。 # @sacloud-desc サーバ作成後、ドメインの設定を行いアクセスしてください # @sacloud-desc http://サイトのドメイン/ # @sacloud-desc (このスクリプトは、KUSANAGIでのみ動作します) # @sacloud-password required shellarg maxlen=100 kusanagi_password "kusanagiのパスワード" # @sacloud-password required shellarg maxlen=100 dbrootpass "DBのrootパスワード" # @sacloud-text required shellarg maxlen=100 site_fqdn "サイトのドメイン" # @sacloud-text shellarg maxlen=100 admin_email "メールアドレス" # @sacloud-text required shellarg maxlen=100 default="zabbix" dbname "DB名" # @sacloud-text required shellarg maxlen=100 dbuser "DBユーザ名" # @sacloud-password required shellarg maxlen=100 dbpass "DBパスワード" TERM=xterm KUSANAGI_PASSWORD=@@@kusanagi_password@@@ DBROOTPASS=@@@dbrootpass@@@ SITE_DOMAIN=@@@site_fqdn@@@ ADMIN_EMAIL=@@@admin_email@@@ DBNAME=@@@dbname@@@ DBUSER=@@@dbuser@@@ DBPASS=@@@dbpass@@@ #---------START OF firewall---------# systemctl start firewalld.service firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent firewall-cmd --zone=public --add-port=10051/tcp --permanent systemctl restart firewalld.service systemctl enable firewalld.service #---------END OF firewall---------# #---------START OF KUSANAGI---------# yum -y --enablerepo=remi,remi-php56 update sleep 30 # kusanagi init EMAILOPTION=--no-email #[ -n "$ADMIN_EMAIL" ] && EMAILOPTION="--email $ADMIN_EMAIL" kusanagi init --tz tokyo --lang en --keyboard en --passwd $KUSANAGI_PASSWORD --no-phrase --dbrootpass $DBROOTPASS --php7 --nginx kusanagi provision --lamp --fqdn $SITE_DOMAIN $EMAILOPTION --dbname $DBNAME --dbuser $DBUSER --dbpass "$DBPASS" zabbix #---------END OF KUSANAGI---------# #---------START OF Zabbix---------# yum --enablerepo=remi,remi-php56 install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese sleep 1 echo "alter database $DBNAME character set utf8 collate utf8_bin;"| mysql -uroot -p$DBROOTPASS $DBNAME SQLFILE=$(ls -t /usr/share/doc/zabbix-server-mysql-3*/create.sql.gz | head -1) zcat $SQLFILE | mysql -uroot -p$DBROOTPASS $DBNAME (echo php_value[max_execution_time] = 300 echo php_value[max_input_time] = 300 echo php_value[date.timezone] = Asia/Tokyo) >> /etc/php7-fpm.d/www.conf cp -pr /usr/share/zabbix/* /home/kusanagi/zabbix/DocumentRoot/ sed -e "s/\(DB\['DATABASE'\]\s\+=\s\).*;/\\1 '$DBNAME';/" \ -e "s/\(DB\['USER'\]\s\+=\s\).*;/\\1 '$DBUSER';/" \ -e "s/\(DB\['PASSWORD'\]\s\+=\s\).*;/\\1 '$DBPASS';/" \ /usr/share/zabbix/conf/zabbix.conf.php.example > /etc/zabbix/web/zabbix.conf.php (echo DBName=$DBNAME echo DBUser=$DBUSER echo DBPassword=$DBPASS ) >> /etc/zabbix/zabbix_server.conf chown -R httpd:www /home/kusanagi/zabbix/DocumentRoot/ /etc/zabbix/web chown :www /var/lib/php/* systemctl start zabbix-server zabbix-agent systemctl enable zabbix-server zabbix-agent #---------END OF KUSANAGI---------# sh -c 'sleep 60; reboot' & exit 0
さくらのクラウドでサーバ作成時に、アーカイブからKUSANAGI7.8のイメージを指定してください。
上記スクリプトをスタートアップスクリプトとして使用してください。
このとき、以下のようなパラメータを入力します。
パラメータ | 説明 |
---|---|
kusanagiのパスワード | kusanagi ユーザのパスワード |
DB の rootパスワード | MySQLへ ユーザ root で接続するときのパスワード |
サイトのドメイン | kusanagi provide で指定する FQDN |
メールアドレス | 使用しない(後述) |
DB名 | MySQLデータベースの名前(デフォルトは zabbix) |
DBユーザ名 | 上記データベースのアクセスに使用するユーザ名 |
DBパスワード | 上記DBユーザ名のパスワード |
作成してしばらく(性能にもよりますが10~15分ほど)待つと、zabbix server 3.0 がデプロイされた状態でインスタンスが起動します。
起動したサーバのIPアドレスをDNS登録するか、hostsファイルに書いて、指定したドメイン名にブラウザでアクセスしましょう。
スクリプトの解説
今回のスタートアップスクリプトで何を行っているかを解説します。
yum update
yum コマンドでパッケージを最新版にします。ここで、KUSANAGI 8.0、Zabbix 3.0へのアップデートが行われます。
sleep を入れているのは、Zabbix 3.0にしている弊害で、最初のKUSANAGI 8.0へのアップデート完了後にzabbix 3.0 へのアップデートが行われるため、少し待っています。
yum -y --enablerepo=remi,remi-php56 update
sleep 30
firewalld 設定
firewalld を起動し、有効化しています。
http、httpsのポート(80、443)とともに、zabbix server用のポート(10051)を開放しています。
kusanagi 設定
kusanagi init および kusanagi provision で、zabbix用のLAMP環境を作成しています。
いくつかのパラメータは決め打ちになります。
また、本来ここでLet’s Encrypt SSL証明書を発行できるのですが、この時点でIPアドレスが確定しておらず、DNSへの登録もできないことから、ここではSSL証明書発行を行っていません。
DNS登録を終えたら、以下のコマンドを使用して Let’s EncryptのSSL証明書を発行してください。
# kusanagi ssl --email メールアドレス
zabbix インストール・設定
zabbix server のパッケージをインストールし、以下のように設定を自動的に追加しています。
- DBへのテーブル情報や初期テンプレートの展開
- PHP7 の設定追加
- zabbix_server.conf への設定変更
- /home/kusanagi/zabbix/DocumentRoot へ、Zabbix Web Server用のPHPファイルをコピー
- ファイル権限の変更
- zabbix serverの起動、有効化
今回は、以前行ったZabbix Server 3.0 とは異なり、DocumentRoot にPHPファイルをコピーしています。
reboot
最後に reboot します。
ここで注意しないといけないのが、このスクリプトを一度だけ起動するために @sacloud-once と指定しているのですが、exit 0で終了しないと終了しないと再起動のたびに読み込まれます。
そのため、スクリプト中で単に reboot するとスクリプトが終了したとみなされず、無限に再起動することになってしまいます。
これを回避するために、以下のようにバックグラウンド処理でrebootを行う必要があります。
sh -c 'sleep 60; reboot' &
exit 0
さいごに
これで、Zabbix Server 3.0 を簡単インストールすることができますね。
このスクリプトは、さくらのクラウド用ですが、当然ほかのクラウドにも流用可能ですので、お試しください。
また、このスクリプトを基にして、色々なLAMPアプリケーションをインストールできると思います。これもお試しください。