仮想マシン、スケール セット、または Kubernetes クラスターから Azure Monitor ワークスペースに Prometheus メトリックを送信する

Prometheus は、Kubernetes クラスターの監視に限定されません。 Prometheus を使用して、サーバー上で実行されているアプリケーションとサービスを、実行している場所を問わず監視します。 たとえば、Virtual Machines、Virtual Machine Scale Sets、さらにはオンプレミス サーバーで実行されているアプリケーションを監視できます。 また、セルフマネージド クラスターと Prometheus サーバーから Azure Monitor ワークスペースに Prometheus メトリックを送信することもできます。 サーバーに Prometheus をインストールし、Azure Monitor ワークスペースにメトリックを送信するようにリモート書き込みを構成します。

この記事では、セルフマネージド Prometheus インスタンスから Azure Monitor ワークスペースにデータを送信するように、リモート書き込みを構成する方法について説明します。

リモート書き込みオプション

セルフマネージド Prometheus は、Azure 環境と Azure 以外の環境で実行できます。 Prometheus が実行されている環境に基づく Azure Monitor ワークスペースへのリモート書き込みの認証オプションを次に示します。

Azure マネージド Virtual Machines、Virtual Machine Scale Sets、および Kubernetes クラスター

Azure 環境でセルフ マネージド Prometheus を実行するサービスには、ユーザー割り当てマネージド ID 認証を使用します。 Azure マネージド サービスには、次のものが含まれます。

  • Azure Virtual Machines
  • Azure Virtual Machine Scale Sets
  • Azure Arc 対応仮想マシン
  • Azure Kubernetes Service (AKS)

Azure マネージド リソースのリモート書き込みを設定するには、「ユーザー割り当てマネージド ID を使用したリモート書き込み」を参照してください。

Azure 以外の環境で実行されている仮想マシンと Kubernetes クラスター。

Azure 以外の環境に仮想マシンまたは Kubernetes クラスターがあり、Azure Arc にオンボードしない場合は、セルフマネージド Prometheus をインストールし、Microsoft Entra ID アプリケーション認証を使用してリモート書き込みを構成します。 詳細については、Microsoft Entra ID アプリケーション認証を使用したリモート書き込みの説明を参照してください。

Azure Arc 対応サービスにオンボードすると、Azure で Azure 以外の仮想マシンを管理および構成できます。 オンボードしたら、ユーザー割り当てマネージド ID を使用したリモート書き込みの認証を構成します。 Azure Arc 対応サーバーへの Virtual Machines のオンボードの詳細については、Azure Arc 対応サーバーおよび Azure Arc 対応 Kubernetes に関するページを参照してください。

前提条件

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

  • マネージド ID 認証には、v2.45 より大きい Prometheus バージョンが必要です。
  • Microsoft Entra ID アプリケーション認証には、v2.48 より大きい Prometheus バージョンが必要です。

Azure Monitor ワークスペース

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

アクセス許可

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

リモート書き込みの認証を設定する

Prometheus が実行されている環境に応じて、ユーザー割り当てマネージド ID または Microsoft Entra ID アプリケーション認証を使用して Azure Monitor ワークスペースにデータを送信するようにリモート書き込みを構成できます。

Azure portal または CLI を使用して、ユーザー割り当てマネージド ID または Microsoft Entra ID アプリケーションを作成します。

ユーザー割り当てマネージド ID 認証を使用したリモート書き込み

ユーザー割り当てマネージド ID 認証は、すべての Azure マネージド環境で使用できます。 Prometheus サービスが Azure 以外の環境で実行されている場合は、Entra ID アプリケーション認証を使用できます。

Azure Monitor ワークスペースへのリモート書き込み用にユーザー割り当てマネージド ID を構成するには、次の手順を実行します。

ユーザー割り当てマネージド ID を作成する

リモート書き込み構成で使用するユーザーマネージド ID を作成するには、「ユーザー割り当てマネージド ID の管理」を参照してください。

作成したマネージド ID の clientId の値をメモします。 この ID は、Prometheus のリモート書き込み構成で使用されます。

監視メトリック発行者ロールをアプリケーションに割り当てる

ワークスペースのデータ収集ルールで、Monitoring Metrics Publisher ロールをマネージド ID に割り当てます。

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

    Azure Monitor ワークスペース ページのデータ収集ルールのリンクを示すスクリーンショット。

  2. データ収集ルールのページで、[アクセス制御 (IAM)] を選択します。

  3. [追加] および [ロールの割り当ての追加] を選択します。 データ収集ルールを示すスクリーンショット。

  4. [監視メトリック発行者] を検索して選択し、[次へ] を選択します。 データ収集ルールのロールの割り当てメニューを示すスクリーンショット。

  5. [マネージド ID] を選択します。

  6. [メンバーの選択] を選びます。

  7. [マネージド エンティティ] ドロップダウンで、[ユーザー割り当てマネージド ID] を選択します。

  8. 使用するユーザー割り当て ID を選択し、[選択] をクリックします。

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

    データ収集ルールのメンバーの選択メニューを示すスクリーンショット。

