

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Managed Service for Prometheus でのクエリコストの管理
<a name="query-insights-control"></a>

Amazon Managed Service for Prometheus では、1 つのクエリで使用できるクエリサンプル処理 (QSP) の量を制限することにより、クエリコストを制限できます。QSP には、*警告*と*エラー*の 2 種類のしきい値を設定して、クエリコストを効果的に管理および制御できます。

クエリが*警告*しきい値に達すると、API クエリレスポンスに警告メッセージが表示されます。Amazon Managed Grafana を介して表示されるクエリの場合、警告は Amazon Managed Grafana UI に表示され、ユーザーが高価なクエリを識別するのに役立ちます。*エラー*しきい値に達したクエリは課金されず、エラーで拒否されます。

Amazon Managed Service for Prometheus は、クエリスロットリングに加えて、クエリパフォーマンスデータを CloudWatch Logs に記録する機能を提供します。この機能を使用すると、クエリを詳細に分析できるため、Amazon Managed Service for Prometheus クエリを最適化し、コストをより効果的に管理できます。クエリログ記録は、指定されたクエリサンプル処理 (QSP) しきい値を超えるクエリに関する情報をキャプチャします。このデータは CloudWatch Logs に発行されるため、クエリのパフォーマンスを調査および分析できます。ログ記録されたクエリには、API クエリとルールクエリの両方が含まれます。デフォルトでは、不要な CloudWatch Logs の使用を最小限に抑えるために、クエリログ記録は無効になっています。この機能は、クエリ分析に必要なときに有効にできます。

**Topics**
+ [クエリログ記録の設定](#query-logging)
+ [クエリスロットリングしきい値の設定](#query-throttling-thresholds)
+ [ログの内容](#log-content)
+ [制限事項](#limitations)

## クエリログ記録の設定
<a name="query-logging"></a>

`create-query-logging-configuration `API リクエストを呼び出すことで、Amazon Managed Service for Prometheus コンソールまたは AWS CLI でクエリログを設定できます。この API 本文には送信先のリストが含まれていますが、現時点では、送信先として CloudWatch Logs のみがサポートされており、送信先には CloudWatch 設定で 1 つの要素のみを含める必要があります。

### 前提条件
<a name="CW-vender-query-logs-prerequisites"></a>

`logGroup` が既に作成されていることを確認します。設定に使用される ID またはロールには、次のポリシーまたは同等のアクセス許可が必要です。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
"Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups",
                "aps:CreateQueryLoggingConfiguration",
                "aps:UpdateQueryLoggingConfiguration",
                "aps:DescribeQueryLoggingConfiguration",
                "aps:DeleteQueryLoggingConfiguration"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### CloudWatch Logs を設定する。
<a name="configure-cloudwatch-logs"></a>

CloudWatch Logs を設定するには、 AWS マネジメントコンソール または を使用して Amazon Managed Service for Prometheus にログインします AWS CLI。

**Amazon Managed Service for Prometheus コンソールを使用してクエリログ記録を設定するには**

1. ワークスペースの詳細パネルの **[ログ]** タブに移動します。

1. **[クエリインサイト]** で、**[作成]** を選択します。

1. **[ロググループ]** のドロップダウンを選択し、ログを発行するロググループを選択します。

   CloudWatch コンソールで新しいロググループを作成することもできます。

1. **[しきい値 (QSP)]** を入力します。

1. **[保存]** を選択します。

**を使用してクエリログを設定するには、 コマンド AWS CLI を使用します。**

```
aws amp create-query-logging-configuration \
--workspace-id {{my_workspace_ID}} \
--destinations '[{"cloudWatchLogs":{"logGroupArn":"{{$my-log-group-arn}}"},"filters":{"qspThreshold":{{$qspThreshold}}}}]'
```

オペレーションを更新、削除、記述する方法については、「[Amazon Managed Service for Prometheus API リファレンス](https://docs.aws.amazon.com/prometheus/latest/APIReference/Welcome.html)」を参照してください。

## クエリスロットリングしきい値の設定
<a name="query-throttling-thresholds"></a>

QSP しきい値を設定するには、[QueryMetrics API](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-APIReference-QueryMetrics.html) でクエリパラメータを指定する必要があります。
+ max\_samples\_processed\_warning\_threshold – 処理されたクエリサンプルの警告しきい値を設定します
+ max\_samples\_processed\_error\_threshold – 処理されたクエリサンプルのエラーしきい値を設定します

Amazon Managed Grafana ユーザーの場合、grafana データソース設定を使用して、データソースからのすべてのクエリに制限を適用できます。

1. Amazon Managed Grafana の Amazon Managed Service for Prometheus データソースを参照します。

1. **[カスタムクエリパラメータ]** で、しきい値ヘッダーを追加します。

1. **[保存]** を選択します。

## ログの内容
<a name="log-content"></a>

ルールからのクエリの場合、CloudWatch Logs にクエリに関する次の情報が表示されます。

```
{
    workspaceId: "workspace_id",
    message: {
        query: "avg(rate(go_goroutines[1m])) > 1",
        name: "alert_rule",
        kind: "alerting",
        group: "test-alert",
        namespace: "test",
        samples: "59321",
    },
    component: "ruler"
}
```

API コールから発生するクエリの場合、CloudWatch Logs にクエリに関する次の情報が表示されます。

```
{
    workspaceId: "ws-5e7658c2-7ccf-4c30-9de9-2ab26fa30639",
    message: {
        query: "sum by (instance) (go_memstats_alloc_bytes{job=\"node\"})",
        queryType: "range",
        start: "1683308700000",
        end: "1683913500000",
        step: "300000",
        samples: "11496",
        userAgent: "AWSPrometheusDPJavaClient/2.0.436.0 ",
        dashboardUid: "11234",
        panelId: "12"
    },
    component: "query-frontend"
}
```

## 制限事項
<a name="limitations"></a>

**ポリシーサイズ制限** – CloudWatch Logs リソースポリシーは 5120 文字に制限されています。CloudWatch Logs は、ポリシーがサイズ制限に近づいていることを検出すると、`/aws/vendedlogs/` で始まるロググループを自動的に有効にします。ログ記録を有効にする場合、Amazon Managed Service for Prometheus は、指定されたロググループで CloudWatch Logs リソースポリシーを更新する必要があります。CloudWatch Logs リソースポリシーのサイズ制限に達しないようにするには、CloudWatch Logs ロググループ名の先頭に `/aws/vendedlogs/` というプレフィックスを付けてください。