Amazon EKS クラスターで動作する Grafana を使用したクエリ - Amazon Managed Service for Prometheus

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

Amazon EKS クラスターで動作する Grafana を使用したクエリ

Amazon Managed Service for Prometheus では、Grafana バージョン 7.3.5 以降を使用して Amazon Managed Service for Prometheus ワークスペース内のメトリクスにクエリを実行することがサポートされています。バージョン 7.3.5 以降には、 AWS 署名バージョン 4 (SigV4) 認証のサポートが含まれています。

Amazon Managed Service for Prometheus と連携するように Grafana を設定するには、AmazonPrometheusQueryAccessポリシーまたは aps:QueryMetrics、、aps:GetMetricMetadataaps:GetSeriesおよび アクセスaps:GetLabels許可を持つアカウントにログオンする必要があります。詳細については、「IAM のアクセス許可とポリシー」を参照してください。

AWS SigV4 をセットアップする

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

Grafana 7.3.5 以降のサーバーで SigV4 を有効にするには
  1. Grafana の設定をオーバーライドする新しい更新ファイルを作成し、amp_query_override_values.yaml という名前を付けます。

  2. 以下の内容をファイルに入力し、ファイルを保存します。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. Condition を更新して、ステップ 1 のコマンド出力で確認した Grafana 名前空間と 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 サーバーのアップグレード

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

以下のコマンドを実行します。Grafana 用の Helm チャートの詳細については、「Grafana Community 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. HTTP URL として、Amazon Managed Service for Prometheus コンソールのワークスペースの詳細ページに表示される [エンドポイント - クエリ URL] を指定します。

  6. 指定した HTTP URL から、URL に追加されている /api/v1/query という文字列を削除します。これは、Prometheus データソースによって自動的に追加されるためです。

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

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

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

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

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

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

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

      prometheus_tsdb_head_series