Pantau metrik pengontrol ingress-nginx dalam add-on perutean aplikasi dengan Prometheus di Grafana (pratinjau)

Pengontrol ingress-nginx dalam add-on perutean aplikasi mengekspos banyak metrik untuk permintaan, proses nginx, dan pengontrol yang dapat membantu dalam menganalisis performa dan penggunaan aplikasi Anda.

Add-on perutean aplikasi mengekspos titik akhir metrik Prometheus di /metrics port 10254.

Penting

Fitur pratinjau AKS tersedia berdasarkan layanan mandiri. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan mereka dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Pratinjau AKS sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

Prasyarat

Memvalidasi titik akhir metrik

Untuk memvalidasi metrik yang sedang dikumpulkan, Anda dapat mengatur penerusan port ke salah satu pod pengontrol ingress-nginx.

kubectl get pods -n app-routing-system
NAME                            READY   STATUS    RESTARTS   AGE
external-dns-667d54c44b-jmsxm   1/1     Running   0          4d6h
nginx-657bb8cdcf-qllmx          1/1     Running   0          4d6h
nginx-657bb8cdcf-wgcr7          1/1     Running   0          4d6h

Sekarang teruskan port lokal ke port 10254 pada salah satu pod nginx.

kubectl port-forward nginx-657bb8cdcf-qllmx -n app-routing-system :10254
Forwarding from 127.0.0.1:43307 -> 10254
Forwarding from [::1]:43307 -> 10254

Perhatikan port lokal (43307 dalam hal ini) dan buka http://localhost:43307/metrics di browser Anda. Anda akan melihat pemuatan metrik pengontrol ingress-nginx.

Screenshot of the Prometheus metrics in the browser.

Anda sekarang dapat mengakhiri port-forward proses untuk menutup penerusan.

Mengonfigurasi layanan terkelola Azure Monitor untuk Prometheus dan Azure Managed Grafana menggunakan Container Insights

Layanan terkelola Azure Monitor untuk Prometheus adalah layanan yang kompatibel dengan Prometheus yang dikelola sepenuhnya yang mendukung fitur standar industri seperti PromQL, dasbor Grafana, dan pemberitahuan Prometheus. Layanan ini memerlukan konfigurasi addon metrik untuk agen Azure Monitor, yang mengirim data ke Prometheus. Jika kluster Anda tidak dikonfigurasi dengan add-on, Anda dapat mengikuti artikel ini untuk mengonfigurasi kluster Azure Kubernetes Service (AKS) untuk mengirim data ke layanan terkelola Azure Monitor untuk Prometheus dan mengirim metrik yang dikumpulkan ke instans Azure Managed Grafana.

Mengaktifkan pengikisan berbasis anotasi pod

Setelah kluster Anda diperbarui dengan agen Azure Monitor, Anda perlu mengonfigurasi agen untuk mengaktifkan pengikisan berdasarkan anotasi Pod, yang ditambahkan ke pod ingress-nginx. Salah satu cara untuk mengatur pengaturan ini adalah di ama-metrics-settings-configmap ConfigMap di kube-system namespace layanan.

Perhatian

Ini akan menggantikan ConfigMap yang ada ama-metrics-settings-configmap di kube-system. Jika Anda sudah memiliki konfigurasi, Anda mungkin ingin mengambil cadangan atau menggabungkannya dengan konfigurasi ini.

Anda dapat mencadangkan ama-metrics-settings-config ConfigMap yang ada jika ada dengan menjalankan kubectl get configmap ama-metrics-settings-configmap -n kube-system -o yaml > ama-metrics-settings-configmap-backup.yaml

Konfigurasi berikut mengatur podannotationnamespaceregex parameter ke .* untuk mengikis semua namespace.

kubectl apply -f - <<EOF
kind: ConfigMap
apiVersion: v1
metadata:
  name: ama-metrics-settings-configmap
  namespace: kube-system
