次の方法で共有


マネージド ID 認証を使用して Prometheus データを Azure Monitor に送信する

重要

この記事では、マネージド ID 認証と Azure Monitor によって提供されるサイド カー コンテナーを使用して、Prometheus 用の Azure Monitor マネージド サービスでリモート書き込みを設定する方法について説明します。 サイドカーを使用せずにマネージド ID でリモート書き込みを使用するには、「セルフマネージド Prometheus を Prometheus の Azure Monitor マネージド サービスに接続する」のガイダンスを使用してください。

この記事では、マネージド ID 認証と Azure Monitor によって提供されるサイド カー コンテナーを使用して、Azure Kubernetes Service (AKS) クラスターまたは Azure Arc 対応 Kubernetes クラスターで実行されているセルフマネージド Prometheus サーバーからデータを送信するように リモート書き込みを 設定する方法について説明します。 AKS によって作成された既存の ID を使用するか、独自の ID を作成できます。 ここでは、両方のオプションについて説明します。

ユーザー割り当てマネージド ID を使用している場合は、Azure Monitor ワークスペースにリモート書き込みするために、Kubernetes クラスターで実行されている Prometheus を直接構成することをお勧めします。 詳細については、「 ユーザー割り当てマネージド ID を使用して Prometheus データを Azure Monitor に送信 する」を参照してください。 次の手順では、Azure Monitor のサイド カー コンテナーを使用します。

クラスター構成

この記事は、次のクラスター構成に適用されます。

  • Azure Kubernetes Service クラスター
  • Azure Arc 対応 Kubernetes クラスター

前提条件

サポートされているバージョン

マネージド ID 認証には、v2.45 より大きい Prometheus バージョンが必要です。

  • ユーザー割り当てマネージド ID 認証には、v2.45 より大きいバージョンの Prometheus が必要です。
  • Microsoft Entra ID アプリケーション認証には、v2.48 より大きい Prometheus バージョンが必要です。
  • システム割り当てマネージド ID 認証には、Prometheus バージョン v3.50 以上が必要です。

Azure Monitor ワークスペース

この記事では、Prometheus メトリックを Azure Monitor ワークスペースに送信する方法について説明します。 Azure Monitor ワークスペースを作成するには、「 Azure Monitor ワークスペースの管理」を参照してください。

アクセス許可

この記事の手順を完了するには、クラスターまたはリソースの管理者アクセス許可が必要です。

マネージド ID 用にアプリケーションを設定する

マネージド ID 認証を使用してアプリケーションの Prometheus リモート書き込みを設定するプロセスでは、次のタスクを完了する必要があります。

  1. クラスターのノード リソース グループの名前を取得します。
  2. ユーザー割り当てマネージド ID のクライアント ID を取得する。
  3. ワークスペース データ収集規則に対する監視メトリック発行者ロールをマネージド ID に割り当てる。
  4. クラスターにマネージド ID へのアクセス権を付与します。
  5. サイドカー コンテナーをデプロイしてリモート書き込みを設定する。

これらのタスクについては、以降のセクションで説明します。

クラスターのノード リソース グループの名前を取得する

クラスターのノード リソース グループには、このプロセスの他の手順で使用するリソースが含まれています。 このリソース グループには、MC_<RESOURCE-GROUP>_<CLUSTER-NAME>_<REGION> という形式の名前が付きます。 リソース グループ名は、Azure portal の [リソース グループ ] メニューを使用して確認できます。

リソース グループの一覧を示すスクリーンショット。

ユーザー割り当てマネージド ID のクライアント ID を取得する

使用する ID のクライアント ID を取得する必要があります。 クライアント ID をコピーして、プロセスの後半で使用します。

独自のクライアント ID を作成する代わりに、AKS によって作成された ID のいずれかを使用することもできます。 ID の詳細については、「 Azure Kubernetes Service でのマネージド ID の使用」を参照してください。

この記事では、kubelet ID を使用します。 この ID の名前は <CLUSTER-NAME>-agentpoolされ、クラスターのノード リソース グループ内にあります。

ノード リソース グループ内のリソースの一覧を示すスクリーンショット。

