Mengirim data Prometheus ke Azure Monitor dengan menggunakan autentikasi Microsoft Entra
Artikel ini menjelaskan cara menyiapkan penulisan jarak jauh untuk mengirim data dari server Prometheus yang dikelola sendiri yang berjalan di kluster Azure Kubernetes Service (AKS) atau kluster Kubernetes dengan dukungan Azure Arc dengan menggunakan autentikasi Microsoft Entra dan kontainer mobil samping yang disediakan Azure Monitor. Perhatikan bahwa Anda juga dapat langsung mengonfigurasi penulisan jarak jauh dalam konfigurasi Prometheus untuk hal yang sama.
Catatan
Kami menyarankan agar Anda langsung mengonfigurasi Prometheus yang berjalan di kluster Kubernetes untuk menulis dari jarak jauh ke Ruang Kerja Azure Monitor. Lihat Mengirim data Prometheus ke Azure Monitor menggunakan autentikasi Microsoft Entra Id untuk mempelajari selengkapnya. Langkah-langkah di bawah ini menggunakan kontainer mobil samping Azure Monitor.
Konfigurasi klaster
Artikel ini berlaku untuk konfigurasi kluster berikut:
- Kluster Azure Kubernetes Service
- Kluster Kubernetes yang didukung Azure Arc
- Kluster Kubernetes yang berjalan di cloud atau lokal yang berbeda
Catatan
Untuk kluster AKS atau kluster Kubernetes dengan dukungan Azure Arc, kami sarankan Anda menggunakan autentikasi identitas terkelola. Untuk informasi selengkapnya, lihat Layanan terkelola Azure Monitor untuk penulisan jarak jauh Prometheus untuk identitas terkelola.
Prasyarat
Versi yang didukung
- Versi Prometheus yang lebih besar dari v2.48 diperlukan untuk autentikasi aplikasi ID Microsoft Entra.
Ruang kerja Azure Monitor
Artikel ini membahas pengiriman metrik Prometheus ke ruang kerja Azure Monitor. Untuk membuat ruang kerja azure monitor, lihat Mengelola ruang kerja Azure Monitor.
Izin
Izin administrator untuk kluster atau sumber daya diperlukan untuk menyelesaikan langkah-langkah dalam artikel ini.
Menyiapkan aplikasi untuk ID Microsoft Entra
Proses untuk menyiapkan penulisan jarak jauh Prometheus untuk aplikasi dengan menggunakan autentikasi Microsoft Entra melibatkan penyelesaian tugas berikut:
- Daftarkan aplikasi dengan ID Microsoft Entra.
- Dapatkan ID klien aplikasi Microsoft Entra.
- Tetapkan peran Penerbit Metrik Pemantauan pada aturan pengumpulan data ruang kerja ke aplikasi.
- Buat brankas kunci Azure dan buat sertifikat.
- Tambahkan sertifikat ke aplikasi Microsoft Entra.
- Tambahkan driver dan penyimpanan CSI untuk kluster.
- Sebarkan kontainer sidecar untuk menyiapkan penulisan jarak jauh.
Tugas dijelaskan di bagian berikut.
Mendaftarkan aplikasi dengan ID Microsoft Entra
Selesaikan langkah-langkah untuk mendaftarkan aplikasi dengan ID Microsoft Entra dan buat perwakilan layanan.
Mendapatkan ID klien aplikasi Microsoft Entra
- Di portal Azure, buka menu ID Microsoft Entra dan pilih Pendaftaran aplikasi.
- Dalam daftar aplikasi, salin nilai untuk ID Aplikasi (klien) untuk aplikasi terdaftar.
Tetapkan peran Penerbit Metrik Pemantauan pada aturan pengumpulan data ruang kerja ke aplikasi
Aplikasi harus diberi peran Penerbit Metrik Pemantauan pada aturan pengumpulan data yang terkait dengan ruang kerja Azure Monitor Anda.
Pada menu sumber daya untuk ruang kerja Azure Monitor Anda, pilih Gambaran Umum. Untuk Aturan pengumpulan data, pilih tautan .
Pada menu sumber daya untuk aturan pengumpulan data, pilih Kontrol akses (IAM).
Pilih Tambahkan, lalu pilih Tambahkan penetapan peran.
Pilih peran Penerbit Metrik Pemantauan, lalu pilih Berikutnya.
Pilih Pengguna, grup, atau perwakilan layanan, lalu pilih Pilih anggota. Pilih aplikasi yang Anda buat, lalu pilih Pilih.
Untuk menyelesaikan penetapan peran, pilih Tinjau + tetapkan.
Membuat brankas kunci Azure dan membuat sertifikat
- Jika Anda belum memiliki brankas kunci Azure, buat brankas.
- Buat sertifikat dengan menggunakan panduan di Menambahkan sertifikat ke Key Vault.
- Unduh sertifikat dalam format CER dengan menggunakan panduan dalam Mengekspor sertifikat dari Key Vault.
Menambahkan sertifikat ke aplikasi Microsoft Entra
Pada menu sumber daya untuk aplikasi Microsoft Entra Anda, pilih Sertifikat & rahasia.
Pada tab Sertifikat , pilih Unggah sertifikat dan pilih sertifikat yang Anda unduh.
Peringatan
Sertifikat memiliki tanggal kedaluwarsa. Pengguna bertanggung jawab untuk menjaga sertifikat tetap valid.
Menambahkan driver dan penyimpanan CSI untuk kluster
Catatan
Konfigurasi driver CSI Azure Key Vault hanyalah salah satu cara untuk mendapatkan sertifikat yang dipasang pada pod. Kontainer tulis jarak jauh memerlukan jalur lokal ke sertifikat di pod hanya untuk <AZURE_CLIENT_CERTIFICATE_PATH>
nilai dalam langkah Sebarkan kontainer sidecar untuk menyiapkan penulisan jarak jauh.
Langkah ini diperlukan hanya jika Anda tidak mengaktifkan Penyedia Azure Key Vault untuk Driver Secrets Store CSI saat Anda membuat kluster.
Untuk mengaktifkan Penyedia Azure Key Vault untuk Driver Secrets Store CSI untuk kluster Anda, jalankan perintah Azure CLI berikut:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Untuk memberikan akses identitas ke brankas kunci, jalankan perintah ini:
# show client id of the managed identity of the cluster az aks show -g <resource-group> -n <cluster-name> --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId -o tsv # set policy to access keys in your key vault az keyvault set-policy -n <keyvault-name> --key-permissions get --spn <identity-client-id> # set policy to access secrets in your key vault az keyvault set-policy -n <keyvault-name> --secret-permissions get --spn <identity-client-id> # set policy to access certs in your key vault az keyvault set-policy -n <keyvault-name> --certificate-permissions get --spn <identity-client-id>
Buat
SecretProviderClass
dengan menyimpan YAML berikut ke file bernama secretproviderclass.yml. Ganti nilai untukuserAssignedIdentityID
,keyvaultName
,tenantId
, dan objek yang akan diambil dari brankas kunci Anda. Untuk informasi tentang nilai apa yang akan digunakan, lihat Menyediakan identitas untuk mengakses Penyedia Azure Key Vault untuk Driver CSI Secrets Store.# This is a SecretProviderClass example using user-assigned identity to access your key vault apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: azure-kvname-user-msi spec: provider: azure parameters: usePodIdentity: "false" useVMManagedIdentity: "true" # Set to true for using managed identity userAssignedIdentityID: <client-id> # Set the client ID of the user-assigned managed identity to use keyvaultName: <key-vault-name> # Set to the name of your key vault cloudName: "" # [OPTIONAL for Azure] if not provided, the Azure environment defaults to AzurePublicCloud objects: | array: - | objectName: <name-of-cert> objectType: secret # object types: secret, key, or cert objectFormat: pfx objectEncoding: base64 objectVersion: "" tenantId: <tenant-id> # The tenant ID of the key vault
Terapkan
SecretProviderClass
dengan menjalankan perintah berikut pada kluster Anda:kubectl apply -f secretproviderclass.yml
Menyebarkan kontainer sidecar untuk menyiapkan penulisan jarak jauh
Salin YAML berikut dan simpan ke file. YAML menggunakan port 8081 sebagai port mendengarkan. Jika Anda menggunakan port yang berbeda, ubah nilai tersebut di YAML.
prometheus: prometheusSpec: externalLabels: cluster: <CLUSTER-NAME> ## Azure Managed Prometheus currently exports some default mixins in Grafana. ## These mixins are compatible with data scraped by Azure Monitor agent on your ## Azure Kubernetes Service cluster. These mixins aren't compatible with Prometheus ## metrics scraped by the Kube Prometheus stack. ## To make these mixins compatible, uncomment the 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 ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write remoteWrite: - url: 'http://localhost:8081/api/v1/write' # Additional volumes on the output StatefulSet definition. # Required only for Microsoft Entra ID based auth volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: azure-kvname-user-msi containers: - name: prom-remotewrite image: <CONTAINER-IMAGE-VERSION> imagePullPolicy: Always # Required only for Microsoft Entra ID based auth volumeMounts: - name: secrets-store-inline mountPath: /mnt/secrets-store readOnly: true 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: aadApplication - name: AZURE_CLIENT_ID value: '<APP-REGISTRATION-CLIENT-ID>' - name: AZURE_TENANT_ID value: '<TENANT-ID>' - name: AZURE_CLIENT_CERTIFICATE_PATH value: /mnt/secrets-store/<CERT-NAME> - name: CLUSTER value: '<CLUSTER-NAME>'
Ganti nilai berikut dalam file YAML:
Nilai Deskripsi <CLUSTER-NAME>
Nama kluster AKS Anda. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
Versi gambar kontainer tulis jarak jauh.<INGESTION-URL>
Nilai untuk titik akhir penyerapan Metrik dari halaman Gambaran Umum untuk ruang kerja Azure Monitor. <APP-REGISTRATION -CLIENT-ID>
ID klien aplikasi Anda. <TENANT-ID>
ID penyewa aplikasi Microsoft Entra. <CERT-NAME>
Nama sertifikat. <CLUSTER-NAME>
Nama kluster tempat Prometheus berjalan. Buka Azure Cloud Shell dan unggah file YAML.
Gunakan Helm untuk menerapkan file YAML dan memperbarui konfigurasi Prometheus Anda:
# 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>
Verifikasi dan pemecahan masalah
Untuk informasi verifikasi dan pemecahan masalah, lihat Pemecahan masalah penulisan jarak jauh dan layanan terkelola Azure Monitor untuk penulisan jarak jauh Prometheus.
Langkah berikutnya
- Mengumpulkan metrik Prometheus dari kluster AKS
- Pelajari selengkapnya tentang layanan terkelola Azure Monitor untuk Prometheus
- Penulisan jarak jauh di layanan terkelola Azure Monitor untuk Prometheus
- Mengirim data Prometheus ke Azure Monitor dengan menggunakan autentikasi identitas terkelola
- Mengirim data Prometheus ke Azure Monitor dengan menggunakan autentikasi ID Beban Kerja Microsoft Entra (pratinjau)
- Mengirim data Prometheus ke Azure Monitor dengan menggunakan autentikasi identitas yang dikelola pod Microsoft Entra (pratinjau)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk