Membuat dan memvalidasi file konfigurasi kustom untuk metrik Prometheus di Azure Monitor

Selain target scrape default yang diekstrak agen Azure Monitor Prometheus secara default, gunakan langkah-langkah berikut untuk memberikan lebih banyak konfigurasi scrape ke agen menggunakan configmap. Agen Azure Monitor Prometheus tidak memahami atau memproses CRD operator untuk konfigurasi scrape, tetapi sebaliknya menggunakan konfigurasi Prometheus asli seperti yang didefinisikan dalam konfigurasi Prometheus.

Tiga peta konfigurasi yang dapat digunakan untuk pengikisan target kustom adalah -

  • ama-metrics-prometheus-config (Recommended) - Ketika configmap dengan nama ini dibuat, pekerjaan scrape yang ditentukan di dalamnya dijalankan dari pod replika metrik Azure monitor yang berjalan di kluster.
  • ama-metrics-prometheus-config-node (Advanced) - Ketika configmap dengan nama ini dibuat, pekerjaan scrape yang ditentukan di dalamnya dijalankan dari setiap pod Linux DaemonSet yang berjalan di kluster. Untuk informasi selengkapnya, lihat Penyetelan Tingkat Lanjut.
  • ama-metrics-prometheus-config-node-windows (Advanced) - Ketika configmap dengan nama ini dibuat, pekerjaan scrape yang ditentukan di dalamnya dijalankan dari setiap windows DaemonSet. Untuk informasi selengkapnya, lihat Penyetelan Tingkat Lanjut.

Membuat file konfigurasi Prometheus

Salah satu cara yang lebih mudah untuk menulis pekerjaan konfigurasi scrape Prometheus:

  • Langkah:1 Gunakan file konfigurasi (yaml) untuk menulis/menentukan pekerjaan scrape
  • Langkah:2 Validasi file konfigurasi scrape menggunakan alat kustom (seperti yang ditentukan dalam artikel ini) lalu konversi configfile tersebut ke configmap
  • Langkah:3 Sebarkan file konfigurasi scrape sebagai configmap ke kluster Anda.

Melakukan cara ini lebih mudah untuk menulis konfigurasi yaml (yang sangat sensitif terhadap ruang), dan tidak menambahkan ruang yang tidak diinginkan dengan langsung menulis konfigurasi scrape di dalam peta konfigurasi.

Buat file konfigurasi scrape Prometheus bernama prometheus-config. Untuk informasi selengkapnya, lihat tips dan contoh konfigurasi yang memberikan detail selengkapnya tentang penulisan konfigurasi scrape untuk Prometheus. Anda juga dapat merujuk ke referensi konfigurasi scrape Prometheus.io. File konfigurasi Anda mencantumkan konfigurasi scrape di bawah bagian dan scrape_configs dapat secara opsional menggunakan bagian global untuk mengatur global scrape_interval, scrape_timeout, dan external_labels.

Tip

Perubahan pada bagian global akan berdampak pada konfigurasi default dan konfigurasi kustom.

Berikut adalah contoh file konfigurasi scrape Prometheus:

global:
  scrape_interval: 30s
scrape_configs:
- job_name: my_static_config
  scrape_interval: 60s
  static_configs:
    - targets: ['my-static-service.svc.cluster.local:1234']

- job_name: prometheus_example_app
  scheme: http
  kubernetes_sd_configs:
    - role: service
  relabel_configs:
    - source_labels: [__meta_kubernetes_service_name]
      action: keep
      regex: "prometheus-example-service"

Memvalidasi file konfigurasi scrape

Agen menggunakan alat kustom promconfigvalidator untuk memvalidasi konfigurasi Prometheus yang diberikan melalui peta konfigurasi. Jika konfigurasi tidak valid, konfigurasi kustom yang diberikan akan ditolak oleh agen addon. Setelah Anda memiliki file konfigurasi Prometheus, Anda dapat secara opsional menggunakan promconfigvalidator alat untuk memvalidasi konfigurasi Anda sebelum membuat peta konfigurasi yang digunakan agen.

Alat promconfigvalidator ini dikirim di dalam pod addon metrik Azure Monitor. Anda dapat menggunakan salah ama-metrics-node-* satu pod di kube-system namespace layanan di kluster Anda untuk mengunduh alat untuk validasi. Gunakan kubectl cp untuk mengunduh alat dan konfigurasinya:

for podname in $(kubectl get pods -l rsName=ama-metrics -n=kube-system -o json | jq -r '.items[].metadata.name'); do kubectl cp -n=kube-system "${podname}":/opt/promconfigvalidator ./promconfigvalidator;  kubectl cp -n=kube-system "${podname}":/opt/microsoft/otelcollector/collector-config-template.yml ./collector-config-template.yml; chmod 500 promconfigvalidator; done

Setelah menyalin executable dan yaml, temukan jalur file konfigurasi Prometheus yang Anda tulis. Kemudian ganti <config path> dalam perintah dan jalankan validator dengan perintah :

./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"

Menjalankan validator menghasilkan file merged-otel-config.yaml konfigurasi gabungan jika tidak ada jalur yang disediakan dengan parameter opsional output . Jangan gunakan file gabungan yang dibuat secara otomatis ini sebagai konfigurasi ke agen pengumpul metrik, karena hanya digunakan untuk tujuan validasi dan penelusuran kesalahan alat.

Menyebarkan file konfigurasi sebagai configmap

