使用在 Amazon 集群中運行的 Grafana 進行查詢 EKS - Amazon Managed Service for Prometheus

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

使用在 Amazon 集群中運行的 Grafana 進行查詢 EKS

Amazon Managed Service for Prometheus 支援使用 Grafana 7.3.5 及更新版本,以及稍後在 Amazon Managed Service for Prometheus 工作區中查詢指標。7.3.5 及更高版本包括對 AWS 簽名版本 4(SIGv4)身份驗證的支持。

若要設定 Grafana 使用適用於 Prometheus 的 Amazon 受管服務,您必須登入具有AmazonPrometheusQueryAccess政策或aps:QueryMetrics、、aps:GetMetricMetadata和許可的帳戶。aps:GetSeries aps:GetLabels如需詳細資訊,請參閱IAM 許可和政策

設定第四 AWS 章

Grafana 新增了一項支援 AWS 簽名版本 4 (SIGv4) 驗證的新功能。如需詳細資訊,請參閱簽章版本 4 簽署程序。依預設,不會再 Grafana 伺服器上啟用此功能。若您正在使用 Helm 在 Kubernetes 叢集上部署 Grafana,則以下為啟用此功能的指示。

在您的 Grafana 7.3.5 或更新伺服器上啟用 SigV4
  1. 建立新的更新檔案來覆寫您的 Grafana 組態,並將其命名 amp_query_override_values.yaml

  2. 將下列內容輸入檔案,然後儲存檔案。Replace (取代) 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角色。如果您已經建立用於查詢工作區的角色,則可以使用您自己的角色名稱替換此角色。

您稍後將在 使用 Helm 升級 Grafana 伺服器 中使用此檔案。

設定服務帳戶的IAM角色

如果您在 Amazon EKS 叢集中使用 Grafana 伺服器,建議您使用服務帳戶的IAM角色 (也稱為服務角色) 進行存取控制。當您執行此操作以建立IAM角色與 Kubernetes 服務帳戶的關聯時,服務帳戶就可以接著為使用該服務帳戶的任何網繭中的容器提供 AWS 權限。如需詳細資訊,請參閱服務帳戶的IAM角色

如果您尚未設定這些服務角色以進行查詢,請遵循 設定服務帳戶的 IAM 角色,以查詢指標 中的指示來設定角色。

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

在信任關係的條件下新增 Grafana 服務帳戶
  1. 在終端機視窗中,判斷 Grafana 伺服器的命名空間和服務帳戶名稱。例如,您可以使用下列命令。

    kubectl get serviceaccounts -n grafana_namespace
  2. 在 Amazon EKS 主控台中,開啟與EKS叢集關聯的服務帳戶IAM角色。

  3. 選擇編輯信任關係

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:oidc-provider/oidc.eks.aws_region.amazonaws.com/id/openid" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region.amazonaws.com/id/openid:sub": [ "system:serviceaccount:aws-amp:amp-iamproxy-query-service-account", "system:serviceaccount:grafana-namespace:grafana-service-account-name" ] } } } ] }
  5. 選擇更新信任政策

使用 Helm 升級 Grafana 伺服器

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

執行下列命令。如需 Grafana 的 Helm 圖表的詳細資訊,請參閱 Grafana 社群 Kubernetes 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 資料來源

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

在您的 Grafana 伺服器中新增 Prometheus 資料來源
  1. 開啟 Grafana 主控台。

  2. 組態下方,選擇資料來源

  3. 選擇新增資料來源

  4. 選擇 Prometheus

  5. 對於 HTTPURL,指定URL顯示在 Prometheus Amazon 受管服務主控台的工作區詳細資訊頁面中的端點-查詢

  6. 在HTTPURL您剛才指定的字串中,移除附加至的/api/v1/query字串URL,因為 Prometheus 資料來源會自動附加它。

  7. 驗證下,選取 SigV4 驗證的切換功能以啟用。

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

  8. 選擇儲存並測試

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

  9. 針對新的資料來源測試 PromQL 查詢:

    1. 選擇探索

    2. 執行範例 PromQL 查詢,例如:

      prometheus_tsdb_head_series