AWSのAPIレスポンスをそのままGrafanaに表示できるInfinityプラグインを使ってみた

AWSのAPIレスポンスをそのままGrafanaに表示できるInfinityプラグインを使ってみた

2026.03.08

はじめに

GrafanaからAWSのAPIを実行して、その結果をダッシュボードに表示したいと思ったことありませんか?
例えばEC2インスタンスの起動状況をAWS CLIから確認はできるけど、それをダッシュボードにも表示できないかな〜みたいな悩みです。
そしてできればLambdaを経由して..みたいな複雑な構成ではなく、ダッシュボードからAPIを実行するだけ。というシンプルな構成だとより嬉しいですよね。

Grafanaにはそんな要望を実現できるInfinityというプラグインがあります。
今回はInfinityプラグインでAWSのAPIを実行した結果をダッシュボードに表示するということをやってみました。

Infinityプラグインとは

InfinityプラグインはCSV、JSON、XML、GraphQLなどの形式でHTTPS経由の外部データをGrafanaで可視化することができます。
また、認証方式としてAWS認証をサポートしているため、適切なIAM権限さえあれば、Grafanaから直接AWSのAPIをHTTPリクエストとして実行し、その結果をダッシュボードに表示できます。
https://grafana.com/grafana/plugins/yesoreyeram-infinity-datasource/

AWSのアクセスキーを使った接続もサポートされています。
https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/latest/examples/aws/

GrafanaではサポートされていないAWSリソースのデータを取得する場合などに便利ですね。
使い方がわかれば色々と応用できると思います!
それではやってみましょう!

前提

今回の検証はGrafana CloudのVersion 13.0.0-22478626928.patch2 で検証しています。

Infinityプラグイン データソースの作成

それではInfinity プラグインのデータソースを作成してみましょう。

AWSのアクセスキー作成

InfinityでAWSのAPIを実行するにはアクセスキーが必要になります。
まずはAWSでIAMユーザーを作成してアクセスキーを発行します。
InfinityではReadしか実行しないので、今回はEC2のReadOnly権限をアタッチします。

# IAMユーザーを作成
aws iam create-user --user-name <ユーザー名>

# AmazonEC2ReadOnlyAccessポリシーをアタッチ
aws iam attach-user-policy \
  --user-name <ユーザー名> \
  --policy-arn arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess

# アクセスキー発行
aws iam create-access-key --user-name <ユーザー名>

発行されるアクセスキーとシークレットキーは後ほど使用するので控えておきます。

プラグインの有効化

Grafanaのプラグインリストから「Infinity」を検索して画面右上のInstallをクリックします。
CleanShot 2025-10-15 at 21.30.07@2x

データソースの作成

Connections > Add new connection の順に進み、Infinityを検索してデータソースを追加します。
Setup Authenticationをクリックして設定します。
CleanShot 2025-12-30 at 09.57.25@2x
Auth typeで「AWS」を選択して、任意のリージョンを選択します。

