K8s叢集nginx-ingress監控告警最佳實踐

华为云开发者联盟發表於2024-04-18

本文分享自華為雲社群《K8s叢集nginx-ingress監控告警最佳實踐》,作者:可以交個朋友。

一 背景

nginx-ingress作為K8s叢集中的關鍵組成部分。主要負責k8s叢集中的服務釋出,請求轉發等功能。如果在訪問服務過程中出現404和502等情況,需要引起注意。

二 方案簡介

可以透過CCE叢集外掛kube-prometheus-stack進行nginx-ingress服務的指標監控,Grafana儀表盤檢視可以自己製作或者匯入開源模板,方便時刻觀察nginx-ingress的各項執行指標是否處於健康狀態。

image.png

CCE Prometheus監控指標資料統一remotewrite到華為雲AOM2.0服務,可以在AOM2.0服務中展示Prometheus採集的指標資料,並根據業務實際訴求,實現基於指標的的告警通知。

CCE監控外掛對接AOM:

image.png

image.png

AOM檢視nginx-ingress

image.png

三 nginx-ingress關鍵指標

確保Prometheus已成功抓取nginx-ingress指標

image.png

  • nginx-ingress配置熱載入失敗次數
    count(nginx_ingress_controller_config_last_reload_successful{} == 0)

  • nginx-ingress每個nginx-ingress-controller例項的連線數
    sum(nginx_ingress_controller_nginx_process_connections) by (controller_namespace,controller_pod)

  • nginx-ingress每個nginx-ingress-controller例項中process數
    nginx_ingress_controller_nginx_process_num_procs

  • nginx-ingress每個nginx-ingress-controller例項的每秒請求數
    sum(irate(nginx_ingress_controller_requests{}[1m])) by (controller_namespace,controller_pod)

  • nginx-ingress請求時延
    histogram_quantile(0.90, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{status="200"}[1m])) by (le, ingress, host, path)) * 1000

    histogram_quantile(0.95, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{status="200"}[1m])) by (le, ingress, host, path)) * 1000

    histogram_quantile(0.99, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{status="200"}[1m])) by (le, ingress, host, path)) * 1000

  • 請求失敗率
    sum(rate(nginx_ingress_controller_requests{status=~"[4-5].*"}[5m])) / sum(rate(nginx_ingress_controller_requests{}[5m])) * 100

四 如何根據nginx-ingress指標進行告警

前往AOM告警管理tab頁

image.png

配置告警規則

選擇指標告警規則,配置方式可使用PromQL語句,選擇對應的AOM例項

image.png

image.png

配置告警通知規則

image.png

觸發指標告警規則,郵箱收到告警

image.png

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章