メインコンテンツまでスキップ

Grafana Cloud で可視化する

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

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

前提条件

目標

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

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

  • Cloud Analytics レポートのリソース ID を見つける。

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

注意

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

手順 1:Grafana ダッシュボードを設定する

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

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

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

    Add the API key as a variable in Grafana

手順 2:レポートのリソース ID を取得する

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

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

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

    Resource ID

  4. (任意)DoiT API によって返されるレポートデータの形式を確認します。

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

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

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

      Resource 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

    Configure panel settings

  4. API エンドポイントを設定します。

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

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

      URL options

手順 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. 可視化を選択して設定します。以下はスタッキングを使用した棒グラフのビジュアル表現の例です。

    Bar chart visualization

参照