4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amplifyのビルド回数をGrafanaで可視化してみよう

Posted at

この記事は何

Amplifyのビルド回数をGrafanaで可視化しよう、の備忘メモ的記事です。

なぜやるか

1. 開発生産性を測るため(Four Keys メトリクス)

Googleが提唱する「Four Keys(フォーキーズ)」というソフトウェア開発パフォーマンス指標を参考にしています。
特に「デプロイ頻度(Deployment Frequency)」は重要な指標の一つであり、開発チームのフロー効率を測る上で有用です。
Amplifyのビルド回数を収集・可視化することで、定量的にチームの活動状況を把握し、改善の糸口を探ることができます。

2. AWS Amplifyを使っているから

現在プロジェクトではAWS Amplifyを利用しています。
Amplifyのビルド回数を見える化するためのTipsに対する調査をしてみたかったのも理由の1つです。

3. Grafanaでデータ可視化をしてみたかった

可視化ツールとして人気のあるGrafanaを実際に試してみたいという動機もあります。
Grafanaを用いることで、Amplifyのビルドデータをダッシュボード形式で視覚的に表示し、状況把握や傾向分析がしやすくなります。

どうやってやるか

まずAmplifyのビルド回数をソースとなるCloudWatchロググループを作成する

Amplifyは色々隠蔽しがちなので、ビルドの実行時ログなどのソースとなる情報を取得できるようにする必要があります。

今のところ最も簡便に取得だったのは、標準のビルド通知(メール)設定を活用することです。(↓画像の機能)

ビルドの通知___Amplify___ap-northeast-1.png

こんな感じで特定のブランチに対するビルド開始・成功・失敗の通知を簡単に作成することができる。
この機能を利用する事により、通知のためのEventBridgeルールがリソース作成されます。

ルール___Amazon_EventBridge___ap-northeast-1.png

このEventBridgeルールをカスタマイズします。
作成されたEventBridgeルールのターゲットを確認すると、メール通知用のSNSトピックが登録されています。
ここに新たなルールを追加します。

「ターゲット」の「編集」をクリックし、「別のターゲットを追加」をクリックすることで、ビルドの実行タイミングに合わせたトリガールールを追加できます。

ルールを編集___ターゲットを選択___Amazon_EventBridge___ap-northeast-1.png

ここでターゲットをCloudWatchロググループを選択(または新規作成)してください。

これにより、指定のロググループにビルドの実行ログを出力することができます。
(出力されるログはこんな感じ↓)

CloudWatch___ap-northeast-1.png

続いて、先程のCloudWatchロググループを入力ソースに、Grafanaでの見える化を実施します。

Grafanaを準備する

まずGrafanaを用意します。
今回は検証用にGrafanaを簡単に用意するので、Dockerコンテナを利用しました。

以下の docker-compose.yaml を作成し、

docker-compose.yaml
version: "3.8"
services:
  grafana:
    image: grafana/grafana-enterprise
    container_name: grafana
    restart: unless-stopped
    ports:
      - '3011:3000'
    volumes:
      - grafana-storage:/var/lib/grafana
      - grafana-config:/etc/grafana
      - grafana-logs:/var/log/grafana

volumes:
  grafana-storage:
    driver: local
  grafana-config:
    driver: local
  grafana-logs:
    driver: local

docker compose up -d を実行するだけで、 http://localhost:3011/ にアクセスすることでGrafanaにアクセスできます。
(初期パスワードはadmin/adminです)

image.png

※一旦見づらいので、ホーム>「管理」>「一般」>「デフォルトの設定」から日本語化しています。

image.png

GrafanaからAWS CloudWatchにアクセスできるようにする。

ではまず最初にAWS CloudWatchにアクセスできるようにしましょう。
「新しい接続を追加」からCloudWatchを検索し選択します。

image.png

「Add new data source」して

image.png

AWSへの認証情報を追加してSave&Testで終了です。
(※簡単のため、アクセスキーによる認証を使っています。きちんとやるときはIAMロールなどによる認証を利用してください。)

認証に成功すると、以下の表示が見え、ログをクエリや集計ができるようになります。

image.png

データを可視化する

これでログに対するアクセスができるようになったので、「Exploreビュー」からログを抽出、見える化してみましょう。

基本的にクエリを投げる方法はCloudWatchのクエリの投げ方と同一です。
クエリ記述文法自体は割愛しますが、ここもMCPなどを経由して簡単に記述・利用できるようになるはずなので、そちらも今度トライしてみます。

今回は 日別のデプロイ成功回数をグラフで見える化 してみるので、そのためのクエリを書きます。

# 例:日別のビルド成功回数を集計
fields @timestamp, detail.jobStatus
| filter detail.jobStatus = 'SUCCEED'
| stats count() as builds by bin(1d)

ではまず「Exploreビュー」に進みます。

今回はCloudwatch Logsにクエリを投げるのでそちらを選択。

image.png

「Select log groups」をクリックすると、先程疎通させたAWSアカウントのロググループを確認することができます。

探検_-cloudwatch-_Grafana.png

先ほど新規に追加したロググループを選択して「Add Log Groups」をクリック。

以下のように対象期間やクエリ文を入力してクエリを実行すると、以下のように該当のデータの抽出と可視化が実行されます。

探検_-cloudwatch-_Grafana.png

「ダッシュボード」からもほぼ同様の事ができます。
見せ方もGrafanaがサジェストしてくれたり、そのままダッシュボードに追加したりできるので、こちらのほうが便利そうですね。

Edit_panel_-New_dashboard-ダッシュボード-_Grafana.png


以上です。

今回の内容だけではGrafanaを利用するメリットは限定的(CloudWatch標準で十分)ですが、
他の指標であったりをまとめてダッシュボードに乗せたり、見える化をよりリッチな見せ方にする場合はGrafanaの機能に乗っかるので良いかなと思いました。
(指標に関するJSONなどを返すAPIなどがあれば、それも取り込んだり柔軟にできるようです。)

クエリやダッシュボードの形成がやや慣れが必要そうですが、GrafanaのMCPもあるので、そういったものを活用して簡単見える化が実践できる(はず)と感じました。
そちらも調査してみたいと思います。

最後まで読んでいただきありがとうございました!

4
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?