はじめに
主に、使ってない人、これから使いたい人向けです。
CloudWatch Dashboard は今年の10月(re:Invent2015のちょっと前)にリリースされましたね。
既存のCloudWatchのメトリクスを並べるだけだでなく、いろいろと便利な機能もあり、CloudWatchをメインで利用していた人には手軽に便利になると思います。
※ただ、Zabbix やその他監視ツールでしっかりとした監視をしている方々には物足りないかもしれませんね。
わかるけど、どういった時に便利なんだろう? とイメージがついていない場合もあるかと思いますので、
実際の簡単なアプリケーションを例にあげて説明してみたいと思います。
対象のアプリケーション構成
以下の構成を例にします。
- 前段にELB
- AutoScalingGroupで管理されたWebサーバクラスタ
- Webサーバ上で動くアプリケーションは MySQL(RDS) を利用
- 各WebサーバではNFSをマウント
- アプリケーションのログは CloudWatch Logs へ送信
なにかあった時の調査
「レスポンススピードがちょっと遅いかも?」 と気になったとします。
そのような時は、このシンプルな構成でも色々と原因が考えられます。
- Webサーバーの処理が重くてCPUが・・
- DBが重い
- NFSがなんか変
既存のCloudWatchメトリクスだと、一つ一つメトリクスを選択して、見て、といったことを何度もやらねばならず、少々面倒でした。
(実際インスタンスID調べてとか、URLコピーして、とかグラフの集計の方法変えてとか、、)
システム的にボトルネックになりそうな箇所を俯瞰して見たいですよね。
CloudWatch Dashboard でみてみる
Dashboardの作り方は、公式ドキュメントやクラスメソッドさんのブログとかにも書いてあるので、詳しくはそちらで見てください。
こんなDashboardを作りました。(インスタンスIDなどは黒塗りにしています)
※アプリケーションのレスポンスタイムはCloudWatchLogsのFilterで作成しています。
これで、各時間帯の アプリケーションのレスポンスタイムや、ELBのバックエンド(ここではWebサーバ群)が5XXエラーを返している数、
DB、NFSのCPU使用率やNetWorkIOをまとめて見ることができます。
また、気になる部分にマウスカーソルを当てると、Dashobard上の他のメトリクスも同時刻を示してくれるので、とても追いやすいです。
以下のような感じです。赤い矢印がマウスカーソルだと思ってください。
マウスカーソルで指し示した時間に他のグラフでも線が出てるのがわかると思います。
関連部分を追いやすいですね。
また、よく見たい部分をドラッグすれば全部のメトリクスで拡大することもできます。
(Actions => Link graphs にチェックが入っている必要あり)
まとめ
ここまで書いてあれですが、この例では NFSのネットワークやCPUが多少上がってたけど、別に問題なさそうなくらいで、
特に連動した原因は見えませんでしたが、取得する項目を増やしていけばなにかあったときに追いやすいかと思います。
CloudWatchも LogsのFilterと Alarm で自動化できる部分は自動化して、実際に見て確認する時はDashboardで、とやると色々と楽になりそうですね。
どんどん便利になっていいなと思います。