

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

# 使用 Amazon EKS 叢集中執行的 Grafana 查詢
<a name="AMP-onboard-query-grafana-7.3"></a>

Amazon Managed Service for Prometheus 支援使用 Grafana 7.3.5 及更新版本，以及稍後在 Amazon Managed Service for Prometheus 工作區中查詢指標。7.3.5 版和更新版本包含對 AWS Signature 第 4 版 (SigV4) 身分驗證的支援。

若要設定 Grafana 以使用 Amazon Managed Service for Prometheus，您必須登入具有 **AmazonPrometheusQueryAccess** 政策或 `aps:QueryMetrics`、`aps:GetMetricMetadata`、`aps:GetSeries` 和 `aps:GetLabels` 權限的帳戶。如需詳細資訊，請參閱[IAM 許可和政策](AMP-and-IAM.md)。

## 設定 up AWS SigV4
<a name="AMP-onboard-query-grafana-7.3-sigv4"></a>

Grafana 已新增支援 AWS Signature 第 4 版 (SigV4) 身分驗證的新功能。如需詳細資訊，請參閱[簽章版本 4 簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。依預設，不會再 Grafana 伺服器上啟用此功能。若您正在使用 Helm 在 Kubernetes 叢集上部署 Grafana，則以下為啟用此功能的指示。

**在您的 Grafana 7.3.5 或更新伺服器上啟用 SigV4**

1. 建立新的更新檔案來覆寫您的 Grafana 組態，並將其命名 `amp_query_override_values.yaml`。

1. 將下列內容輸入檔案，然後儲存檔案。將 {{account-id}} 取代為執行 Grafana 伺服器 AWS 的帳戶 ID。

   ```
   serviceAccount:
       name: "amp-iamproxy-query-service-account"
       annotations:
           eks.amazonaws.com/role-arn: "arn:aws:iam::{{account-id}}:role/amp-iamproxy-query-role"
   grafana.ini:
     auth:
       sigv4_auth_enabled: true
   ```

   在該 YAML 檔案內容中，`amp-iamproxy-query-role` 是您將在下一節中建立的角色名稱、[設定服務帳戶的 IAM 角色](#AMP-onboard-query-grafana-7.3-IRSA)。如果您已經建立用於查詢工作區的角色，則可以使用您自己的角色名稱替換此角色。

您稍後將在 [使用 Helm 升級 Grafana 伺服器](#AMP-onboard-query-upgrade-grafana) 中使用此檔案。

## 設定服務帳戶的 IAM 角色
<a name="AMP-onboard-query-grafana-7.3-IRSA"></a>

如果您正在 Amazon EKS 叢集中使用 Grafana 伺服器，建議您針對服務帳戶使用 IAM 角色 (也稱為服務角色) 進行存取控制。當您這樣做將 IAM 角色與 Kubernetes 服務帳戶建立關聯時，服務帳戶就可以提供 AWS 許可給使用該服務帳戶的任何 Pod 中的容器。如需詳細資訊，請參閱[服務帳戶的 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)。

如果您尚未設定這些服務角色以進行查詢，請遵循 [設定服務帳戶的 IAM 角色，以查詢指標](set-up-irsa.md#set-up-irsa-query) 中的指示來設定角色。

然後，您需要在信任關係的條件下新增 Grafana 服務帳戶。

**在信任關係的條件下新增 Grafana 服務帳戶**

1. 在終端機視窗中，判斷 Grafana 伺服器的命名空間和服務帳戶名稱。例如，您可以使用下列命令。

   ```
   kubectl get serviceaccounts -n {{grafana_namespace}}
   ```

1. 在 Amazon EKS 主控台中，針對與 EKS 叢集相關聯的服務帳戶開啟 IAM 角色。

1. 選擇**編輯信任關係**。

1. 更新「**條件**」以包含 Grafana 命名空間，以及您在步驟 1 中的命令輸出中找到的 Grafana 服務帳戶名稱。下列是 範例。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Federated": "arn:aws:iam::{{111122223333}}:oidc-provider/oidc.eks.{{us-east-1}}.amazonaws.com/id/{{EXAMPLED539D4633E53DE1B71EXAMPLE}}"
         },
         "Action": "sts:AssumeRoleWithWebIdentity",
         "Condition": {
           "StringEquals": {
             "oidc.eks.{{us-east-1}}.amazonaws.com/id/{{EXAMPLED539D4633E53DE1B71EXAMPLE}}:sub": [
               "system:serviceaccount:aws-amp:amp-iamproxy-query-service-account",
               "system:serviceaccount:{{grafana-namespace}}:{{grafana-service-account-name}}"
             ],
             "oidc.eks.{{us-east-1}}.amazonaws.com/id/{{EXAMPLED539D4633E53DE1B71EXAMPLE}}:aud": "sts.amazonaws.com"
           }
         }
       }
     ]
   }
   ```

------

1. 選擇**更新信任政策**。

## 使用 Helm 升級 Grafana 伺服器
<a name="AMP-onboard-query-upgrade-grafana"></a>

此步驟會升級 Grafana 伺服器，以使用您在上一節中新增至 `amp_query_override_values.yaml` 檔案的項目。

執行下列命令。如需 Grafana 的 Helm 圖表的詳細資訊，請參閱 [Grafana 社群 Kubernetes Helm Charts](https://grafana.github.io/helm-charts)。

```
helm repo add grafana https://grafana.github.io/helm-charts
```

```
helm upgrade --install grafana grafana/grafana -n {{grafana_namespace}} -f ./amp_query_override_values.yaml
```

## 在 Grafana 中新增 Prometheus 資料來源
<a name="AMP-onboard-query-grafana-7.3-datasource"></a>

下列步驟說明如何在 Grafana 中設定 Prometheus 資料來源，以查詢您的 Amazon Managed Service for Prometheus 指標。

**在您的 Grafana 伺服器中新增 Prometheus 資料來源**

1. 開啟 Grafana 主控台。

1. 在**組態**下方，選擇**資料來源**。

1. 選擇**新增資料來源**。

1. 選擇 **Prometheus**。

1. 針對 HTTP URL，請在 Amazon Managed Service for Prometheus 主控台指定工作區詳細資訊頁面中顯示的**端點 - 查詢 URL**。

1. 由於 Prometheus 資料來源會自動附加該字串，因此請在剛指定的 HTTP URL 中移除附加至 URL 的 `/api/v1/query` 字串，

1. 在**驗證**下，選取 **SigV4 驗證**的切換功能以啟用。

   將**假設角色 ARN** 和**外部 ID** 欄位保留空白。然後針對**預設區域**，選取您的 Amazon Managed Service for Prometheus 工作區所在的區域。

1. 選擇**儲存並測試**。

   您應該看到以下訊息：**資料來源正在運作**

1. 針對新的資料來源測試 PromQL 查詢：

   1. 選擇**探索**。

   1. 執行範例 PromQL 查詢，例如：

      ```
      prometheus_tsdb_head_series
      ```