メインコンテンツへスキップ

Grafana Cloud で可視化する

Grafana は、マルチプラットフォーム対応のオープンソース分析・監視ソリューションです。観測基盤として Grafana を使用している場合、DoiT Reports API のエンドポイントをデータソースとして追加すると、イベント・クラウドコスト・アラートを単一の画面で確認できます。

このチュートリアルでは、Grafana のダッシュボードで DoiT Reports API のデータを可視化する方法を説明します。

前提条件

目的

このチュートリアルでは、次の方法を学びます。

  • DoiT API key を Grafana のダッシュボードに追加する

  • Cloud Analytics(クラウド分析)のレポートのリソース ID を特定する

  • Infinity データソースプラグインを使用して JSON データを可視化する

注意

このチュートリアルでは、プリセットの Cost by Top AWS Accounts レポートを例として使用します。

ステップ 1:Grafana ダッシュボードをセットアップする

  1. Grafana Cloud で新しいダッシュボードを追加します。

  2. Infinity データソースプラグイン for Grafana をインストールします。

  3. カスタム変数を追加 します。変数名を doit_api_key、値を Bearer {YOUR_DOIT_API_KEY} に設定します。

    Grafana に API キーを変数として追加

ステップ 2:レポートのリソース ID を取得する

  1. DoiT コンソール にサインインします。

  2. AWS Intelligence ダッシュボード に移動し、Cost by Top AWS Accounts ウィジェットを見つけてレポート全体を開きます。

  3. URL の最後のセグメント(現在のレポートのリソース ID)を控えます。

    リソース ID

  4. (任意)DoiT API が返すレポートデータの形式を確認します。

    1. DoiT Developer Hub にサインインします。

    2. Get report results の API リファレンスページに移動します。

    3. パスパラメータにリソース ID を入力します。Try it を選択して API リクエストを実行します。

      リソース ID

    4. レスポンスを確認します。

    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 のダッシュボードにパネルを追加する

  1. ダッシュボードで新しいパネルを追加します。

  2. パネルを設定し、データソースに grafanacloud-infinity を選択します。

  3. パネル設定を指定します:TypeJSONParserUQLSourceURLFormatTime Series

    パネル設定を構成

  4. API エンドポイントを構成します。

    • MethodGETURLhttps://api.doit.com/analytics/v1/reports/{id}

    • HTTP HeadersURL options で HTTP ヘッダーを追加します。KeyAuthorizationValue$doit_api_key

      URL オプション

ステップ 4:データをクエリして可視化する

パネルの構成で次を実行します。

  1. 返却された 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_idcosttimestamp というカラムがあります。

    Grafana はタイムスタンプが重複する行がある場合に棒グラフをスタックしないため、各タイムスタンプにつき 1 行のみとなるよう、クエリで次の処理を実施します。

    1. すべてのユニークなタイムスタンプを特定する

    2. 各ユニークなタイムスタンプについて、そのタイムスタンプを共有するすべての行を見つけ、各行の project_idcost を抽出し、project_id: cost のペアをそのタイムスタンプの下にグループ化する

  2. 可視化を選択して構成します。以下はスタッキングを有効にした棒グラフの可視化の例です。

    棒グラフの可視化(スタッキング)

関連項目