

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

# Prometheus インスタンスをコレクターとして使用する
<a name="AMP-ingest-with-prometheus"></a>

*エージェントモード* (*Prometheus エージェント* と呼ばれる) で実行している Prometheus インスタンスを使用し、メトリクスをスクレイピングして Amazon Managed Service for Prometheus ワークスペースに送信できます。

以下のトピックでは、エージェントモードで実行されている Prometheus インスタンスをメトリクスのコレクターとして設定するさまざまな方法について説明します。

**警告**  
Prometheus エージェントを作成する場合、その設定とメンテナンスはユーザーが担当します。[セキュリティ機能を有効](https://prometheus.io/docs/prometheus/latest/configuration/https/)にして、Prometheus のスクレイピングエンドポイントがパブリックインターネットに公開されないようにします。

同じメトリクスセットをモニタリングする複数の Prometheus インスタンスをセットアップし、それらを 1 つの Amazon Managed Service for Prometheus ワークスペースに送信して高可用性を実現する場合は、重複排除を設定する必要があります。重複排除を設定する手順に従わない場合、Amazon Managed Service for Prometheus に送信されるすべてのデータサンプルが、重複サンプルも含めて課金対象になります。重複排除の設定方法については、「[Amazon Managed Service for Prometheus に送信される高可用性メトリクスの重複排除](AMP-ingest-dedupe.md)」を参照してください。

**Topics**
+ [Helm を使用した新しい Prometheus サーバーからの取り込みの設定](AMP-onboard-ingest-metrics-new-Prometheus.md)
+ [EC2 上の Kubernetes 内にある既存の Prometheus サーバーからの取り込みの設定](AMP-onboard-ingest-metrics-existing-Prometheus.md)
+ [Fargate 上の Kubernetes にある既存の Prometheus サーバーからの取り込みの設定](AMP-onboard-ingest-metrics-existing-Prometheus-fargate.md)

# Helm を使用した新しい Prometheus サーバーからの取り込みの設定
<a name="AMP-onboard-ingest-metrics-new-Prometheus"></a>

このセクションの手順に従うと、Amazon Managed Service for Prometheus を迅速に設定して稼働させることができます。ここでは、Amazon EKS クラスターに新しい Prometheus サーバーをセットアップします。新しいサーバーは、デフォルト設定を使用して Amazon Managed Service for Prometheus にメトリクスを送信します。この方法には次の前提条件があります。
+ 新しい Prometheus サーバーがメトリクスを収集する元の Amazon EKS クラスターが必要です。
+ Amazon EKS クラスターには [Amazon EBS CSI ドライバー](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html)をインストールしている必要があります (Helm で必要)。
+ Helm CLI 3.0 以降を使用する必要があります。
+ 以下のセクションの手順を実行するには、Linux または macOS コンピュータを使用する必要があります。

## ステップ 1: 新しい Helm チャートリポジトリを追加する
<a name="AMP-onboard-new-Prometheus-HelmRepo"></a>

次のコマンドを入力して、新しい Helm チャートリポジトリを追加します。これらのコマンドの詳細については、「[Helm Repo](https://helm.sh/docs/helm/helm_repo/)」を参照してください。

```
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics
helm repo update
```

## ステップ 2: Prometheus 名前空間を作成する
<a name="AMP-onboard-new-Prometheus-namespace"></a>

次のコマンドを入力して、Prometheus サーバーとその他のモニタリングコンポーネント用の Prometheus 名前空間を作成します。*prometheus-namespace* は、この名前空間に付ける名前に置き換えます。

```
kubectl create namespace prometheus-namespace
```

## ステップ 3: サービスアカウントの IAM ロールを設定する
<a name="AMP-onboard-new-Prometheus-IRSA"></a>

ここで説明するオンボーディング方法では、Prometheus サーバーが実行されている Amazon EKS クラスターでサービスアカウントの IAM ロールを使用する必要があります。

サービスアカウントの IAM ロールを使用すると、IAM ロールを Kubernetes サービスアカウントに関連付けることができます。このサービスアカウントは、そのサービスアカウントを使用するポッド内のコンテナに AWS アクセス許可を提供できます。詳細については、「[サービスアカウントの IAM ロール](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)」を参照してください。

これらのロールをまだ設定していない場合は、「[Amazon EKS クラスターからメトリクスを取り込むためのサービスロールの設定](set-up-irsa.md#set-up-irsa-ingest)」の手順に従ってロールを設定します。そのセクションの手順では、`eksctl` を使用する必要があります。詳細については、「[Amazon Elastic Kubernetes Service の開始方法 - `eksctl`](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html)」を参照してください。

**注記**  
EKS または ではなく AWS 、アクセスキーとシークレットキーのみを使用して Amazon Managed Service for Prometheus にアクセスする場合、 `EKS-IAM-ROLE` ベースの SigV4 を使用することはできません。

## ステップ 4: 新しいサーバーをセットアップしてメトリクスの取り込みを開始する
<a name="AMP-onboard-ingest-metrics-new-Prometheus-Helm"></a>

Amazon Managed Service for Prometheus ワークスペースにメトリクスを送信する新しい Prometheus サーバーをインストールするには、以下の手順に従います。

**Amazon Managed Service for Prometheus ワークスペースにメトリクスを送信する新しい Prometheus サーバーをインストールするには**

1. テキストエディタを使用して、`my_prometheus_values_yaml` という名前のファイルを作成し、次の内容を記述します。
   + *IAM\$1PROXY\$1PROMETHEUS\$1ROLE\$1ARN* は、「[Amazon EKS クラスターからメトリクスを取り込むためのサービスロールの設定](set-up-irsa.md#set-up-irsa-ingest)」で作成した **amp-iamproxy-ingest-role** の ARN に置き換えます。
   + *WORKSPACE\$1ID* は、Amazon Managed Service for Prometheus ワークスペースの ID に置き換えます。
   + *REGION* は、Amazon Managed Service for Prometheus のリージョンに置き換えます。

   ```
   ## The following is a set of default values for prometheus server helm chart which enable remoteWrite to AMP
   ## For the rest of prometheus helm chart values see: https://github.com/prometheus-community/helm-charts/blob/main/charts/prometheus/values.yaml
   ##
   serviceAccounts:
     server:
       name: amp-iamproxy-ingest-service-account
       annotations: 
         eks.amazonaws.com/role-arn: ${IAM_PROXY_PROMETHEUS_ROLE_ARN}
   server:
     remoteWrite:
       - url: https://aps-workspaces.${REGION}.amazonaws.com/workspaces/${WORKSPACE_ID}/api/v1/remote_write
         sigv4:
           region: ${REGION}
         queue_config:
           max_samples_per_send: 1000
           max_shards: 200
           capacity: 2500
   ```

1. 次のコマンドを入力して、Prometheus サーバーを作成します。
   + *prometheus-chart-name* は、Prometheus リリース名に置き換えます。
   + *prometheus-namespace* は、Prometheus 名前空間の名前に置き換えます。

   ```
   helm install prometheus-chart-name prometheus-community/prometheus -n prometheus-namespace \
   -f my_prometheus_values_yaml
   ```
**注記**  
`helm install` コマンドはさまざまな方法でカスタマイズできます。詳細については、「Helm ドキュメント**」の「[Helm install](https://helm.sh/docs/helm/helm_install/)」を参照してください。

# EC2 上の Kubernetes 内にある既存の Prometheus サーバーからの取り込みの設定
<a name="AMP-onboard-ingest-metrics-existing-Prometheus"></a>

Amazon Managed Service for Prometheus は、Amazon EKS を実行しているクラスターおよび Amazon EC2 上で動作する自己管理型 Kubernetes クラスター内の Prometheus サーバーからのメトリクスの取り込みをサポートしています。このセクションの詳細な手順は、Amazon EKS クラスター内の Prometheus サーバーを対象としています。Amazon EC2 上の自己管理型 Kubernetes クラスターの場合も手順は同じですが、Kubernetes クラスターでサービスアカウントの OIDC プロバイダーと IAM ロールを手動で設定する必要がある点が異なります。

このセクションの手順では、Kubernetes パッケージマネージャーとして Helm を使用します。

**Topics**
+ [ステップ 1: サービスアカウントの IAM ロールを設定する](#AMP-onboard-existing-Prometheus-IRSA)
+ [ステップ 2: Helm を使用して既存の Prometheus サーバーをアップグレードする](#AMP-onboard-ingest-metrics-existing-remotewrite)

## ステップ 1: サービスアカウントの IAM ロールを設定する
<a name="AMP-onboard-existing-Prometheus-IRSA"></a>

ここで説明するオンボーディング方法では、Prometheus サーバーが実行されている Amazon EKS クラスターでサービスアカウントの IAM ロールを使用する必要があります。これらのロールはサービスロール**とも呼ばれます。

サービスロールを使用すると、IAM ロールを Kubernetes サービスアカウントに関連付けることができます。このサービスアカウントは、そのサービスアカウントを使用する任意のポッドのコンテナにアクセス AWS 許可を付与できます。詳細については、「[サービスアカウントの IAM ロール](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)」を参照してください。

これらのロールをまだ設定していない場合は、「[Amazon EKS クラスターからメトリクスを取り込むためのサービスロールの設定](set-up-irsa.md#set-up-irsa-ingest)」の手順に従ってロールを設定します。

## ステップ 2: Helm を使用して既存の Prometheus サーバーをアップグレードする
<a name="AMP-onboard-ingest-metrics-existing-remotewrite"></a>

このセクションの手順には、リモート書き込みと sigv4 を設定して、Amazon Managed Service for Prometheus ワークスペースへのリモート書き込みを行えるように Prometheus サーバーを認証および認可する方法が含まれます。

### Prometheus バージョン 2.26.0 以降を使用している場合
<a name="AMP-onboard-ingest-metrics-Helm13"></a>

バージョン 2.26.0 以降の Prometheus サーバーイメージで Helm チャートを使用している場合は、以下の手順に従います。

**Helm チャートを使用して Prometheus サーバーからのリモート書き込みを設定するには**

1. Helm 設定ファイルに新しいリモート書き込みセクションを作成します。
   + `${IAM_PROXY_PROMETHEUS_ROLE_ARN}` は、「[ステップ 1: サービスアカウントの IAM ロールを設定する](#AMP-onboard-existing-Prometheus-IRSA)」で作成した **amp-iamproxy-ingest-role** の ARN に置き換えます。ロールの ARN は `arn:aws:iam::your account ID:role/amp-iamproxy-ingest-role` という形式になります。
   + `${WORKSPACE_ID}` は、Amazon Managed Service for Prometheus のワークスペース ID に置き換えます。
   + `${REGION}` は、Amazon Managed Service for Prometheus ワークスペースのリージョン (`us-west-2` など) に置き換えます。

   ```
   ## The following is a set of default values for prometheus server helm chart which enable remoteWrite to AMP
       ## For the rest of prometheus helm chart values see: https://github.com/prometheus-community/helm-charts/blob/main/charts/prometheus/values.yaml
       ##
       serviceAccounts:
         server:
           name: amp-iamproxy-ingest-service-account
           annotations: 
             eks.amazonaws.com/role-arn: ${IAM_PROXY_PROMETHEUS_ROLE_ARN}
       server:
         remoteWrite:
           - url: https://aps-workspaces.${REGION}.amazonaws.com/workspaces/${WORKSPACE_ID}/api/v1/remote_write
             sigv4:
               region: ${REGION}
             queue_config:
               max_samples_per_send: 1000
               max_shards: 200
               capacity: 2500
   ```

1. Helm を使用して既存の Prometheus サーバーの構成を更新します。
   + `prometheus-chart-name` は、Prometheus リリース名に置き換えます。
   + `prometheus-namespace` は、Prometheus サーバーがインストールされている Kubernetes 名前空間に置き換えます。
   + `my_prometheus_values_yaml` は、Helm 設定ファイルのパスに置き換えます。
   + `current_helm_chart_version` は、Prometheus サーバーの Helm チャートの現在のバージョンに置き換えます。現在のチャートのバージョンは、[helm list](https://helm.sh/docs/helm/helm_list/) コマンドを使用して確認できます。

   ```
   helm upgrade prometheus-chart-name prometheus-community/prometheus \
          -n prometheus-namespace \
          -f my_prometheus_values_yaml \
          --version current_helm_chart_version
   ```

### 以前のバージョンの Prometheus 使う
<a name="AMP-onboard-ingest-metrics-Helm8"></a>

2.26.0 より前のバージョンの Prometheus を使用している場合は、以下の手順に従います。これらのステップではサイドカーアプローチを使用します。これは、以前のバージョンの Prometheus では AWS 署名バージョン 4 の署名プロセス (AWS SigV4) がネイティブにサポートされていないためです。

これらの手順では、Prometheus のデプロイに Helm を使用しているものと想定します。

**Prometheus サーバーからのリモート書き込みを設定するには**

1. Prometheus サーバーで、新しいリモート書き込み設定を作成します。まず、新しい更新ファイルを作成します。このファイルの名前を `amp_ingest_override_values.yaml`. とします。

   この YAML ファイルに次の値を追加します。

   ```
   serviceAccounts:
           server:
               name: "amp-iamproxy-ingest-service-account"
               annotations:
                   eks.amazonaws.com/role-arn: "${SERVICE_ACCOUNT_IAM_INGEST_ROLE_ARN}"
       server:
           sidecarContainers:
               - name: aws-sigv4-proxy-sidecar
                 image: public.ecr.aws/aws-observability/aws-sigv4-proxy:1.0
                 args:
                 - --name
                 - aps
                 - --region
                 - ${REGION}
                 - --host
                 - aps-workspaces.${REGION}.amazonaws.com
                 - --port
                 - :8005
                 ports:
                 - name: aws-sigv4-proxy
                   containerPort: 8005
           statefulSet:
               enabled: "true"
           remoteWrite:
               - url: http://localhost:8005/workspaces/${WORKSPACE_ID}/api/v1/remote_write
   ```

   `${REGION}` は、Amazon Managed Service for Prometheus ワークスペースのリージョンに置き換えます。

   `${SERVICE_ACCOUNT_IAM_INGEST_ROLE_ARN}` は、「[ステップ 1: サービスアカウントの IAM ロールを設定する](#AMP-onboard-existing-Prometheus-IRSA)」で作成した **amp-iamproxy-ingest-role** の ARN に置き換えます。ロールの ARN は `arn:aws:iam::your account ID:role/amp-iamproxy-ingest-role` という形式になります。

   `${WORKSPACE_ID}` は、ワークスペース ID に置き換えます。

1. Prometheus Helm チャートをアップグレードします。まず、以下のコマンドを入力して Helm チャート名を確認します。このコマンドの出力で、名前に `prometheus` という文字列を含むチャートを探します。

   ```
   helm ls --all-namespaces
   ```

   次に、以下のコマンドを入力します。

   ```
   helm upgrade --install prometheus-helm-chart-name prometheus-community/prometheus -n prometheus-namespace -f ./amp_ingest_override_values.yaml
   ```

   *prometheus-helm-chart-name* は、前のコマンドで返された Prometheus Helm チャートの名前に置き換えます。*prometheus-namespace* は、名前空間の名前に置き換えます。

#### Helm チャートのダウンロード
<a name="AMP-onboard-ingest-downloadHelm"></a>

Helm チャートをまだローカルにダウンロードしていない場合は、次のコマンドを使用してダウンロードできます。

```
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm pull prometheus-community/prometheus --untar
```

# Fargate 上の Kubernetes にある既存の Prometheus サーバーからの取り込みの設定
<a name="AMP-onboard-ingest-metrics-existing-Prometheus-fargate"></a>

Amazon Managed Service for Prometheus は、Fargate 上で動作する自己管理型 Kubernetes クラスター内の Prometheus サーバーからのメトリクスの取り込みをサポートしています。Fargate 上で動作する Amazon EKS クラスター内の Prometheus サーバーからメトリクスを取り込むには、amp\$1ingest\$1override\$1values.yaml という名前のファイルのデフォルト設定を次のようにオーバーライドします。

```
prometheus-node-exporter:
        enabled: false
    
    alertmanager:
        enabled: false
    
    serviceAccounts:
      server:
        name: amp-iamproxy-ingest-service-account
        annotations: 
          eks.amazonaws.com/role-arn: ${IAM_PROXY_PROMETHEUS_ROLE_ARN}
    
    server:
      persistentVolume:
        enabled: false
      remoteWrite:
        - url: https://aps-workspaces.${REGION}.amazonaws.com/workspaces/${WORKSPACE_ID}/api/v1/remote_write
          sigv4:
            region: ${REGION}
          queue_config:
            max_samples_per_send: 1000
            max_shards: 200
            capacity: 2500
```

次のコマンドを実行して、オーバーライドを使用して Prometheus をインストールします。

```
helm install prometheus-for-amp prometheus-community/prometheus \
                   -n prometheus \
                   -f amp_ingest_override_values.yaml
```

この Helm チャートの設定では、ノードエクスポーターとアラートマネージャーを無効にし、さらに Prometheus サーバーのデプロイの実行を無効にしています。

次のテストクエリの例を実行すると、インストールを確認できます。

```
$ awscurl --region region --service aps "https://aps-workspaces.region_id.amazonaws.com/workspaces/workspace_id/api/v1/query?query=prometheus_api_remote_read_queries"
    {"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"prometheus_api_remote_read_queries","instance":"localhost:9090","job":"prometheus"},"value":[1648461236.419,"0"]}]}}21
```