翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 のアクセス許可とポリシー」を参照してください。
AWS SigV4 のセットアップ
Grafana は、 AWS 署名バージョン 4 (SigV4) 認証をサポートする新機能を追加しました。詳細については、「Signature Version 4 の署名プロセス」を参照してください。Grafana サーバーでは、この機能はデフォルトで有効になっていません。ここでは、Kubernetes クラスターへの Grafana のデプロイに Helm を使用しているものと想定して、この機能を有効にする手順を説明します。
Grafana 7.3.5 以降のサーバーで SigV4 を有効にするには
-
Grafana の設定をオーバーライドする新しい更新ファイルを作成し、
amp_query_override_values.yaml
という名前を付けます。 -
以下の内容をファイルに入力し、ファイルを保存します。
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 サービスアカウントを追加するには
-
ターミナルウィンドウから、Grafana サーバーの名前空間とサービスアカウント名を確認します。例えば、次のコマンドを使用できます。
kubectl get serviceaccounts -n
grafana_namespace
-
Amazon EKS コンソールで、EKS クラスターに関連付けられているサービスアカウントの IAM ロールを開きます。
-
[信頼関係の編集] を選択します。
-
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
" ] } } } ] } -
[信頼ポリシーの更新] を選択します。
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 データソースを追加するには
-
Grafana コンソールを開きます。
-
[設定] で、[データソース] を選択します。
-
[データソースを追加] を選択します。
-
[Prometheus] を選択します。
-
HTTP URL として、Amazon Managed Service for Prometheus コンソールのワークスペースの詳細ページに表示される [エンドポイント - クエリ URL] を指定します。
-
指定した HTTP URL から、URL に追加されている
/api/v1/query
という文字列を削除します。これは、Prometheus データソースによって自動的に追加されるためです。 -
[認証] で、[SigV4 認証] のトグルを選択して有効にします。
[引き受けロールの ARN] と [外部 ID] フィールドは空白のままにします。次に、[デフォルトのリージョン] で、Amazon Managed Service for Prometheus ワークスペースのあるリージョンを選択します。
-
[保存してテスト] を選択します。
「Data source is working」というメッセージが表示されます。
-
新しいデータソースに対して PromQL クエリをテストします。
-
[調査] を選択します。
-
次のようなサンプル PromQL クエリを実行します。
prometheus_tsdb_head_series
-