KServe menyediakan metrik Prometheus bawaan untuk memantau kinerja dan status layanan model. Topik ini menjelaskan cara mengonfigurasi pemantauan Prometheus untuk KServe.
Prasyarat
-
Arena client versi 0.9.15 atau yang lebih baru telah diinstal.
-
Komponen ack-kserve telah diinstal.
-
Alibaba Cloud Prometheus monitoring telah diaktifkan.
Langkah 1: Deploy aplikasi KServe
-
Deploy aplikasi KServe berbasis Scikit-learn:
arena serve kserve \ --name=sklearn-iris \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/ai-sample/kserve-sklearn-server:v0.12.0 \ --cpu=1 \ --memory=200Mi \ --enable-prometheus=true \ --metrics-port=8080 \ "python -m sklearnserver --model_name=sklearn-iris --model_dir=/models --http_port=8080"Output yang diharapkan:
service/sklearn-iris-metric-svc created # Layanan bernama sklearn-iris-metric-svc dibuat. inferenceservice.serving.kserve.io/sklearn-iris created # Resource KServe InferenceService bernama sklearn-iris dibuat. servicemonitor.monitoring.coreos.com/sklearn-iris-svcmonitor created # Resource ServiceMonitor dibuat untuk mengintegrasikan dengan sistem pemantauan Prometheus dan mengumpulkan data pemantauan yang diekspos oleh layanan sklearn-iris-metric-svc. INFO[0004] The Job sklearn-iris has been submitted successfully # Tugas berhasil dikirim ke kluster. INFO[0004] You can run `arena serve get sklearn-iris --type kserve -n default` to check the job statusArena telah mendeploy layanan KServe dengan model scikit-learn dan pemantauan Prometheus.
-
Tulis input inferensi ke file
./iris-input.json:cat <<EOF > "./iris-input.json" { "instances": [ [6.8, 2.8, 4.8, 1.4], [6.0, 3.4, 4.5, 1.6] ] } EOF -
Ambil alamat IP gerbang NGINX Ingress dan hostname InferenceService:
NGINX_INGRESS_IP=`kubectl -n kube-system get svc nginx-ingress-lb -ojsonpath='{.status.loadBalancer.ingress[0].ip}'` SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3) -
Gunakan tool uji stres Hey untuk mengirim permintaan berulang dan menghasilkan data pemantauan:
CatatanLihat Hey.
hey -z 2m -c 20 -m POST -host $SERVICE_HOSTNAME -H "Content-Type: application/json" -D ./iris-input.json http://${NGINX_INGRESS_IP}:80/v1/models/sklearn-iris:predictOutput yang diharapkan:
Output tersebut menampilkan metrik kinerja seperti kecepatan pemrosesan, throughput, dan latensi respons.
-
(Opsional) Verifikasi bahwa metrik aplikasi diekspos dengan benar.
Kumpulkan metrik pemantauan dari Pod
sklearn-irissecara lokal, tanpa login ke Pod atau mengekspos port-nya.-
Teruskan port 8080 dari Pod sklearn-iris (ditentukan oleh
$POD_NAME) ke host lokal Anda:# Dapatkan nama Pod. POD_NAME=`kubectl get po|grep sklearn-iris |awk -F ' ' '{print $1}' # Teruskan port 8080 Pod ke host lokal. kubectl port-forward pod/$POD_NAME 8080:8080Output yang diharapkan:
Forwarding from 127.0.0.1:8080 -> 8080 Forwarding from [::1]:8080 -> 8080Koneksi IPv4 dan IPv6 keduanya diteruskan ke port 8080 Pod.
-
Buka URL berikut di browser untuk melihat metrik Pod:
http://localhost:8080/metricsOutput yang diharapkan:
Output tersebut mengonfirmasi bahwa metrik diekspos dan permintaan diteruskan ke aplikasi dalam Pod.
-
Langkah 2: Kueri metrik KServe
-
Login ke Konsol ARMS.
-
Pada panel navigasi kiri, klik Integration Management, lalu klik Query Dashboards.
-
Pada halaman Dashboards, klik dasbor Kubernetes Pod untuk membuka halaman Grafana.
-
Pada panel navigasi kiri, klik Explore. Masukkan kueri
request_predict_seconds_bucketuntuk melihat nilai metrik.CatatanData mungkin memerlukan waktu hingga 5 menit untuk muncul.
Graf menampilkan grafik garis metrik
request_predict_seconds_bucketdari waktu ke waktu.
FAQ
Pertanyaan
Bagaimana cara memverifikasi bahwa data untuk metrik request_predict_seconds_bucket telah berhasil dikumpulkan?
Solusi
-
Login ke Konsol ARMS.
-
Pada Connected Environments, pada tab Container Service, klik lingkungan kontainer target, lalu klik tab Self-Monitoring.
-
Pada panel navigasi kiri, klik Targets. Jika ditampilkan
default/sklearn-iris-svcmonitor/0 (1/1 up), pengumpulan metrik berhasil.
Referensi
Untuk metrik KServe bawaan, lihat KServe Prometheus Metrics.