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-node
ama-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']