<CLUSTER-NAME>-agentpool マネージド ID を選択します。 [ 概要 ] ページで、 クライアント ID の値をコピーします。 詳細については、「 ユーザー割り当てマネージド ID の管理」を参照してください。

マネージド ID の概要ページのクライアント ID を示すスクリーンショット。

ワークスペース データ収集規則に対する監視メトリック発行者ロールをマネージド ID に割り当てる

マネージド ID には、Azure Monitor ワークスペースに関連付けられているデータ収集規則に対する監視メトリック発行者ロールが必要です。

  1. Azure Monitor ワークスペースのリソース メニューで、[ 概要] を選択します。 [データ収集ルール] で、リンクを選択します。

    Azure Monitor ワークスペースに関連付けられているデータ収集ルールを示すスクリーンショット。

  2. データ収集ルールのリソース メニューで、 アクセス制御 (IAM) を選択します。

  3. [ 追加] を選択し、[ ロールの割り当ての追加] を選択します。

    アクセス制御ページでのロールの割り当ての追加を示すスクリーンショット。

  4. Monitoring Metrics Publisher ロールを選択し、[次へ] を選択します。

    ロールの割り当ての一覧を示すスクリーンショット。

  5. [ マネージド ID] を選択し、[ メンバーの選択] を選択します。 ユーザー割り当て ID を含むサブスクリプションを選択し、[ ユーザー割り当てマネージド ID] を選択します。 使用するユーザーに割り当てられた ID を選び、その後、選択をクリックしてください。

    ユーザー割り当てマネージド ID の選択を示すスクリーンショット。

  6. ロールの割り当てを完了するには、[ 確認と割り当て] を選択します。

AKS クラスターにマネージド ID へのアクセス権を付与する

AKS ID を使用している場合、この手順は必要ありません。 AKS ID は既にクラスターにアクセスできます。

重要

このセクションの手順を完了するには、クラスターの所有者またはユーザー アクセス管理者のアクセス許可が必要です。

  1. クラスターの ノード リソース グループ 内の仮想マシン スケール セットを特定します。

    ノード リソース グループ内の仮想マシン スケール セットを示すスクリーンショット。

  2. 仮想マシン スケール セットごとに、Azure CLI で次のコマンドを実行します。

    az vmss identity assign -g <NODE-RESOURCE-GROUP> -n <VMSS-NAME> --identities <USER-ASSIGNED-IDENTITY-RESOURCE-ID>
    

サイドカー コンテナーをデプロイしてリモート書き込みを設定する

  1. 次の YAML をコピーし、ファイルに保存します。 YAML では、リッスン ポートとしてポート 8081 が使用されます。 別のポートを使用する場合は、YAML でポートを変更してください。

    prometheus:
      prometheusSpec:
        externalLabels:
              cluster: <AKS-CLUSTER-NAME>
    
        ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write    
        remoteWrite:
        - url: 'http://localhost:8081/api/v1/write'
      ## Azure Managed Prometheus currently exports some default mixins in Grafana. 
      ## These mixins are compatible with Azure Monitor agent on your Azure Kubernetes Service cluster. 
      ## However, these mixins aren't compatible with Prometheus metrics scraped by the Kube Prometheus stack. 
      ## In order to make these mixins compatible, uncomment remote write relabel configuration below:
    
      ## writeRelabelConfigs:
      ##   - sourceLabels: [metrics_path]
      ##     regex: /metrics/cadvisor
      ##     targetLabel: job
      ##     replacement: cadvisor
      ##     action: replace
      ##   - sourceLabels: [job]
      ##     regex: 'node-exporter'
      ##     targetLabel: job
      ##     replacement: node
      ##     action: replace
        containers:
        - name: prom-remotewrite
          image: <CONTAINER-IMAGE-VERSION>
          imagePullPolicy: Always
          ports:
            - name: rw-port
              containerPort: 8081
          livenessProbe:
            httpGet:
              path: /health
              port: rw-port
            initialDelaySeconds: 10
            timeoutSeconds: 10
          readinessProbe:
            httpGet:
              path: /ready
              port: rw-port
            initialDelaySeconds: 10
            timeoutSeconds: 10
          env:
          - name: INGESTION_URL
            value: <INGESTION_URL>
          - name: LISTENING_PORT
            value: '8081'
          - name: IDENTITY_TYPE
            value: userAssigned
          - name: AZURE_CLIENT_ID
            value: <MANAGED-IDENTITY-CLIENT-ID>
          # Optional parameter
          - name: CLUSTER
            value: <CLUSTER-NAME>
    
  2. YAML 内の次の値を置き換えます。

    価値 説明
    <AKS-CLUSTER-NAME> AKS クラスターの名前。
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20251208.1
    リモート書き込みコンテナー イメージのバージョン。
    <INGESTION-URL> Azure Monitor ワークスペースの [概要] ページのメトリック インジェスト エンドポイントの値。
    <MANAGED-IDENTITY-CLIENT-ID> マネージド ID の [概要] ページのクライアント ID の値。
    <CLUSTER-NAME> Prometheus が実行されているクラスターの名前。

    重要

    Azure Government クラウドの場合、YAML ファイルの env セクションに次の環境変数を追加します。

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. Azure Cloud Shell を開き、YAML ファイルをアップロードします。

  4. Helm を使って YAML ファイルを適用し、Prometheus 構成を更新します。

    # set context to your cluster 
    az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name> 
    
    # use Helm to update your remote write config 
    helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus pod resides> 
    

