

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon Managed Service for Prometheus 中管理查詢成本
<a name="query-insights-control"></a>

Amazon Managed Service for Prometheus 透過限制單一查詢可以使用的查詢範例處理量 (QSP)，提供限制查詢成本的能力。您可以設定兩種類型的 QSP 閾值、*警告*和*錯誤*，以協助有效管理和控制查詢成本。

當查詢達到*警告*閾值時，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>

您可以在 Amazon Managed Service for Prometheus 主控台或 CLI AWS 中呼叫 `create-query-logging-configuration `API 請求來設定查詢記錄。此 API 內文包含目的地清單，但目前我們僅支援 CloudWatch Logs 做為目的地，而目的地應該只包含一個具有 CloudWatch 組態的元素。

### 先決條件
<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>

您可以使用 AWS 管理主控台 或 登入 Amazon Managed Service for Prometheus 來設定 CloudWatch Logs 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/`。