現在稼働中のAWSリソースの稼働状況や料金などを把握したいとのことでしたので、Grafanaで監視できるようにしたことをBlogに残そうと思います。
今回は事前準備と実際にEC2インスタンスのCPU使用率を見れるようにしたことをメインに書きましたが、クエリやパネル設定でいろいろ応用ができますので
良ければ最後までみてください。
また、私が行ったのはGrafanaで稼働状況を把握できるようにした事のみですので、Grafanaサーバー構築やAWSリソース立ち上げの話などは割愛します。
操作
用意するものは以下の通りです。
Grafana : お好みのGrafanaを用意してください。
AWSリソース : 監視対象のAWSリソースを用意してください。(今回はEC2インスタンス)
まず、AWSでの操作です。
IAMからGrafana接続用のIAMユーザーを作成し、アクセスキーとシークレットアクセスキーの取得します。(監視するAWSアカウント数分)

以上の手順を終えましたら、Grafanaで以下の手順を行ってください。
- 左ペインからConnectionsを選択し、Add new data sourceをクリックします。
- 検索欄でCloudWatchを選択します。
- Name欄に任意の名前を入力してください。
- Authentication ProviderのドロップダウンからAccess & secret keyを選択し、Access Key ID, Secret Access KeyにIAMで取ってきたものをそれぞれ入力します。
- Default Regionにリソースがお住まいのリージョンを選択し、Save & testで設定を保存します。

以上の手順を監視するAWSアカウント数分こなしてください。
上の手順がお済になりましたら、次のステップです。
- 左ペインからDashboardsを選択し、右上のNewドロップダウンからNew dashboardをクリックします。
- 画面中央にあるAdd visualizationをクリックし、ダッシュボードに追加したいAWSアカウントの名前を選択します。
- パネル右上のLast 6 hoursとなっているドロップダウンでどの期間からか指定できるので適当に設定します。(今回はLast 30 days)
- 画面下部のQueryタブでクエリの設定ができるの以下のように設定します。
Namespace : AWS/EC2 Metric name : CPUUtilization Statistic : Maximum - Match exactのモーダルを外し、Run queriesをクリックします。
- パネルに正しく表示されれば終了です。

以上の手順を監視したいAWSアカウントの数分繰り返し、完成です。
おまけ
EC2インスタンスの表示がインスタンスIDでぱっと見でなんのインスタンスなのかわからないということだったので表示をわかりやすくする方法も残します。
以下のようにパネル右側のOverridesからFields with nameで対象のインスタンスIDを、Standard options > display nameで任意の名前を入力することで、
表示名の変更をすることができます。


ただ、このやり方だと新しくインスタンスを立てたときにGrafanaでいちいち変更しに行く手間がかかるので、
表示がインスタンスIDのものをインスタンスについているName tagのvalueに更新するっていうスクリプトを作成しようとしたんですが、
Grafana HTTP APIでpanelを直接操作し、Display nameを変更できることができなさそうだったので断念しました。
これで今回のBlogを終わりにしたいと思います。この記事が参考になれば幸いです。