

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用在 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 签名版本 4 (Sigv4) 身份验证的支持。

要将 Grafana 设置为使用适用于 Prometheus 的亚马逊托管服务，您必须登录到具有**AmazonPrometheusQueryAccess**策略或、、和权限的账户。`aps:QueryMetrics` `aps:GetMetricMetadata` `aps:GetSeries` `aps:GetLabels`有关更多信息，请参阅 [IAM 权限和策略](AMP-and-IAM.md)。

## 设置 s AWS igV4
<a name="AMP-onboard-query-grafana-7.3-sigv4"></a>

Grafana 添加了一项新功能来 AWS 支持签名版本 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 服务账户关联时，该服务账号就可以为使用该服务账号的任何 Pod 中的容器提供 AWS 权限。有关更多信息，请参阅[服务账户的 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. 更新**条件**以包含您在步骤 1 的命令输出中找到的 Grafana 命名空间和 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 图表。](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. 在您刚才指定的 HTTP URL 中，删除附加到该 URL 的 `/api/v1/query` 字符串，因为 Prometheus 数据来源会自动附加该字符串。

1. 在**身份验证**下，选择 **Sigv4 身份验证**的开关将其启用。

   将**担任角色 ARN** 和**外部 ID**字段留空。然后在**默认区域**中，选择您 Amazon Managed Service for Prometheus 工作区的区域。

1. 选择**保存并测试**。

   您应该看到以下消息：**数据来源正在运行**

1. 针对新的数据来源测试 PromQL 查询：

   1. 选择**探索**。

   1. 运行示例 PromQL 查询，例如：

      ```
      prometheus_tsdb_head_series
      ```