マネージド ID を仮想マシンまたは仮想マシン スケール セットに割り当てる

重要

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

  1. Azure portal で、クラスター、Virtual Machines、または Virtual Machine Scale Sets のページに移動します。

  2. [ID] を選択します。

  3. [ユーザー割り当て] を選びます。

  4. [追加] を選択します。

  5. 作成したユーザー割り当てマネージド ID を選択し、[追加] を選択します。

    [ユーザー割り当てマネージド ID の追加] ページのスクリーンショット。

Azure Kubernetes Service のマネージド ID を割り当てる

Azure Kubernetes サービス (AKS) の場合、マネージド ID を仮想マシン スケール セットに割り当てる必要があります。

AKS は、仮想マシン スケール セットを含むリソース グループを作成します。 リソース グループ名の形式は MC_<resource group name>_<AKS cluster name>_<region> です。 リソース グループ内の仮想マシン スケール セットごとに、前のセクションの「マネージド ID を仮想マシンまたは仮想マシン スケール セットに割り当てる」の手順に従ってマネージド ID を割り当てます。

リモート書き込みを構成する

リモート書き込みは、Prometheus 構成ファイル prometheus.yml または Prometheus Operator で構成されます。

リモート書き込みの構成の詳細については、Prometheus.io の構成の記事を参照してください。 リモート書き込み構成のチューニングの詳細については、リモート書き込みのチューニングのページを参照してください。

Kubernetes クラスターで Prometheus Operator を実行している場合は、次の手順に従って Azure Monitor ワークスペースにデータを送信します。

  1. Microsoft Entra ID 認証を使用している場合は、base64 エンコードを使用してシークレットを変換し、そのシークレットを Kubernetes クラスターに適用します。 次を yaml ファイルに保存します。 マネージド ID 認証を使用している場合は、この手順をスキップします。
apiVersion: v1
kind: Secret
metadata:
  name: remote-write-secret
  namespace: monitoring # Replace with namespace where Prometheus Operator is deployed. 
type: Opaque
data:
  password: <base64-encoded-secret>

シークレットを適用します。

# set context to your cluster 
az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name> 

kubectl apply -f <remote-write-secret.yaml>
  1. Prometheus Operator でリモート書き込みセクションの値を更新する必要があります。 次のコードをコピーし、yaml ファイルとして保存します。 yaml ファイルの値については、以下のセクションを参照してください。 Prometheus Operator での Azure Monitor ワークスペースのリモート書き込み仕様の詳細については、Prometheus Operator のドキュメントを参照してください。
prometheus:
  prometheusSpec:
    remoteWrite:
    - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
      azureAd:
# AzureAD configuration.
# The Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
        cloud: 'AzurePublic'
        managedIdentity:
          clientId: "<clientId of the managed identity>"
        oauth:
          clientId: "<clientId of the Entra app>"
          clientSecret:
            name: remote-write-secret
            key: password
          tenantId: "<Azure subscription tenant Id>"
  1. helm を使用し、上記の yaml ファイルを使用してリモート書き込み構成を更新します。
helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus Operator is deployed>

url パラメーターは、Azure Monitor ワークスペースのメトリック インジェスト エンドポイントを指定します。 これは、Azure portal の Azure Monitor ワークスペースの [概要] ページにあります。

Azure Monitor ワークスペースのメトリック インジェスト エンドポイントを示すスクリーンショット。

実装に応じて、managed_identity、または Microsoft Entra ID アプリケーション認証の oauth を使用します。 使用していないオブジェクトを削除します。

次の Azure CLI コマンドを使用して、マネージド ID のクライアント ID を見つけます。

az identity list --resource-group <resource group name>

詳細については、「az identity list」を参照してください。

ポータルでマネージド ID 認証用のクライアントを見つけるには、Azure portal の [マネージド ID] ページに移動し、関連する ID 名を選択します。 ID の概要ページから [クライアント ID] の値をコピーします。

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

Microsoft Entra ID アプリケーションのクライアント ID を見つけるには、次の CLI を使用するか、Azure portal を使用して Microsoft Entra ID アプリケーションを作成する方法を説明するセクションの最初の手順を参照してください。

$ az ad app list --display-name < application name>

詳細については、「az ad app list」を参照してください。

Note

構成ファイルを編集した後、Prometheus を再起動して変更を適用します。

リモート書き込みデータが送信されていることを確認する

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

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

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

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

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

Grafana

Grafana で PromQL クエリを使用し、結果から期待されるデータが返されることを確認します。 Grafana を構成するには、マネージド Prometheus による Grafana のセットアップに関する記事を参照してください。

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

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

次のステップ