KServe mengekspos serangkaian metrik Prometheus bawaan untuk memantau kinerja dan kesehatan layanan model. Topik ini menjelaskan langkah-langkah penerapan InferenceService scikit-learn dengan pemantauan Prometheus yang diaktifkan, menghasilkan lalu lintas inferensi, serta melakukan kueri terhadap metrik yang dikumpulkan di ARMS.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Klien Arena versi 0.9.15 atau yang lebih baru. Untuk informasi selengkapnya, lihat Mengonfigurasi klien Arena.
Komponen ack-kserve telah terinstal. Untuk informasi selengkapnya, lihat Instal komponen ack-kserve.
Mengaktifkan Pemantauan Prometheus Alibaba Cloud. Untuk informasi selengkapnya, lihat Enable Alibaba Cloud Prometheus monitoring.
Langkah 1: Deploy aplikasi KServe
Deploy aplikasi KServe untuk scikit-learn:
Resource Type Description sklearn-iris-metric-svcKubernetes Service Mengekspos titik akhir metrik pada Port 8080 sklearn-irisKServe InferenceService Sumber daya penyajian model sklearn-iris-svcmonitorServiceMonitor Berintegrasi dengan Prometheus Alibaba Cloud untuk mengambil metrik dari sklearn-iris-metric-svcarena 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"Flag
--enable-prometheus=truemembuat resource berikut:Expected output:
service/sklearn-iris-metric-svc created inferenceservice.serving.kserve.io/sklearn-iris created servicemonitor.monitoring.coreos.com/sklearn-iris-svcmonitor created INFO[0004] The Job sklearn-iris has been submitted successfully INFO[0004] You can run `arena serve get sklearn-iris --type kserve -n default` to check the job statusBuat file
./iris-input.jsondengan konten berikut. File ini digunakan sebagai muatan permintaan inferensi.cat <<EOF > "./iris-input.json" { "instances": [ [6.8, 2.8, 4.8, 1.4], [6.0, 3.4, 4.5, 1.6] ] } EOFAmbil 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 menghasilkan lalu lintas inferensi:
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:predictExpected output:
(Opsional) Verifikasi bahwa metrik diekspos pada pod sebelum melakukan kueri ke ARMS. Pod mengekspos metrik pada Port 8080, tetapi port tersebut tidak dapat diakses dari luar kluster. Gunakan penerusan port untuk mengaksesnya secara lokal:
Metric Type Labels Description request_preprocess_secondsHistogram model_nameLatensi pra-pemrosesan per permintaan request_predict_secondsHistogram model_nameLatensi prediksi per permintaan request_postprocess_secondsHistogram model_nameLatensi pasca-pemrosesan per permintaan request_explain_secondsHistogram model_nameJelaskan latency permintaan Label
model_namememungkinkan Anda menyaring dan mengagregasi metrik berdasarkan model ketika beberapa model dijalankan dalam kluster yang sama.# Dapatkan nama pod POD_NAME=`kubectl get po|grep sklearn-iris |awk -F ' ' '{print $1}'` # Teruskan Port 8080 pod ke localhost kubectl port-forward pod/$POD_NAME 8080:8080Expected output:
Forwarding from 127.0.0.1:8080 -> 8080 Forwarding from [::1]:8080 -> 8080Buka browser dan akses
http://localhost:8080/metricsuntuk melihat metrik mentah. KServe mengekspos metrik berikut:
Langkah 2: Kueri metrik aplikasi KServe
Login ke Konsol ARMS.
Di panel navigasi kiri, klik Integration Management, lalu klik Query Dashboards.
Pada halaman Dashboard List, klik dasbor Kubernetes Pod untuk membuka halaman Grafana.
Di panel navigasi kiri, klik Explore. Masukkan pernyataan pencarian berikut untuk mengkueri nilai metrik aplikasi:
Pengumpulan data memiliki penundaan sekitar 5 menit setelah lalu lintas dihasilkan.
request_predict_seconds_bucket
FAQ
Question
Bagaimana cara memastikan bahwa metrik untuk request_predict_seconds_bucket sedang dikumpulkan?
Solution
Periksa status target pengambilan (scrape) di ARMS:
Login ke Konsol ARMS.
Di panel navigasi kiri, klik Integration Management. Pada halaman Integrated Environments, klik tab Container Service, lalu klik nama kluster Anda. Klik tab Self-Monitoring.
Di panel navigasi kiri, klik Targets. Jika
default/sklearn-iris-svcmonitor/0 (1/1 up)tercantum, pengumpulan metrik berjalan dengan benar.