Microsoft Entra ポッドマネージド ID (プレビュー) 認証を使用して Prometheus データを Azure Monitor に送信する
この記事では、Microsoft Entra ポッドマネージド ID (プレビュー) 認証を使って Azure Monitor の Prometheus 用マネージド サービスに対するリモート書き込みを設定する方法について説明します。
Note
この記事で説明するリモート書き込みサイドカー コンテナーは、次の手順を使用してのみ設定する必要があり、かつ、Azure Kubernetes Service (AKS) クラスターで既に Microsoft Entra ポッドが有効になっている場合のみです。 Microsoft Entra ポッドマネージド ID は、非推奨となり、Microsoft Entra ワークロード ID に置き換えられました。 Microsoft Entra ワークロード ID 認証を使用することをお勧めします。
前提条件
サポートされているバージョン
マネージド ID 認証には、v2.45 より大きい Prometheus バージョンが必要です。
Azure Monitor ワークスペース
この記事では、Prometheus メトリックを Azure Monitor ワークスペースに送信する方法について説明します。 Azure Monitor ワークスペースを作成するには、Azure Monitor ワークスペースの管理に関するページを参照してください。
アクセス許可
この記事の手順を完了するには、クラスターまたはリソースの管理者アクセス許可が必要です。
Microsoft Entra ポッドマネージド ID 用にアプリケーションを設定する
Microsoft Entra ポッドマネージド ID 認証を使用してアプリケーションの Prometheus リモート書き込みを設定するプロセスでは、次のタスクを完了する必要があります。
- Microsoft Entra ID を使用してユーザー割り当てマネージド ID を登録する
- マネージド ID オペレーターと仮想マシン共同作成者の各ロールをマネージド ID に割り当てます。
- 監視メトリック パブリッシャー ロールをユーザー割り当てマネージド ID に割り当てます。
- Azure AD バインディングを作成します。
- aadpodidbinding ラベルを Prometheus ポッドに追加します。
- サイドカー コンテナーをデプロイしてリモート書き込みを設定します。
次の各セクションで、これらのタスクについて説明します。
Microsoft Entra ID を使用してマネージド ID を登録する
ユーザー割り当てマネージド ID を作成するか、既存のユーザー割り当てマネージド ID を登録します。
マネージド ID 作成の詳細については、「マネージド ID 認証を使用して Prometheus 用の Azure Monitor マネージド サービスのリモート書き込みを設定する」を参照してください。
マネージド ID オペレーターと仮想マシン共同作成者の各ロールをマネージド ID に割り当てる
az role assignment create --role "Managed Identity Operator" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId>
az role assignment create --role "Virtual Machine Contributor" --assignee <managed identity clientID> --scope <Node ResourceGroup Id>
AKS クラスターのノード リソース グループには、このプロセスの他の手順で使用するリソースが含まれています。 このリソース グループには、MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>
という形式の名前が付きます。 リソース グループ名は、Azure portal の [リソース グループ] メニューを使用して確認できます。
監視メトリック パブリッシャー ロールをマネージド ID に割り当てる
az role assignment create --role "Monitoring Metrics Publisher" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId>
Azure AD バインディングを作成する
ユーザー割り当てマネージド ID には、その ID をポッドマネージド ID として使用するための ID バインディングが必要です。
次の YAML を aadpodidentitybinding.yaml ファイルにコピーします。
apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzureIdentityBinding
metadata:
name: demo1-azure-identity-binding
spec:
AzureIdentity: “<AzureIdentityName>”
Selector: “<AzureIdentityBindingSelector>”
次のコマンドを実行します。
kubectl create -f aadpodidentitybinding.yaml
aadpodidbinding ラベルを Prometheus ポッドに追加する
ポッド ID を有効にするために、aadpodidbinding
ラベルを Prometheus ポッドに追加する必要があります。 次のセクションで説明するように、deployment.yaml ファイルを更新するか、サイドカー コンテナーをデプロイするときにラベルを挿入することで、ラベルを追加できます。
サイドカー コンテナーをデプロイしてリモート書き込みを設定する
次の YAML をコピーし、ファイルに保存します。 この YAML では、リッスン ポートとしてポート 8081 が使用されます。 別のポートを使用する場合は、YAML でその値を変更してください。
prometheus: prometheusSpec: podMetadata: labels: aadpodidbinding: <AzureIdentityBindingSelector> externalLabels: cluster: <AKS-CLUSTER-NAME> remoteWrite: - url: 'http://localhost:8081/api/v1/write' 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 内の次の値を置き換えます。
Value 説明 <AKS-CLUSTER-NAME>
AKS クラスターの名前。 <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.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/
Helm を使って YAML ファイルを適用し、Prometheus 構成を更新します。
# set the 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 マネージド サービスの詳細
- Azure Monitor の Prometheus 用マネージド サービスでのリモート書き込み
- Microsoft Entra 認証を使用して Prometheus データを Azure Monitor に送信する
- マネージド ID 認証を使用して Prometheus データを Azure Monitor に送信する
- Microsoft Entra ワークロード ID (プレビュー) 認証を使用して Prometheus データを Azure Monitor に送信する