Serviceにはサービス名を記載します。サービス名は各サービスのエンドポイントのプレフィックス部分と一致します。(例: EC2なら ec2、Lambdaなら lambda
各サービスのエンドポイントは以下の公式ドキュメントで確認できます。
https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html
控えておいたIAMユーザーのアクセスキー、シークレットキーを入力します。
Allowed hostsにはサービスのエンドポイントを指定します。
今回のEC2の場合は https://ec2.ap-northeast-1.amazonaws.com を追加します。
CleanShot 2026-01-04 at 19.12.27@2x
これで Save & test をクリックしてエラーが出なければプラグインの設定は完了です。

EC2のステータスを取得

データソースができたので、まずはExploreで期待する値が取得できることを確認します。
クエリの設定は以下の通りです。

設定項目
Type XML
Parser JSONata
Source URL
Format Table
Method GET
URL https://ec2.ap-northeast-1.amazonaws.com?Action=DescribeInstances&Version=2016-11-15

CleanShot 2026-03-08 at 15.52.57@2x
EC2の Query API はXML形式でレスポンスを返すため、TypeはXMLを選択しています。
仕組みとしては、URLに対してMethodで指定したHTTPメソッドでリクエストを実行します。
認証はデータソースに設定したアクセスキーを使ってInfinityプラグインが自動で行ってくれるので、URLに認証情報を含める必要はありません。
URLは以下の3つの要素を組み合わせて構成します。

https://{サービスのエンドポイント}?Action={アクション名}&Version={APIバージョン}
要素 決め方 今回の値
エンドポイント {サービス名}.{リージョン}.amazonaws.com ec2.ap-northeast-1.amazonaws.com
Action 各サービスのAPI Referenceで確認 DescribeInstances
Version 各サービスのAPI Referenceで確認 2016-11-15

エンドポイントはサービスごとに異なります。各サービスのエンドポイント一覧は以下で確認できます。
https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html

Action と Version は各サービスの API Reference で確認できます。今回のEC2の場合は以下です。

それでは Run query を実行して、レスポンスの構造を確認してみましょう。
CleanShot 2026-03-08 at 11.54.39@2x
XML形式でレスポンスを受け取れていますね。
あとはこの中から必要な情報を抜き出す処理をしていきます。

Rows/Root の設定

レスポンスの構造が確認できたので、次にRows/Rootを設定してインスタンス単位のデータを取り出します。

EC2 APIのXMLレスポンスは以下のような階層構造になっています。

<DescribeInstancesResponse>
  <reservationSet>
    <item>
      <instancesSet>
        <item>          ← インスタンス単位(ここが欲しい)
          <instanceId>i-xxxx...</instanceId>
          <instanceState>
            <name>running</name>
          </instanceState>
        </item>
      </instancesSet>
    </item>
  </reservationSet>
</DescribeInstancesResponse>

XMLのタグ名をドットで繋いでいくことで、欲しいデータの階層までのパスを指定します。
Rows/Rootに DescribeInstancesResponse.reservationSet.item.instancesSet.item を設定します。
CleanShot 2026-03-08 at 14.04.44@2x
これでインスタンス単位のデータを1行ずつ取り出せるようになりました。

Columns の設定

次にテーブルに表示するカラムを指定します。
DescribeInstances APIのレスポンス要素はAWSの公式ドキュメントで確認できます。
https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html

今回は instanceState 内の name を取得したいので、Columnsに instanceState.name を設定します。
CleanShot 2026-03-08 at 14.24.33@2x
これでEC2のステータスのみを取得できました。

パネル作成

それではステータスを取得する方法が分かったので同じ設定でEC2のステータスを表示するパネルを作成します。
パネルを作る際の注意点としてはデフォルトのままだと、結果がNo dataになります。
CleanShot 2026-03-08 at 14.42.15@2x
これはStatパネルのFieldフィルターの仕組みで、デフォルトのNumeric Fieldsでは数値型のフィールドだけを表示対象にします。
EC2のステータス(running, stopped)は 文字列(String)なので、Numeric Fields フィルターに引っかからず No data になります。
そこで、FieldsをNumeric FieldsからStateに変更すると、「State」という名前のカラムを明示的に指定したことになり、文字列でも表示されるようになります。
やってみましょう。
CleanShot 2026-03-08 at 14.31.51@2x
現在のステータスであるstoppedが表示されましたね。
めでたしめでたし。と言いたいところですが、ついでにstoppedの場合は赤色、runningの時は緑色としておきましょう。
Panel options > Value mappings の順で値と色をマッピングします。
今回は
running → 緑
stopped → 赤
としておきます。
CleanShot 2026-03-08 at 14.45.14@2x
UpdateをクリックするとStoppedが赤色で表示されるようになります。
CleanShot 2026-03-08 at 14.45.33@2x
これで現在の状態が一目で分かるようになりました。
異常な値の場合は赤色にしておくなど、ちょっとした工夫をしておくことで、異常に気づきやすいダッシュボードになります。

JSON形式の例: Lambda関数のランタイムを取得

EC2はXML形式でしたが、AWSサービスによってはJSON形式でレスポンスを返すものもあります。
ここではJSON形式の例として、Lambda関数の一覧を取得してみます。
XML形式かJSON形式かはAPI Referenceに記載されています。

運用の観点では、Lambda関数のランタイムバージョンは定期的に確認しておきたい項目です。
Lambdaのランタイムにはサポート期限があり、非推奨になったランタイムではセキュリティパッチが適用されなくなります。
ダッシュボードで一覧表示しておくことで、アップデートが必要な関数に気づきやすくなります。

データソースの設定

基本的にはEC2の設定と同じなので割愛しますが、
Lambdaの場合はServiceとAllowed hostsを以下のように設定します。

設定項目
Service lambda
Allowed hosts https://lambda.ap-northeast-1.amazonaws.com

また、IAMユーザーには AWSLambda_ReadOnlyAccess ポリシーをアタッチしています。

クエリの設定

LambdaはREST API形式のため、EC2のQuery APIとはURLの構成が異なります。
パスにAPIバージョンとリソースを指定する形式です。

設定項目
Type JSON
Parser JSONata
Source URL
Format Table
Method GET
URL https://lambda.ap-northeast-1.amazonaws.com/2015-03-31/functions

CleanShot 2026-03-08 at 16.18.33@2x 1
EC2との違いとして、レスポンスがJSON形式なのでTypeはJSONを選択します。

Rows/Root と Columns の設定

ListFunctions APIのレスポンスは以下のようなJSON構造です。

{
  "Functions": [
    {
      "FunctionName": "lambda-promtail",
      "Runtime": "provided.al2023",
      ...
    },
    {
      "FunctionName": "my-function",
      "Runtime": "python3.9",
      ...
    }
  ]
}

JSON形式の場合、XMLのように深いネストを辿る必要がなく、シンプルにキー名を指定するだけです。
Rows/Rootには Functions を設定して、Columnsにはランタイム監視に必要な項目を設定します。

Selector as Type
FunctionName Function Name String
Runtime Runtime String

JSON形式はXMLと比べてRows/RootやColumnsの指定がシンプルですね。
API Referenceのレスポンス構造がそのままキー名になるので直感的です。
それでは実際にクエリを実行してみましょう。
CleanShot 2026-03-08 at 19.05.19@2x
関数名とランタイムの一覧が表示できました。
JSON形式で出力されるAWSサービスについてもInfinityプラグインでAPIの実行結果を表示できることが確認できました。

まとめ

今回はGrafana Infinityプラグインを使ってAWSのAPIをダッシュボードに表示することができました。
AWSサービスによってレスポンス形式が異なるため、事前にAPI Referenceを確認しておいた方が良さそうです。
Infinityプラグインは今回紹介したEC2やLambda以外のAWSサービスにも同じ要領で使えます。
AthenaやTimestreamなどGrafanaが提供しているデータソース以外のカバーしきれないデータを取得したい場合に活用してみてください。

この記事をシェアする

FacebookHatena blogX

関連記事