AWS および Azure の高度なクエリサポート

  • リリースバージョン: Yokohama
  • 更新日 2025年07月31日
  • 所要時間:4分
  • サービスオブザーバビリティダッシュボードチャートの高度なクエリを作成する方法を理解します。

    サービスオブザーバビリティ の高度なクエリは、ほとんどのベンダー固有のクエリ言語をサポートしています。APM チャートからクエリをコピーし、 サービスオブザーバビリティ の [詳細クエリ] フィールドに貼り付けるだけです。ただし、AWS および Azure へのクエリは JSON 形式にし、このトピックで説明されているガイドラインに従う必要があります。

    AWS 詳細クエリ

    AWS からのデータは、 GetMetricData API を使用してアクセスされます。クエリは、その API への JSON 形式の直接要求、または DashboardBody メトリクスウィジェットの形式のいずれかです。たとえば、AWS CloudWatch ダッシュボードに存在するチャートのウィジェット表現を使用できます。

    直接 GetMetricData 要求

    次の例は、ELB インスタンスの平均 CPU 使用率を表示するグラフの GetMetricData JSON クエリを示しています。

    { 
    
        "StartTime": 1637061900, // can be replaced with “${START}” 
        "EndTime": 1637074500, // can be replaced with “${END}” 
        "MetricDataQueries": [ 
            { 
                "Expression": "SELECT AVG(CPUUtilization) FROM SCHEMA(\"AWS/EC2\", InstanceId)", 
                "Id": "q1", 
                "Period": 300, 
                "Label": "Cluster CpuUtilization" 
            }, 
            { 
                "Id": "m1", 
                "Label": "Unhealthy Behind Load Balancer", 
                "MetricStat": { 
                    "Metric": { 
                        "Namespace": "AWS/ApplicationELB", 
                        "MetricName": "UnHealthyHostCount", 
                        "Dimensions": [ 
                            { 
                                "Name": "LoadBalancer", 
                                "Value": "app/EC2Co-EcsEl-EXAMPLE69Q/fdd2210e799e4376" // can be replaced with “${ENTITIES}” or “${ENTITIES_ELB}” 
                            } 
                        ] 
                    }, 
                    "Period": 300, 
                    "Stat": "Average" 
                } 
            } 
        ] 
    } 

    AWS CloudWatch ダッシュボード内の 1 つのオブジェクトのコピーされたソース

    この例は、CloudWatch ダッシュボードの [ソース] ビューのウィジェットリストの 1 つのオブジェクトから直接コピーされた JSON を示しています。

    {
      "type": "metric",
      "x": 9,
      "y": 0,
      "width": 15,
      "height": 5,
      "properties": {
        "view": "timeseries",
        "metrics": [
          [ "AWS/ApplicationELB", "RequestCountPerTarget", "TargetGroup", "targetgroup/api-tg/1e3dc9z72fe21ca2", "AvailabilityZone", "us-west-1a" ],
          ["...", "targetgroup/api-tg-cs/82a1db5f950073e1", ".", "." ]
        ],
        "region": "us-west-1"
      }
    }
    どちらのタイプのクエリでも、テンプレート変数を使用して、一連のエンティティ、または UI で選択された開始時間と終了時間を表すことができます。たとえば、単一の ELB インスタンスをクエリする代わりに、LoadBalancer ディメンションの [値] フィールドを ${ENTITY_ELB} に置き換えることができます。クエリは、 サービスオブザーバビリティ UI で選択したサービスに関連付けられている各 ELB インスタンスに対して実行されます。グラフには、それぞれの時系列が表示されます。
    注:
    CloudWatch ダッシュボードのソースからコピーされた JSON オブジェクトには、明示的な時間フィールドは含まれません。サービスオブザーバビリティ UI の時間ピッカーの値が自動的に使用されます。
    表 : 1. テンプレート変数
    AWS フィールド テンプレート変数
    ディメンション[n]。値
    • エンティティ
    • ENTITIES_HOST
    • ENTITIES_LAMBDA
    • ENTITIES_API_GATEWAY_HTTP
    • ENTITIES_API_GATEWAY_REST
    • ENTITIES_ELB
    • ENTITIES_RDS

    ディメンション[n]。値フィールドはリソース識別子キーである必要があります。

    開始時間 開始
    終了時間 終了

    Azure 詳細クエリ

    Azure ベースのチャートの高度なクエリを実行するには、Azure UI からソースをコピーして [ 詳細クエリ ] フィールドに貼り付けます。

    ソースをコピーするには:
    1. Azure UI で、ダッシュボードをエクスポートしてダウンロードします。
    2. 1 つのグラフの JSON をコピーします。チャートは properties.lenses[i].parts[j].metadata.settings.content.options.chart にあります。
    3. JSON をクエリフィールドに貼り付けます。JSON には、少なくとも次のものが含まれている必要があります。
      ``` 
      { 
      “metrics”: [ 
        “name”: string, 
        “resourceMetadata”: { 
          “id”: string 
          } 
        ] 
      } 
      ``` 
      id フィールドは、Azure リソース ID またはテンプレート変数のいずれかである必要があります。