data:
  schema-version:
    #string.used by agent to parse config. supported versions are {v1}. Configs with other schema versions will be rejected by the agent.
    v1
  config-version:
    #string.used by customer to keep track of this config file's version in their source control/repository (max allowed 10 chars, other chars will be truncated)
    ver1
  prometheus-collector-settings: |-
    cluster_alias = ""
  default-scrape-settings-enabled: |-
    kubelet = true
    coredns = false
    cadvisor = true
    kubeproxy = false
    apiserver = false
    kubestate = true
    nodeexporter = true
    windowsexporter = false
    windowskubeproxy = false
    kappiebasic = true
    prometheuscollectorhealth = false
  # Regex for which namespaces to scrape through pod annotation based scraping.
  # This is none by default. Use '.*' to scrape all namespaces of annotated pods.
  pod-annotation-based-scraping: |-
    podannotationnamespaceregex = ".*"
  default-targets-metrics-keep-list: |-
    kubelet = ""
    coredns = ""
    cadvisor = ""
    kubeproxy = ""
    apiserver = ""
    kubestate = ""
    nodeexporter = ""
    windowsexporter = ""
    windowskubeproxy = ""
    podannotations = ""
    kappiebasic = ""
    minimalingestionprofile = true
  default-targets-scrape-interval-settings: |-
    kubelet = "30s"
    coredns = "30s"
    cadvisor = "30s"
    kubeproxy = "30s"
    apiserver = "30s"
    kubestate = "30s"
    nodeexporter = "30s"
    windowsexporter = "30s"
    windowskubeproxy = "30s"
    kappiebasic = "30s"
    prometheuscollectorhealth = "30s"
    podannotations = "30s"
  debug-mode: |-
    enabled = false
EOF

Dalam beberapa menit, ama-metrics pod di kube-system namespace harus memulai ulang dan mengambil konfigurasi baru.

Meninjau visualisasi metrik di Azure Managed Grafana

Sekarang setelah Anda memiliki layanan terkelola Azure Monitor untuk Prometheus dan Azure Managed Grafana yang dikonfigurasi, Anda harus mengakses instans Grafana Terkelola Anda.

Ada dua dasbor ingress-nginx resmi yang dapat Anda unduh dan impor ke instans Grafana Anda:

  • Dasbor pengontrol Ingress-nginx
  • Meminta penanganan dasbor performa

Dasbor pengontrol Ingress-nginx

Dasbor ini memberi Anda visibilitas volume permintaan, koneksi, tingkat keberhasilan, pemuatan ulang konfigurasi, dan konfigurasi tidak sinkron. Anda juga dapat menggunakannya untuk melihat tekanan IO jaringan, memori, dan penggunaan CPU pengontrol ingress. Akhirnya, ini juga menunjukkan waktu respons persentil P50, P95, dan P99 dari ingress Anda dan throughputnya.

Anda dapat mengunduh dasbor ini dari GitHub.

Screenshot of a browser showing the ingress-nginx dashboard on Grafana.

Meminta penanganan dasbor performa

Dasbor ini memberi Anda visibilitas ke dalam performa penanganan permintaan dari berbagai tujuan hulu ingress, yang merupakan titik akhir aplikasi Anda yang diteruskan oleh pengontrol ingress. Ini menunjukkan persentil P50, P95 dan P99 dari total permintaan dan waktu respons upstram. Anda juga dapat melihat agregat kesalahan permintaan dan latensi. Gunakan dasbor ini untuk meninjau dan meningkatkan performa dan skalabilitas aplikasi Anda.

Anda dapat mengunduh dasbor ini dari GitHub.

Screenshot of a browser showing the ingress-nginx request handling performance dashboard on Grafana.

Mengimpor dasbor

Untuk mengimpor dasbor Grafana, perluas menu sebelah kiri dan klik Impor di bawah Dasbor.

Screenshot of a browser showing the Grafana instance with Import dashboard highlighted.

Kemudian unggah file dasbor yang diinginkan dan klik Muat.

Screenshot of a browser showing the Grafana instance import dashboard dialog.

Langkah berikutnya