MySQL + Prometheus + Grafana (+ Percona Dashboard) による MySQL の性能を可視化出来る環境を作りたかったので ansible で書いて作った。
実行方法
https://github.com/hkrn/ansible-playbooks をチェックアウトし、以下の playbook を実行する。[]
の部分は適宜置き換えること。
cd 20171223
ansible-playbook \
-e 'gce_project_id=[project_id]' \
-e 'gce_service_account_email=[service_account_email]' \
-e 'gce_credentials_file=[path/to/credentials_file]' \
-e 'ansible_ssh_user=[ssh_user]' \
-e 'ansible_ssh_private_key_file=[path/to/gce_ssh_private_key_path]' \
site.yml
かなり時間がかかるが、実行すると合計3台のインスタンスが立ち上がる。
- MySQL 5.7 マスターサーバの VM
- MySQL 5.7 レプリカサーバの VM
- モニターサーバ
- Prometheus と Grafana が同居している
いずれも最小のインスタンスである f1-micro
で作成される。
インスタンスが立ち上がったら http://[モニターサーバのIPアドレス]:3000
にアクセスして Grafana の画面が見れることを確認する。
Grafana のダッシュボード画面
MySQL Overview の画面
この playbook を使うときの注意点
- デモ用に作ってあるものなので、確認したらインスタンスをすぐに削除すること
- 仮にこの playbook 流用にするせよ一回踏み台のインスタンスを建ててそこから流すように改修すべき
- ついでにいうとパスワードも丸見えなので Ansible Vault で暗号化しておくこと
- デフォルトのファイアウォールに
3000
を追加で開けるため、試したあとは削除すること
引数の説明
gce_project_id
Google Compute Engine 上で実行するプロジェクトの ID
gce_service_account_email
Google Compute Engine 上で実行するサービスアカウントのメールアドレス。
gce_credentials_file
Google Compute Engine におけるサービスアカウントの秘密鍵。作成したことがない場合は以下の手順に従って作成する必要がある。
-
IAM と管理
を選択 -
サービスアカウント
を選択 - 利用するサービスアカウントを選び、縦三点リーダーをクリックして「キーを作成」を選択
- JSON 形式を選択して作成
- 作成したファイルをダウンロードし、配置する
- 配置したパスが
gce_credentials_file
の値となる
- 配置したパスが
ansible_ssh_user
GCE インスタンスにログイン出来る SSH ユーザ名。Mac の場合 echo $USER
したユーザ名でログイン出来るはず。
ansible_ssh_private_key_file
GCE インスタンスにログイン出来る SSH の秘密鍵。通常は gcloud が生成する ~/.ssh/google_compute_engine
を使う。