File konfigurasi Prometheus kustom Anda digunakan sebagai bidang bernama prometheus-config di dalam metrik addon configmap ama-metrics-prometheus-config (atau) (atau) ama-metrics-prometheus-config-nodeama-metrics-prometheus-config-node-windows di kube-system namespace. Anda dapat membuat configmap dari file konfigurasi scrape yang Anda buat di atas, dengan mengganti nama file konfigurasi Prometheus Anda menjadi prometheus-config (tanpa ekstensi file) dan menjalankan satu atau beberapa perintah berikut, tergantung pada peta konfigurasi mana yang ingin Anda buat untuk konfigurasi pekerjaan scrape kustom Anda.

Ex;- untuk membuat configmap yang akan digunakan oleh replicsset

kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system

Ini membuat peta konfigurasi bernama ama-metrics-prometheus-config di kube-system namespace layanan. Pod replika metrik Azure Monitor dimulai ulang dalam 30-60 detik untuk menerapkan konfigurasi baru. Untuk melihat apakah ada masalah dengan validasi, pemrosesan, atau penggabungan konfigurasi, Anda dapat melihat ama-metrics pod replika

Ex;- untuk membuat configmap yang akan digunakan oleh linux DaemonSet

kubectl create configmap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system

Ini membuat peta konfigurasi bernama ama-metrics-prometheus-config-node di kube-system namespace layanan. Setiap metrik Azure Monitor, pod Linux DaemonSet dimulai ulang dalam 30-60 detik untuk menerapkan konfigurasi baru. Untuk melihat apakah ada masalah dengan validasi, pemrosesan, atau penggabungan konfigurasi, Anda dapat melihat ama-metrics-node pod linux deamonset

Ex;- untuk membuat configmap yang akan digunakan oleh windows DaemonSet

kubectl create configmap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system

Ini membuat peta konfigurasi bernama ama-metrics-prometheus-config-node-windows di kube-system namespace layanan. Setiap metrik Azure Monitor, pod Windows DaemonSet dimulai ulang dalam 30-60 detik untuk menerapkan konfigurasi baru. Untuk melihat apakah ada masalah dengan validasi, pemrosesan, atau penggabungan konfigurasi, Anda dapat melihat ama-metrics-win-node pod windows deamonset

Pastikan bahwa file konfigurasi Prometheus dinamai prometheus-config sebelum menjalankan perintah berikut karena nama file digunakan sebagai nama pengaturan configmap.

Ini membuat peta konfigurasi bernama ama-metrics-prometheus-config di kube-system namespace layanan. Pod metrik Azure Monitor dimulai ulang untuk menerapkan konfigurasi baru. Untuk melihat apakah ada masalah dengan validasi, pemrosesan, atau penggabungan konfigurasi, Anda dapat melihat ama-metrics pod.

Sampel peta ama-metrics-prometheus-config konfigurasi ada di sini.

Pemecahan Masalah

Jika Anda berhasil membuat configmap (ama-metrics-prometheus-config atau ama-metrics-prometheus-config-node) di namespace layanan kube-system dan masih tidak melihat target kustom yang diekstraksi, periksa kesalahan dalam log pod replika untuk configmap ama-metrics-prometheus-config atau log pod DaemonSet untuk ama-metrics-prometheus-config-node configmap) menggunakan log kubectl dan pastikan tidak ada kesalahan dalam Mulai Menggabungkan bagian Konfigurasi Default dan Prometheus Kustom dengan awalan prometheus-config-merger

Catatan

Penyiapan tingkat lanjut: Mengonfigurasi pekerjaan scrape Prometheus kustom untuk DaemonSet

Pod ama-metrics Replika menggunakan konfigurasi Prometheus kustom dan mengikis target yang ditentukan. Untuk kluster dengan sejumlah besar simpul dan pod dan metrik dalam jumlah besar untuk diekstraksi, beberapa target scrape kustom yang berlaku dapat dilepas dari pod Replika tunggal ama-metrics ke ama-metrics pod DaemonSet.

Configmap ama-metrics-prometheus-config-node, mirip dengan configmap replica-set, dan dapat dibuat untuk memiliki konfigurasi scrape statis pada setiap simpul. Konfigurasi scrape hanya boleh menargetkan satu simpul dan tidak boleh menggunakan anotasi penemuan/pod layanan. Jika tidak, setiap simpul mencoba mengikis semua target dan melakukan banyak panggilan ke server API Kubernetes.

Target scrape kustom dapat mengikuti format yang sama dengan menggunakan static_configs dengan target dan menggunakan $NODE_IP variabel lingkungan dan menentukan port yang akan diekstraksi. Setiap pod DaemonSet mengambil konfigurasi, mengekstrak metrik, dan mengirimkannya untuk simpul tersebut.

Contoh:- Konfigurasi berikut node-exporter adalah salah satu target default untuk pod DaemonSet. Ini menggunakan $NODE_IP variabel lingkungan, yang sudah diatur untuk setiap ama-metrics kontainer add-on untuk menargetkan port tertentu pada simpul.

- job_name: nodesample
  scrape_interval: 30s
  scheme: http
  metrics_path: /metrics
  relabel_configs:
  - source_labels: [__metrics_path__]
    regex: (.*)
    target_label: metrics_path
  - source_labels: [__address__]
    replacement: '$NODE_NAME'
    target_label: instance
  static_configs:
  - targets: ['$NODE_IP:9100']

Langkah berikutnya