こんばんは、cloudpack の @dz_ こと大平かづみです。
Prologue - はじめに
Amazon RDS を使ったことがなかったので、使ってみます!
最近業務で使った Zabbix の勉強環境を作ることも兼ねて、以下の構成で挑みました。
全体構成
- Zabbix
- Amazon EC2
- OS: Debian wheezy (Community AMIs から利用)
- Zabbix用データベース
- Amazon RDS
- インスタンスクラス: db.t2.micro
- 割当てストレージ: 5GB
- DBエンジン: mysql
- DBエンジンバージョン: 5.6.22
流れ
-
データベースの準備
- Subnet Group を作成
- RDS DBインスタンスで日本語(UTF-8)を扱う準備
- Amazon RDS DBインスタンスを作成
-
Zabbixインストール
- Amazon EC2 インスタンスを Debian で作成
- Zabbix のインストール
- Zabbix の初期設定 (Webインタフェース)
-
データベースの準備
====
1.1. Subnet Group を作成
Amazon RDS DBインスタンスは、 2つ以上の Availability Zone (以下、AZ) からなる Subnet Group を必要 とします。DBインスタンス作成の過程で自動で割り当てることもできますが、割り当てるVPCの中で AZが1つしか使用してない場合、Subnet Group を自動で割り当てることができないようです。(私はエラーが出ました)
ですので、先に作ってしまう魂胆です。
Subnet Group は、EC2を扱うときには出てこない概念なので、良い勉強になりました。
1.2. RDS DBインスタンスで日本語(UTF-8)を扱う準備
2015/04/29 追記
しばらく見てるうちに、Webインタフェースは日本化できてるが保存データがどうも文字化けしてることにき気づきました…orz
調べたところ、DBインスタンス作成時に設定しなければならないようで、以下URLが参考になると思います。
1.3. Amazon RDS DBインスタンスを作成
それでは、AWSコンソールのRDSサービスページで、DBインスタンスの作成をします。
データベースの容量については、こちらの書籍 Zabbix統合監視実践入門 によると、この本で実践している範囲なら容量は 5GBでよいそうなので、そうしました。
セキュリティグループについては、DBインスタンスのmysql接続用ポート 3306 (デフォルトの場合) に対して、Zabbixをインストールするインスタンスがアクセスできるようにします。後からでも設定できます。
- Zabbixインストール
====
2.1. Amazon EC2 インスタンスを Debian で作成
Amazon EC2のインスタンス作成については割愛します。
2.2. Zabbix のインストール
タイムゾーンをJSTに変更
cp /etc/localtime /etc/localtime.orig
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
date
date
の結果が、 JST
になっていれば変更完了です。
言語を ja_JP.UTF-8 に変更
How to/install locale を参考に、Zabbix のWebインタフェースで日本語を利用できるように、言語を調整します。
dpkg-reconfigure locales
上記コマンドを打つと言語の選択画面が表示されます。 ja_JP.UTF-8 UTF-8
にチェックを付けて、OKしてください。
すでにZabbix稼働中でも、上記を行い、 service apache2 restart
すれば反映されます。
Zabbixのインストール
公式ドキュメント のインストレーションを参考にZabbixインストールします。
Debian で使うリポジトリは以下でリンクを得ました。
http://repo.zabbix.com/zabbix/2.4/debian/pool/main/z/zabbix-release/
zabbix-release_2.4-1+wheezy_all.deb (2015/04/28時点)
# リポジトリを登録する
wget http://repo.zabbix.com/zabbix/2.4/debian/pool/main/z/zabbix-release/zabbix-release_2.4-1+wheezy_all.deb
dpkg -i zabbix-release_2.4-1+wheezy_all.deb
apt-get update
# mysql版zabbix-server とフロントエンドをインストールする
apt-get install zabbix-server-mysql zabbix-frontend-php
このインストールの過程で、ローカルのmysqlに設定するような画面が現れますが、うまくやり過ごします。 後のWebインタフェースでの初期設定で、Amazon RDS DBインスタンスへの接続を設定しますので、ご安心を~。
zabbix_serve.conf の DBHostを修正
以下、2015/05/01追記
このインストールの過程で、ローカルのmysqlに設定するような画面が現れ、私はそのまま、localhost で設定してしまいました。
なので、 zabbix_server.conf
の DBHost
を修正しなければなりません。
vi /etc/zabbix/zabbix_server.conf
...
DBHost=<DBインスタンスのendpint>
...
DBインスタンスのエンドポイントは、 xxx.xxxxxx.ap-northeast-1.rds.amazonaws.com というような文字列で、AWSマネジメントコンソールのDBインスタンスの画面に記載があります。
設定が終わったら次へ進みます。
2.3. Zabbix の初期設定 (Webインタフェース)
Zabbix の初期設定は、基本的には、Webインタフェースから行います。つまづいた点だけ対処を上げておきます。
さっ、 http://zabbixサーバーのアドレス/zabbix にアクセスして初期設定を進めましょう!
PHP設定
インストールの最初にPHPの設定のチェックがあり、デフォルトのままではタイムゾーンが Fail
でした。そこで、一度ターミナルに戻り、以下のように設定ファイルを更新しました。
vi /etc/apache2/conf.d/zabbix
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Tokyo
データベース設定
2015/05/01追記
データベース設定では、Amazon RDS DBインスタンスを設定します。エンドポイントは上記画像のようにAWSマネジメントコンソールに記載されています。
その後 Test Connection
をしてみたところ、以下のエラーが発生してしまいました。
The frontend does not match Zabbix database.
パスワードなどを間違えた訳ではなく、どうやら必要なデータベースの初期化ができていないようです。
探してみると、CentOSでも同じエラーの対処 をされている情報を見つけ参考にし、以下の対処を行いました。
# zabbix に関連した sql ファイルを探してみます
find / | grep "\.sql$" | grep zabbix
/usr/share/zabbix-server-mysql/images.sql
/usr/share/zabbix-server-mysql/schema.sql
/usr/share/zabbix-server-mysql/data.sql
# 見つかった schema.sql / images.sql / data.sql を実行します
mysql -h <DBインスタンスのendpoint> -P 3306 -u zabbix -p zabbix < /usr/share/zabbix-server-mysql/schema.sql
mysql -h <DBインスタンスのendpoint> -P 3306 -u zabbix -p zabbix < /usr/share/zabbix-server-mysql/images.sql
mysql -h <DBインスタンスのendpoint> -P 3306 -u zabbix -p zabbix < /usr/share/zabbix-server-mysql/data.sql
これは、Zabbixに必要なデータベース構成を、上記で作成した Amazon RDS DBインスタンスのzabbixデータベースへ流してます。
この後、インストール作業は無事に終え、Zabbixのダッシュボードまでたどり着くことができました!
Epilogue - おわりに
今日はここまでです。
実は、当初は Debian ではなく Amazon Linux で環境作り始めたんですが、インストールの時点で依存関係でエラーがあり、Amazon Linux で環境作る意義を見いだせなかったので、変えました。普段は CentOS を比較的良く使うのですが、勉強も兼ねて Debian で作ってみたら、思いのほかスムーズに環境を作ることができました。ちょっとびっくり!
近況
Phalcon関連
- 爆速フレームワーク!! Phalcon PHP Framework
- Meet Volt ! Phalcon 謹製テンプレートエンジン Volt - from 第71回 PHP勉強会
- Meet Phalcon! - Phalcon PHPフレームワークを Nginx on Amazon EC2 にインストール!
fluentd関連
- Check! はじめての fluentd を Amazon Linux で動かしてみる (ログを PHP から送る)
- Check! はじめての Fluentd 〜 IAMロールで Amazon EC2 と S3 間をセキュアに ←
Amazon ECS関連
- Check! Amazon EC2 Container Service で Docker を学びたい!(準備編)
- Check! Amazon EC2 Container Service で Docker を学びたい! (IAMポリシー編)
技術ブログ寄稿
cloudpack技術ブログでも、AWS Lambda や 運用ツール Serf に関して記事を書いています。ご興味あれば読んでいただけると嬉しいです!