Mengirim data Prometheus ke Azure Monitor dengan menggunakan autentikasi identitas terkelola

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 identitas terkelola. Anda dapat menggunakan identitas yang sudah ada yang dibuat oleh AKS atau membuat identitas Anda sendiri. Kedua opsi dijelaskan di sini.

Konfigurasi klaster

Artikel ini berlaku untuk konfigurasi kluster berikut:

  • Kluster Azure Kubernetes Service
  • Kluster Kubernetes yang didukung Azure Arc

Catatan

Untuk informasi tentang menyiapkan penulisan jarak jauh untuk kluster Kubernetes yang berjalan di cloud atau lokal yang berbeda, lihat Mengirim data Prometheus ke Azure Monitor dengan menggunakan autentikasi Microsoft Entra.

Prasyarat

Versi yang didukung

Versi Prometheus yang lebih besar dari v2.45 diperlukan untuk autentikasi identitas terkelola.

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 identitas terkelola

Proses untuk menyiapkan penulisan jarak jauh Prometheus untuk aplikasi dengan menggunakan autentikasi identitas terkelola melibatkan penyelesaian tugas berikut:

  1. Dapatkan nama grup sumber daya simpul AKS.
  2. Dapatkan ID klien dari identitas terkelola yang ditetapkan pengguna.
  3. Tetapkan peran Penerbit Metrik Pemantauan pada aturan pengumpulan data ruang kerja ke identitas terkelola.
  4. Berikan akses kluster AKS ke identitas terkelola.
  5. Sebarkan kontainer sidecar untuk menyiapkan penulisan jarak jauh.

Tugas dijelaskan di bagian berikut.

Mendapatkan nama grup sumber daya simpul AKS

Grup sumber daya simpul kluster AKS berisi sumber daya yang Anda gunakan di langkah lain dalam proses ini. Grup sumber daya ini memiliki nama MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Anda dapat menemukan nama grup sumber daya dengan menggunakan menu Grup sumber daya di portal Azure.

Cuplikan layar yang memperlihatkan daftar grup sumber daya.

Mendapatkan ID klien dari identitas terkelola yang ditetapkan pengguna

Anda harus mendapatkan ID klien identitas yang akan Anda gunakan. Salin ID klien untuk digunakan nanti dalam proses.

Alih-alih membuat ID klien Anda sendiri, Anda dapat menggunakan salah satu identitas yang dibuat oleh AKS. Untuk mempelajari selengkapnya tentang identitas, lihat Menggunakan identitas terkelola di Azure Kubernetes Service.

Artikel ini menggunakan identitas kubelet. Nama identitas ini adalah <AKS-CLUSTER-NAME>-agentpool, dan berada di grup sumber daya simpul kluster AKS.

Cuplikan layar yang memperlihatkan daftar sumber daya yang ada di grup sumber daya simpul.

Pilih identitas terkelola <AKS-CLUSTER-NAME>-agentpool . Pada halaman Gambaran Umum , salin nilai untuk ID Klien. Untuk informasi selengkapnya, lihat Mengelola identitas terkelola yang ditetapkan pengguna.

Cuplikan layar yang memperlihatkan ID klien pada halaman gambaran umum untuk identitas terkelola.

Tetapkan peran Penerbit Metrik Pemantauan pada aturan pengumpulan data ruang kerja ke identitas terkelola

Identitas terkelola harus diberi peran Penerbit Metrik Pemantauan pada aturan pengumpulan data yang terkait dengan ruang kerja Azure Monitor Anda.

  1. Pada menu sumber daya untuk ruang kerja Azure Monitor Anda, pilih Gambaran Umum. Untuk Aturan pengumpulan data, pilih tautan .

    Cuplikan layar yang memperlihatkan aturan pengumpulan data yang terkait dengan ruang kerja Azure Monitor.

  2. Pada menu sumber daya untuk aturan pengumpulan data, pilih Kontrol akses (IAM).

  3. Pilih Tambahkan, lalu pilih Tambahkan penetapan peran.

    Cuplikan layar yang memperlihatkan penambahan penetapan peran pada halaman kontrol Akses.

  4. Pilih peran Penerbit Metrik Pemantauan, lalu pilih Berikutnya.

    Cuplikan layar yang memperlihatkan daftar penetapan peran.

  5. Pilih Identitas Terkelola, lalu pilih Pilih anggota. Pilih langganan yang berisi identitas yang ditetapkan pengguna, lalu pilih Identitas terkelola yang ditetapkan pengguna. Pilih identitas yang ditetapkan pengguna yang ingin Anda gunakan, lalu pilih Pilih.

    Cuplikan layar yang memperlihatkan memilih identitas terkelola yang ditetapkan pengguna.

  6. Untuk menyelesaikan penetapan peran, pilih Tinjau + tetapkan.

Memberikan akses kluster AKS ke identitas terkelola

Langkah ini tidak diperlukan jika Anda menggunakan identitas AKS. Identitas AKS sudah memiliki akses ke kluster.

Penting

Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki izin administrator akses pemilik atau pengguna untuk kluster.

  1. Identifikasi set skala komputer virtual di grup sumber daya simpul untuk kluster AKS Anda.

    Cuplikan layar yang memperlihatkan set skala komputer virtual dalam grup sumber daya simpul.

  2. Untuk setiap set skala komputer virtual, jalankan perintah berikut di Azure CLI:

    az vmss identity assign -g <AKS-NODE-RESOURCE-GROUP> -n <AKS-VMSS-NAME> --identities <USER-ASSIGNED-IDENTITY-RESOURCE-ID>
    

Menyebarkan kontainer sidecar untuk menyiapkan penulisan jarak jauh

  1. Salin YAML berikut dan simpan ke file. YAML menggunakan port 8081 sebagai port mendengarkan. Jika Anda menggunakan port yang berbeda, ubah port di 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>
    
  2. Ganti nilai berikut di YAML:

    Nilai Deskripsi
    <AKS-CLUSTER-NAME> Nama kluster AKS Anda.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20230906.1
    Versi gambar kontainer tulis jarak jauh.
    <INGESTION-URL> Nilai untuk titik akhir penyerapan Metrik dari halaman Gambaran Umum untuk ruang kerja Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> Nilai untuk ID Klien dari halaman Gambaran Umum untuk identitas terkelola.
    <CLUSTER-NAME> Nama kluster tempat Prometheus berjalan.

    Penting

    Untuk cloud Azure Government, tambahkan variabel lingkungan berikut di bagian env file YAML:

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. Buka Azure Cloud Shell dan unggah file YAML.

  4. Gunakan Helm untuk menerapkan file YAML dan memperbarui konfigurasi Prometheus Anda:

    # 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> 
    

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