はじめに

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 login

接続すると新しいパスワードの入力が求められるので、任意のパスワードに変更する。 ChangePassword

CloudFrontメトリクスのダッシュボードを作成する

Grafana接続用IAMユーザを作成する

GrafanaがAmazon CloudWatchのデータソースにアクセスするために、Grafana用のIAMユーザを作成する。

AWSマネジメントコンソールより、IAM > ユーザ > ユーザの作成をクリック

任意のユーザ名を入力し、次へをクリック(今回はgrafanaユーザとした) username

許可の設定画面が出るので、ポリシーを直接アタッチするを選択し、「CloudWatchReadOnlyAccess」を選択し次へをクリック policy

そのままユーザの作成をクリック

IAMユーザの一覧より作成したGrafana用ユーザをクリックし、セキュリティ認証情報タブからアクセスキーを作成をクリック create_access_key

ユースケースでコマンドラインインターフェイスを選択し次へ進み、画面に則りアクセスキーとシークレットキーを発行する(発行時の画面は割愛) usecase

CloudWatchのデータソースを設定する

ローカルのブラウザからhttp://localhost:3030へアクセスし、Grafanaへログイン後、 メニュー内のConnections > Data Sourceをクリック click_datasource

CloudWatchを検索し、開く click_cloudwatch

Authentication Provider欄でAccess & secret keyを選択し、Grafana用のIAMユーザのアクセスキーとシークレットキーを入力する change_provider

Default Region欄でメトリクス情報を取得したいリージョンを選択(今回はap-northeast-1を選択) default_region

Save & testをクリックしSuccessfullyと表示されたら、表示されたメッセージ内のbuilding a dashboard.をクリック save_and_test

Import a dashboardをクリック import_dashboard

674(https://grafana.com/grafana/dashboards/674-aws-cloudfront/)と入力し、Loadをクリック load

するとName欄にAWS CloudFrontと表示されるので、Importをクリック import

ようやくCloudFrontのグラフが表示された graph

最後に

思ったより設定に手間取りましたが、Grafanaで作るダッシュボードは多彩でカッコよく、色々触るだけで楽しいですね。