概要

AWSを利用する上でコストを分析することはコスト削減のために重要です。
今回は、AWSのコストを可視化して監視する方法をお伝えします。

AWS Cost ExplorerはAWSの利用で発生するコストに関する情報を取得することができるサービスであり、コスト分析に対する強力なツールとなります。
例えば、他のサービスの使用状況やコストについての情報と組み合わせて、グラフを作成することは開発コストの分析に効果的です。

このような他のサービスのデータと組み合わせた分析や、日々更新されるデータを自動で分析するにはデータ分析基盤へのデータ統合を行い、このデータに基づいたグラフや表による可視化が有効です。
そこで今回は、trocco®という分析基盤向けデータ統合サービスを使い、レポートデータの自動取得、DWH(Amazon Redshift)への統合、最後にLookerを用いたデータの可視化までやってみようと思います。

今回、データの転送手段として採用したtrocco®は、AWS Cost Explorerの他にも、様々な広告・CRM・DBなどのデータソースに対応しています。

AWS Cost ExplorerのデータをAmazon Redshiftへ転送

ゴール

↓画像のようにグラフをまとめたものをほとんどコーディング作業なしに作成します。(作成後は自動で最新値に更新することも可能です)

完成ボード.png

こんな人におすすめ

  • AWS Cost Explorerを利用しており、分析基盤やデータウェアハウスへのデータ移行を考えている方
  • 様々なサービス利用に関する情報をまとめて管理したい方
  • 各サービスのデータを管理画面から取得する作業に疲れている方

1. DWHと同期する手段の決定

1-1. DWHの決定

まずはデータを集約する場所である、DWH(データウェアハウス)を選定します。

  • Amazon Redshift
  • Google BigQuery
  • MySQLやPostgreSQL など

trocco®はいずれのサービスにも対応していますが、今回はAmazon Redshiftを利用することにします。

1-2. AWS Cost ExplorerのデータをAmazon Redshiftに転送する4つの方法

Amazon Redshiftにデータを集約することが決まったので、続いては転送するための手段を検討します。

  1. AWS Cost Explorerのデータを管理画面からダウンロードし、手動でAmazon Redshiftにアップロードする
  2. AWS Cost ExplorerとAmazon Redshiftの各APIを利用したプログラムを書いて連携する
  3. Embulkを利用して自分で環境を構築する
  4. trocco®を利用し、画面上で設定する

1 は単発の実行であれば問題はありませんが、日々利用データを取り込んでモニタリングすることを考えると非効率な作業になります。
2 は連携を始める前にAPIについてのキャッチアップ、プログラムをいて環境を構築する時間がかかり、エラー対応などの運用工数が継続的に発生します。
32 と同じくEmbulkはある程度の専門知識が必要になり、自分で環境構築・運用を行うため、手間が発生します。加えてエラーの内容が少し専門的なためエラーの解消に時間が取られる可能性があります。
そこで今回はEmbulkの課題も解決し、プログラムを書かずに画面上の設定のみで作業が完結する、4 のtrocco®を利用します。

2. trocco®でAWS Cost Explorer → Amazon Redshiftの転送自動化

2-0. 事前準備

データの転送のためにはtrocco®のアカウント・AWSのアカウントが必要です。
trocco®はクレジットカード登録不要・無料のフリープランを提供しているので、事前に登録しておきましょう。
https://trocco.io/lp/inquiry_free.html

2-1. 転送元・転送先を決定

trocco®にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。

qiita_20200827_2.png

転送元に「AWS Cost Explorer」を指定し、転送先に「Amazon Redshift」を選択して転送設定作成ボタンを押します。

image.png

設定画面になるので、必要な情報を入力していきます。

2-2. AWS Cost Explorerとの連携設定

trocco®には社内のユーザー間でチームを作成し、チーム内で転送設定を共有する機能があります。他のメンバーにもなんの転送設定かわかるように転送設定の名前とメモを入力します。

image.png

次に「転送元の設定」内の「接続情報を追加」ボタンを押します。

image.png

別タブで接続情報の新規作成画面が開きますので、必要事項を記入して保存ボタンを押します。

image.png

再度転送設定画面に戻り、接続情報の「再読込」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。

image.png

これでAWS Cost Explorerとの連携は完了です。

2-3. AWS Cost Explorerからのデータ抽出設定

