Grafana Cloud で可視化する
Grafana は、マルチプラットフォーム対応のオープンソース分析・監視ソリューションです。オブザーバビリティに Grafana を使用している場合、データソースとして DoiT Reports API のエンドポイントを追加すると、イベント・クラウドコスト・アラートを単一の画面で把握できます。
このチュートリアルでは、Grafana のダッシュボードで DoiT Reports API のデータを可視化する方法を説明します。
前提条件
-
有効な DoiT API キーを保有していること。
-
Grafana Cloud アカウントを保有し、Grafana の可視化に関する基本的な知識があること。
目標
このチュートリアルでは、次の内容を学びます。
-
Grafana のダッシュボードに DoiT API キーを追加する。
-
Cloud Analytics レポートのリソース ID を見つける。
-
Infinity データソースプラグインを使用して JSON データを可視化する。
このチュートリアルでは、例としてプリセットの Cost by Top AWS Accounts レポートを使用します。
手順 1:Grafana ダッシュボードを設定する
-
Grafana Cloud で新しいダッシュボードを追加します。
-
Grafana 用の Infinity データソースプラグインをインストールします。
-
カスタム変数を追加します。変数名を
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のペアをタイムスタンプの下にグループ化する。
-
-
可視化を選択して設定します。以下はスタッキングを使用した棒グラフのビジュアル表現の例です。
