はじめに
GrafanaでAmazon CloudFrontのエラー率等のグラフをダッシュボード化してみました。
この記事を書いたきっかけ
CloudFrontのトレンド情報を調べる際、毎回AWSマネジメントコンソールに都度ログインして確認するのは面倒だなーと思っていました。
もっといい方法はないか考えた末、以前から気になっていたGrafanaを試すことにしました。
結果的に実用性は高くないかもしれませんが、Grafanaが中々面白いなと思ったため、設定できるまでにやったことを記録しました。
また、Grafanaの起動にはDockerを利用したため、ついでにDockerのインストール方法も備忘のため記録しました。
環境
$ lsb_release -a
LSB Version: core-11.1.0ubuntu4-noarch:security-11.1.0ubuntu4-noarch
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
Dockerインストール
以下に記載されているインストール手順を実施。 https://docs.docker.com/engine/install/ubuntu/
古いバージョンのDocker Packageを削除
$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Docker用のaptリポジトリの設定
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Dockerパッケージのインストール
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker Composeインストール
以下の手順を参照。 https://matsuand.github.io/docs.docker.jp.onthefly/compose/install/#install-compose-on-linux-systems
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
$ docker compose version
Grafanaのコンテナを起動
Docker Composeを利用してGrafanaコンテナを起動する。
なお、Dockerコンテナのデータはそのままだと永続化されないため、バインドマウントを利用してコンテナを起動する。
コンテナデータ格納用ディレクトリの作成
# cd /grafana-test-directory
# mkdir data
docker-compose.ymlの作成
services:
grafana:
image: grafana/grafana-enterprise
container_name: grafana
# コンテナの手動停止時以外は常に再起動を行う
restart: unless-stopped
# rootユーザで起動
user: "0"
ports:
- "3000:3000"
# コンテナの/var/lib/grafanaをカレントディレクトリの/dataにマウント
volumes:
- "./data:/var/lib/grafana"
コンテナ起動
$ docker compose up -d
Grafanaへのアクセス確認
ローカルのブラウザでhttp://localhost:3030でアクセスするとGrafanaのログイン画面が表示される。
初期ログインIDとパスワードはともにadmin
接続すると新しいパスワードの入力が求められるので、任意のパスワードに変更する。
CloudFrontメトリクスのダッシュボードを作成する
Grafana接続用IAMユーザを作成する
GrafanaがAmazon CloudWatchのデータソースにアクセスするために、Grafana用のIAMユーザを作成する。
AWSマネジメントコンソールより、IAM > ユーザ > ユーザの作成をクリック
任意のユーザ名を入力し、次へをクリック(今回はgrafanaユーザとした)
許可の設定画面が出るので、ポリシーを直接アタッチするを選択し、「CloudWatchReadOnlyAccess」を選択し次へをクリック
そのままユーザの作成をクリック
IAMユーザの一覧より作成したGrafana用ユーザをクリックし、セキュリティ認証情報タブからアクセスキーを作成をクリック
ユースケースでコマンドラインインターフェイスを選択し次へ進み、画面に則りアクセスキーとシークレットキーを発行する(発行時の画面は割愛)
CloudWatchのデータソースを設定する
ローカルのブラウザからhttp://localhost:3030へアクセスし、Grafanaへログイン後、
メニュー内のConnections > Data Sourceをクリック
CloudWatchを検索し、開く
Authentication Provider欄でAccess & secret keyを選択し、Grafana用のIAMユーザのアクセスキーとシークレットキーを入力する
Default Region欄でメトリクス情報を取得したいリージョンを選択(今回はap-northeast-1を選択)
Save & testをクリックしSuccessfullyと表示されたら、表示されたメッセージ内のbuilding a dashboard.をクリック
Import a dashboardをクリック
674(https://grafana.com/grafana/dashboards/674-aws-cloudfront/)と入力し、Loadをクリック
するとName欄にAWS CloudFrontと表示されるので、Importをクリック
ようやくCloudFrontのグラフが表示された
最後に
思ったより設定に手間取りましたが、Grafanaで作るダッシュボードは多彩でカッコよく、色々触るだけで楽しいですね。