次に、どのようなデータを取得するかを設定していきます。
ここではNetUnblededCostのデータを取得してみます。
指標で「NetUnblededCost」を指定し、データ取得期間を指定します。

image.png

2-4. 転送先AmazonRedshiftの設定

転送元と同様に設定していきます。
転送先とするデータベース名、スキーマ、テーブルを設定します。
また、一時的にデータを保存するS3バケットとプレフィックスを指定してください。
最後に転送モードを選択します。insertとすることでテーブルにデータを追加することができます。

image.png

これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。

2-5. データのプレビュー

少し待つと、転送元のデータがプレビューされます。ここではAWS Cost Explorerから取り込んだデータが表示されています。

プレビュー画面.png

転送したいデータが取れているので、このまま「確認画面へ」で次に進みます。
次の画面では転送設定の内容確認を行うので、設定の確認が終了したら右下の「適用」のボタンを押します。

2-6. スケジュール・通知設定

「スケジュール・トリガー設定」タブを開きます。

転送設定_スケジュールトリガー.png

「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。

転送設定詳細_スケジュール登録.png

2-7. データ転送ジョブの実行

設定は以上です。最後に、手動で転送ジョブを実行し、Amazon Redshiftにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。

転送設定_転送実行.png

これで転送は完了です。

3. Amazon Redshiftの設定

Amazon Redshift側で特に操作することはありませんが、プレビューを確認してみると確かにデータが転送されています。

Redshift_preview.png

4. Lookerで可視化

それでは、これらのデータをLookerで可視化していきます。

まずはAmazon RedshiftとLookerを接続の設定を行います。
管理タブを開いて「Database」の「Connections」を開きます。

貼り付けた画像_2020_11_02_16_02.png

接続しているデータベース一覧が表示されています。ここで「Add Connection」→「Database Connection」から接続するデータベース情報を入力します。

貼り付けた画像_2020_11_02_16_06.png
貼り付けた画像_2020_11_02_16_06.png

Amazon Redshiftのデータベースに接続できたら、次はデータを可視化するために必要なLookMLプロジェクトを作成していきます。

開発タブを開いて「LookMLプロジェクトの管理」に移動します。

貼り付けた画像_2020_11_02_16_09.png

「New LookML Project」から新しいLookMLプロジェクトを作成します。

貼り付けた画像_2020_11_02_15_51.png
looker_New_Project.png

「Create Project」を押したら、エディタでmodelとviewを定義します。
後々必要になるので、modelの中ではexploreを設定しておきましょう。
(書き方が分からない場合はLookerの公式ドキュメントを参照してください)

looker_model.png
looker_view.png

これでグラフを作る準備が整いました。
トップページに戻って「New」からDashboardを作成します。

貼り付けた画像_2020_11_02_16_18.png

白紙のダッシュボードができました。ここに各種グラフを追加していきます。まず「Dashboardの編集」を押します。

dashboardの編集.png

続いて、「タイルの追加」を押して、新しいグラフを作成していきます。

タイルの追加.png

先ほどのmodel内で定義したExploreを選択します。

explorerを選択.png

DIMENSIONSにグラフの横軸に表示したいデータ、MEASURESにグラフの縦軸に表示したいデータを設定し、Tileに表示したいデータをプロットします。ここでは日毎のコストをまとめてみます。

tileを作成.png

これで一つTileが完成しました。この調子で他のTileも作成すると、今回のゴールであるAWS Cost Explorerのデータダッシュボードが出来上がります。

tile完成2.png
完成ボード.png

まとめ

いかがでしたでしょうか。trocco®を使うとAWS Cost Explorerの管理画面を触ることなく、簡単にデータを取得し、DWH(今回はAmazon Redshift)に統合することが出来ます。
またAmazon Redshiftにデータを統合し、Lookerと連携することでデータを使ってグラフを作り、可視化できます。

実際に試してみたい場合は、クレジットカード不要のフリープランや無料の製品資料を提供しているので、この機会にぜひ一度お試しください。

hirokazu.kobayashi

慶應義塾大学卒業後、2014年より株式会社リブセンスへ入社。データエンジニアとして同社分析基盤立ち上げをリードする。2017年より現職primeNumberに入社。自社プロダクト「systemN」におけるSpark/Redshift活用等のデータエンジニアリング業務を行うかたわら、データ統合業務における工数削減が課題だと感じ、データ統合を自動化するサービス「trocco®」を立ち上げる。