確認とトラブルシューティング

検証とトラブルシューティングの情報については、「リモート書き込みのトラブルシューティング」および「Azure Monitor マネージド サービスによる Prometheus のリモート書き込み」を参照してください。

次のステップ

リモート書き込みが正しく動作していることを確認する

Prometheus のデータが Azure Monitor ワークスペースに送信されていることを確認するには、次の方法を使用します。

Kubectl コマンド

サイド カー コンテナーからログを表示するには、次のコマンドを使用します。 出力値が avgBytesPerRequest および avgRequestDuration で 0 以外の場合、リモート書き込みデータが流れています。

kubectl logs <Prometheus-Pod-Name> <Azure-Monitor-Side-Car-Container-Name> --namespace <namespace-where-Prometheus-is-running>
# example: kubectl logs prometheus-prometheus-kube-prometheus-prometheus-0 prom-remotewrite --namespace monitoring

このコマンドからの出力は次の形式になります。

time="2022-11-02T21:32:59Z" level=info msg="Metric packets published in last 1 minute" avgBytesPerRequest=19713 avgRequestDurationInSec=0.023 failedPublishing=0 successfullyPublished=122

PromQL を使用した Azure Monitor メトリックス エクスプローラー

メトリックが Azure Monitor ワークスペースに送信されているかどうかを確認するには、Azure portal の Azure Monitor ワークスペースから [メトリック] を選択します。 メトリックス エクスプローラーを使用して、セルフマネージド Prometheus 環境から予想されるメトリックに対してクエリを実行します。 詳細については、メトリックス エクスプローラーの説明を参照してください。

Azure Monitor ワークスペース内の Prometheus エクスプローラー

Prometheus エクスプローラーは、Azure 環境内で Prometheus メトリックを操作して、監視とトラブルシューティングをより効率的にする便利な方法を提供します。 Prometheus エクスプローラーを使用するには、Azure portal 内でご利用の Azure Monitor ワークスペースから、[Prometheus エクスプローラー] を選択して、セルフマネージド Prometheus 環境に対して求めるメトリックのクエリを実行します。 詳しくは、Prometheus エクスプローラーの説明を参照してください。

Grafana

Grafana で PromQL クエリを使用し、結果から期待されるデータが返されることを確認します。 Azure の Prometheus 用マネージド サービス向けに Grafana を構成する方法について詳しくは、「管理システム ID を使用して Grafana のデータ ソースとして Prometheus 用 Azure Monitor マネージド サービスを使用する」をご覧ください

リモート書き込みのトラブルシューティング

Azure Monitor ワークスペースにリモート データが表示されない場合は、「リモート書き込みのトラブルシューティング」で一般的な問題と解決策を確認してください。