仮想マシン、スケール セット、または Kubernetes クラスターから Azure Monitor ワークスペースに Prometheus メトリックを送信する
[アーティクル] 10/15/2024
4 人の共同作成者
フィードバック
この記事の内容
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 Kubernetes Service (AKS)
Azure マネージド リソースのリモート書き込みを設定するには、「ユーザー割り当てマネージド ID を使用したリモート書き込み 」を参照してください。
Azure 以外の環境で実行されている仮想マシンと Kubernetes クラスター
Azure 以外の環境に仮想マシンまたは Kubernetes クラスターがある、または Azure Arc にオンボード済みである場合は、セルフマネージド Prometheus をインストールし、Microsoft Entra ID アプリケーション認証を使用するリモート書き込みを構成します。 詳細については、Microsoft Entra ID アプリケーション認証を使用したリモート書き込み の説明を参照してください。
Azure Arc 対応サービスにオンボードすると、Azure で Azure 以外の仮想マシンを管理および構成できます。 Azure Arc 対応サーバーへの Virtual Machines のオンボードの詳細については、Azure Arc 対応サーバー および Azure Arc 対応 Kubernetes に関するページを参照してください。 Arc 対応サービスがサポートしているのは Microsoft Entra ID 認証だけです。
Note
Azure Monitor ワークスペースへのリモート書き込みでは、システム割り当てマネージド ID はサポートされていません。 ユーザー割り当てマネージド ID または Microsoft Entra ID アプリケーション認証を使用します。
前提条件
サポートされているバージョン
マネージド 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 以外の環境で実行されている場合は、Microsoft Entra ID アプリケーション認証を使用できます。
Azure Monitor ワークスペースへのリモート書き込み用にユーザー割り当てマネージド ID を構成するには、次の手順を実行します。
ユーザー割り当てマネージド ID を作成する
リモート書き込み構成で使用するユーザーマネージド ID を作成するには、「ユーザー割り当てマネージド ID の管理 」を参照してください。
作成したマネージド ID の clientId
の値をメモします。 この ID は、Prometheus のリモート書き込み構成で使用されます。
監視メトリック発行者ロールをアプリケーションに割り当てる
ワークスペースのデータ収集ルールで、Monitoring Metrics Publisher
ロールをマネージド ID に割り当てます。
Azure Monitor ワークスペースの [概要] ページで、[データ収集ルール] リンクを選択します。
データ収集ルールのページで、[アクセス制御 (IAM)] を選択します。
[追加] および [ロールの割り当ての追加] を選択します。
[監視メトリック発行者] を検索して選択し、[次へ] を選択します。
[マネージド ID] を選択します。
[メンバーの選択] を選びます。
[マネージド エンティティ] ドロップダウンで、[ユーザー割り当てマネージド ID] を選択します。
使用するユーザー割り当て ID を選択し、[選択] をクリックします。
[確認と割り当て] を選択して、ロールの割り当てを完了します。
マネージド ID を仮想マシンまたは仮想マシン スケール セットに割り当てる
重要
このセクションの手順を完了するには、仮想マシンまたは仮想マシン スケール セットの所有者またはユーザー アクセス管理者のアクセス許可が必要です。
Azure portal で、クラスター、Virtual Machines、または Virtual Machine Scale Sets のページに移動します。
[ID] を選択します。
[ユーザー割り当て] を選びます。
[追加] を選択します。
作成したユーザー割り当てマネージド ID を選択し、[追加] を選択します。
Azure Kubernetes Service のマネージド ID を割り当てる
Azure Kubernetes サービス (AKS) の場合、マネージド ID を仮想マシン スケール セットに割り当てる必要があります。
AKS は、仮想マシン スケール セットを含むリソース グループを作成します。 リソース グループ名の形式は MC_<resource group name>_<AKS cluster name>_<region>
です。
リソース グループ内の仮想マシン スケール セットごとに、前のセクションの「マネージド ID を仮想マシンまたは仮想マシン スケール セットに割り当てる 」の手順に従ってマネージド ID を割り当てます。
Microsoft Entra ID アプリケーション認証を使用したリモート書き込み
Microsoft Entra ID アプリケーション認証は、すべての環境で使用できます。 Prometheus サービスが Azure マネージド環境で実行されている場合は、ユーザー割り当てマネージド ID 認証を使用することを検討してください。
Microsoft Entra ID アプリケーションを使用して Azure Monitor ワークスペースへのリモート書き込みを構成するには、Microsoft Entra アプリケーションを作成します。 Azure Monitor ワークスペースのデータ収集ルールで、Monitoring Metrics Publisher
ロールを Microsoft Entra アプリケーションに割り当てます。
Note
Microsoft Entra アプリケーションでは、クライアント シークレットまたはパスワードが使用されます。 クライアント シークレットには有効期限があります。 認証済みアクセスを失わないように、必ず有効期限が切れる前に新しいクライアント シークレットを作成してください。
Microsoft Entra ID アプリケーションを作成する
ポータルを使用して Microsoft Entra ID アプリケーションを作成するには、「リソースにアクセスできる Microsoft Entra ID アプリケーションとサービス プリンシパルを作成する 」を参照してください。
Microsoft Entra アプリケーションを作成したら、クライアント ID を取得し、クライアント シークレットを生成します。
アプリケーションのリストで、登録済みアプリケーションのアプリケーション (クライアント) ID の値をコピーします。 この値は、Prometheus リモート書き込み構成で client_id
の値として使用されます。
[証明書とシークレット] を選択します
[クライアント シークレット] を選択し、[新しいクライアント シークレット] を選択して新しいシークレットを作成します
説明を入力し、有効期限を設定して、[追加] を選択します。
シークレットの値を安全にコピーします。 この値は、Prometheus リモート書き込み構成で client_secret
の値として使用されます。 クライアント シークレットの値は作成時にのみ表示され、後で取得することはできません。 失われた場合は、新しいクライアント シークレットを作成する必要があります。
監視メトリック発行者ロールをアプリケーションに割り当てる
ワークスペースのデータ収集ルールの Monitoring Metrics Publisher
ロールをアプリケーションに割り当てます。
Azure Monitor ワークスペースの概要ページで、[データ収集ルール] リンクを選択します。
データ収集ルールの概要ページで、[アクセス制御 (IAM)] を選択します。
追加 を選択し、ロール割り当ての追加 を選択します。
[監視メトリック発行者] ロールを選択して、[次へ] を選択します。
[ユーザー、グループ、またはサービス プリンシパル] を選んでから、[メンバーの選択] を選びます。 作成したアプリケーションを選び、[選択] を選びます。
ロールの割り当てを完了するには、[レビューと割り当て] を選びます。
CLI を使用してユーザー割り当て ID と Microsoft Entra ID アプリを作成する
ユーザー割り当てマネージド ID を作成する
次の手順を使用して、リモート書き込み用のユーザー割り当てマネージド ID を作成します。
ユーザー割り当てマネージド ID を作成する
ワークスペースのデータ収集ルールの Monitoring Metrics Publisher
ロールをマネージド ID に割り当てます
マネージド ID を Virtual Machines または Virtual Machine Scale Sets に割り当てます。
作成するマネージド ID の clientId
の値をメモします。 この ID は、Prometheus のリモート書き込み構成で使用されます。
次の CLI コマンドを使用して、ユーザー割り当てマネージド ID を作成します。
az account set \
--subscription <subscription id>
az identity create \
--name <identity name> \
--resource-group <resource group name>
表示される出力の例を次に示します。
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/PromRemoteWriteIdentity",
"location": "eastus",
"name": "PromRemoteWriteIdentity",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"resourceGroup": "rg-001",
"systemData": null,
"tags": {},
"tenantId": "ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
ワークスペースのデータ収集ルールの Monitoring Metrics Publisher
ロールをマネージド ID に割り当てます。
az role assignment create \
--role "Monitoring Metrics Publisher" \
--assignee <managed identity client ID> \
--scope <data collection rule resource ID>
たとえば、 にします。
az role assignment create \
--role "Monitoring Metrics Publisher" \
--assignee 00001111-aaaa-2222-bbbb-3333cccc4444 \
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MA_amw-001_eastus_managed/providers/Microsoft.Insights/dataCollectionRules/amw-001
マネージド ID を Virtual Machines または Virtual Machine Scale Sets に割り当てます。
Virtual Machines の場合:
az vm identity assign \
-g <resource group name> \
-n <virtual machine name> \
--identities <user assigned identity resource ID>
Virtual Machine Scale Sets の場合:
az vmss identity assign \
-g <resource group name> \
-n <VSS name> \
--identities <user assigned identity resource ID>
Virtual Machine Scale Sets の場合の例:
az vm identity assign \
-g rg-prom-on-vm \
-n win-vm-prom \
--identities /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/PromRemoteWriteIdentity
詳細については、「az identity create 」と「az role assignment create 」を参照してください。
Microsoft Entra ID アプリケーションを作成する
CLI を使用して Microsoft Entra ID アプリケーションを作成し、Monitoring Metrics Publisher
ロールを割り当てるには、次のコマンドを実行します。
az ad sp create-for-rbac --name <application name> \
--role "Monitoring Metrics Publisher" \
--scopes <azure monitor workspace data collection rule Id>
たとえば、 にします。
az ad sp create-for-rbac \
--name PromRemoteWriteApp \
--role "Monitoring Metrics Publisher" \
--scopes /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MA_amw-001_eastus_managed/providers/Microsoft.nsights/dataCollectionRules/amw-001
表示される出力の例を次に示します。
{
"appId": "66667777-aaaa-8888-bbbb-9999cccc0000",
"displayName": "PromRemoteWriteApp",
"password": "Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2",
"tenant": "ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d"
}
出力には、appId
の値と password
の値が含まれています。 client_id
と client_secret
の値として Prometheus リモート書き込み構成で使用するためにこれらの値を保存します。パスワードまたはクライアント シークレットの値は作成時にのみ表示され、後で取得することはできません。 失われた場合は、新しいクライアント シークレットを作成する必要があります。
詳細については、「az ad app create 」と「az ad sp create-for-rbac 」を参照してください。
リモート書き込みは、Prometheus 構成ファイル prometheus.yml
または Prometheus Operator で構成されます。
リモート書き込みの構成の詳細については、Prometheus.io の構成 の記事を参照してください。 リモート書き込み構成のチューニングの詳細については、リモート書き込みのチューニング のページを参照してください。
Azure Monitor ワークスペースにデータを送信するには、セルフマネージド Prometheus インスタンスの構成ファイル (prometheus.yml) に次のセクションを追加します。
remote_write:
- url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
# AzureAD configuration.
# The Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
azuread:
cloud: 'AzurePublic'
managed_identity:
client_id: "<client-id of the managed identity>"
oauth:
client_id: "<client-id from the Entra app>"
client_secret: "<client secret from the Entra app>"
tenant_id: "<Azure subscription tenant Id>"
Prometheus Operator
Kubernetes クラスターで Prometheus Operator を実行している場合は、次の手順に従って Azure Monitor ワークスペースにデータを送信します。
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>
Prometheus Operator でリモート書き込みセクションの値を更新します。 次の 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>"
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 ワークスペースの [概要] ページにあります。
実装に応じて、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] の値をコピーします。
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 ワークスペースにリモート データが表示されない場合は、「リモート書き込みのトラブルシューティング 」で一般的な問題と解決策を確認してください。
次のステップ