

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

# 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 を Amazon Managed Service for Prometheus と連携するように設定するには、**AmazonPrometheusQueryAccess** ポリシーまたは `aps:QueryMetrics`、`aps:GetMetricMetadata`、`aps:GetSeries`、`aps:GetLabels` のアクセス許可を持つアカウントにログオンする必要があります。詳細については、「[IAM のアクセス許可とポリシー](AMP-and-IAM.md)」を参照してください。

## AWS SigV4 をセットアップする
<a name="AMP-onboard-query-grafana-7.3-sigv4"></a>

Grafana は、 AWS 署名バージョン 4 (SigV4) 認証をサポートする新機能を追加しました。詳細については、「[Signature Version 4 の署名プロセス](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)」を参照してください。Grafana サーバーでは、この機能はデフォルトで有効になっていません。ここでは、Kubernetes クラスターへの Grafana のデプロイに Helm を使用しているものと想定して、この機能を有効にする手順を説明します。

**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 許可を付与できます。詳細については、「[サービスアカウントの 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. **Condition** を更新して、ステップ 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>

このステップでは、前のセクションで `amp_query_override_values.yaml` ファイルに追加したエントリを使用するように Grafana サーバーをアップグレードします。

以下のコマンドを実行します。Grafana 用の Helm チャートの詳細については、「[Grafana Community 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. 指定した HTTP URL から、URL に追加されている `/api/v1/query` という文字列を削除します。これは、Prometheus データソースによって自動的に追加されるためです。

1. **[認証]** で、**[SigV4 認証]** のトグルを選択して有効にします。

   **[引き受けロールの ARN]** と **[外部 ID]** フィールドは空白のままにします。次に、**[デフォルトのリージョン]** で、Amazon Managed Service for Prometheus ワークスペースのあるリージョンを選択します。

1. **[保存してテスト]** を選択します。

   「**Data source is working**」というメッセージが表示されます。

1. 新しいデータソースに対して PromQL クエリをテストします。

   1. **[調査]** を選択します。

   1. 次のようなサンプル PromQL クエリを実行します。

      ```
      prometheus_tsdb_head_series
      ```