Grafana Cloud で可視化する
Grafana は、マルチプラットフォーム対応のオープンソース分析・監視ソリューションです。観測基盤として Grafana を使用している場合、DoiT Reports API のエンドポイントをデータソースとして追加すると、イベント・クラウドコスト・アラートを単一の画面で確認できます。
このチュートリアルでは、Grafana のダッシュボードで DoiT Reports API のデータを可視化する方法を説明します。
前提条件
-
有効な DoiT API key を保有していること
-
Grafana Cloud アカウント を保有し、Grafana による可視化に習熟していること
目的
このチュートリアルでは、次の方法を学びます。
-
DoiT API key を Grafana のダッシュボードに追加する
-
Cloud Analytics(クラウド分析)のレポートのリソース ID を特定する
-
Infinity データソースプラグインを使用して JSON データを可視化する
このチュートリアルでは、プリセットの Cost by Top AWS Accounts レポートを例として使用します。
ステップ 1:Grafana ダッシュボードをセットアップする
-
Grafana Cloud で新しいダッシュボードを追加します。
-
Infinity データソースプラグイン for Grafana をインストールします。
-
カスタム変数を追加 します。変数名を
doit_api_key、値をBearer {YOUR_DOIT_API_KEY}に設定します。
ステップ 2:レポートのリソース ID を取得する
-
DoiT コンソール にサインインします。
-
AWS Intelligence ダッシュボード に移動し、Cost by Top AWS Accounts ウィジェ ットを見つけてレポート全体を開きます。
-
URL の最後のセグメント(現在のレポートのリソース ID)を控えます。

-
(任意)DoiT API が返すレポートデータの形式を確認します。
-
DoiT Developer Hub にサインインします。
-
Get report results の API リファレンスページに移動します。
-
パスパラメータにリソース ID を入力します。Try it を選択して API リクエストを実行します。

-
レスポンスを確認します。
Get report results: Example response
JSON レスポンスボディの result オブジェクトには、クエリや変換で重要となる次の 2 項目が含まれます。
- schema:データ構造に関するメタデータ
- rows:データ本体
"result": {
"schema": [
{
"name": "project_id",
"type": "string"
},
{
"name": "year",
"type": "string"
},
{
"name": "month",
"type": "string"
},
{
"name": "cost",
"type": "float"
},
{
"name": "timestamp",
"type": "timestamp"
}
],
"rows": [
[
"123123123123",
"2025",
"04",
99.10132309182815,
1743465600
],
[
"456456456",
"2025",
"02",
620.7188140879603,
1738368000
],
... -
ステップ 3:Grafana のダッシュボードにパネルを追加する
-
ダッシュボードで新しいパネルを追加します。
-
パネルを設定し、データソースに grafanacloud-infinity を選択します。
-
パネル設定を指定します:Type:
JSON・Parser:UQL・Source:URL・Format:Time Series
-
API エンドポイントを構成します。
-
Method:
GET・URL:https://api.doit.com/analytics/v1/reports/{id} -
HTTP Headers:URL options で HTTP ヘッダーを追加します。Key:
Authorization・Value:$doit_api_key
-
ステップ 4:データをクエリして可視化する
パネルの構成で次を実行します。
-
返却された JSON データを Grafana の可視化に適した形式へ変換する UQL クエリを追加します。
ヒント以下の UQL クエリは、プリセットの Cost by Top AWS Accounts レポートの JSON スキーマに基づいています。別のスキーマのデータを可視化する場合は、返却された JSON を確認し、適切なクエリを作成してください。こうした用途には JSONata Exerciser が便利です。
parse-json
| jsonata "$map( $distinct($map($.result.rows, function($r) { $r[-1] })), function ($ts) { $merge([ { 'timestamp': $ts }, $merge($map($filter($.result.rows, function($r) { $r[-1] = $ts }), function($r) { $map( [ $merge($map($r, function($v, $i) { { $.result.schema[$i].name: $v } })) ], function($o) { { $o.project_id: $o.cost } })[0] })) ]) })"
| extend "timestamp"=unixtime_seconds_todatetime("timestamp")UQL クエリ内の
jsonata式は、$.result.schemaを使用してカラム名を取得します。この例ではproject_id、cost、timestampというカラムがあります。Grafana はタイムスタンプが重複する行がある場合に棒グラフをスタックしないため、各タイムスタンプにつき 1 行のみとなるよう、クエリで次の処理を実施します。
-
すべてのユニークなタイムスタンプを特定する
-
各ユニークなタイムスタンプについて、そのタイムスタンプを共有するすべての行を見つけ、各行の
project_idとcostを抽出し、project_id: costのペアをそのタイムスタンプの下にグループ化する
-
-
可視化を選択して構成します。以下はスタッキングを有効にした棒グラフの可視化の例です。
