この記事では、マネージド 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 クラスター
注
別のクラウドまたはオンプレミスで実行されている Kubernetes クラスターのリモート書き込みの設定については、「 Microsoft Entra 認証を使用して Prometheus データを Azure Monitor に送信する」を参照してください。
前提条件
サポートされているバージョン
マネージド ID 認証には、v2.45 より大きい Prometheus バージョンが必要です。
Azure Monitor ワークスペース
この記事では、Prometheus メトリックを Azure Monitor ワークスペースに送信する方法について説明します。 Azure Monitor ワークスペースを作成するには、「 Azure Monitor ワークスペースの管理」を参照してください。
アクセス許可
この記事の手順を完了するには、クラスターまたはリソースの管理者アクセス許可が必要です。
マネージド ID 用にアプリケーションを設定する
マネージド ID 認証を使用してアプリケーションの Prometheus リモート書き込みを設定するプロセスでは、次のタスクを完了する必要があります。
- クラスターのノード リソース グループの名前を取得します。
- ユーザー割り当てマネージド ID のクライアント ID を取得する。
- ワークスペース データ収集規則に対する監視メトリック発行者ロールをマネージド ID に割り当てる。
- クラスターにマネージド ID へのアクセス権を付与します。
- サイドカー コンテナーをデプロイしてリモート書き込みを設定する。
次の各セクションで、これらのタスクについて説明します。
クラスターのノード リソース グループの名前を取得する
クラスターのノード リソース グループには、このプロセスの他の手順で使用するリソースが含まれています。 このリソース グループには、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 には、Azure Monitor ワークスペースに関連付けられているデータ収集規則に対する監視メトリック発行者ロールが必要です。
Azure Monitor ワークスペースのリソース メニューで、[ 概要] を選択します。 [データ収集ルール] で、リンクを選択します。
データ収集ルールのリソース メニューで、 アクセス制御 (IAM) を選択します。
[ 追加] を選択し、[ ロールの割り当ての追加] を選択します。
Monitoring Metrics Publisher ロールを選択し、[次へ] を選択します。
[ マネージド ID] を選択し、[ メンバーの選択] を選択します。 ユーザー割り当て ID を含むサブスクリプションを選択し、[ ユーザー割り当てマネージド ID] を選択します。 使用するユーザーに割り当てられた ID を選び、その後、選択をクリックしてください。
ロールの割り当てを完了するには、[ 確認と割り当て] を選択します。
AKS クラスターにマネージド ID へのアクセス権を付与する
AKS ID を使用している場合、この手順は必要ありません。 AKS ID は既にクラスターにアクセスできます。
重要
このセクションの手順を完了するには、クラスターの所有者またはユーザー アクセス管理者のアクセス許可が必要です。
クラスターの ノード リソース グループ 内の仮想マシン スケール セットを特定します。
仮想マシン スケール セットごとに、Azure CLI で次のコマンドを実行します。
az vmss identity assign -g <NODE-RESOURCE-GROUP> -n <VMSS-NAME> --identities <USER-ASSIGNED-IDENTITY-RESOURCE-ID>
サイドカー コンテナーをデプロイしてリモート書き込みを設定する
次の 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>
YAML 内の次の値を置き換えます。
価値 説明 <AKS-CLUSTER-NAME>
AKS クラスターの名前。 <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20250326.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/
Azure Cloud Shell を開き、YAML ファイルをアップロードします。
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 のリモート書き込み」を参照してください。
次のステップ
- AKS クラスターから Prometheus メトリックを収集する
- Prometheus 用 Azure Monitor マネージド サービスの詳細を確認する
- Prometheus 用 Azure Monitor マネージド サービスでのリモート書き込み
- Microsoft Entra 認証を使用して Prometheus データを Azure Monitor に送信する
- Microsoft Entra Workload ID (プレビュー) 認証を使用して Prometheus データを Azure Monitor に送信する
- Microsoft Entra ポッドマネージド ID (プレビュー) 認証を使用して Prometheus データを Azure Monitor に送信する