Udostępnij za pośrednictwem


Monitorowanie metryk kontrolera ingress-nginx w dodatku routingu aplikacji za pomocą Prometheus w Grafana (wersja zapoznawcza)

Kontroler ingress-nginx w dodatkowym routerze aplikacji udostępnia wiele metryk dla żądań, procesu nginx i kontrolera, które mogą być pomocne w analizowaniu wydajności i użycia aplikacji.

Dodatek routingu aplikacji uwidacznia punkt końcowy metryk Prometheus na /metrics porcie 10254.

Ważne

Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i dobrowolności. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje prewencyjne usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną na zasadzie najlepszych starań. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:

Wymagania wstępne

  • Klaster usługi Azure Kubernetes Service (AKS) z włączonym dodatkiem routingu aplikacji.
  • Instancja Prometheus, taka jak zarządzana usługa Azure Monitor dla Prometheus.
  • Instancja Grafany, na przykład Azure Managed Grafana.

Weryfikowanie punktu końcowego metryk

Aby sprawdzić, czy metryki są zbierane, możesz skonfigurować przekierowanie portu do jednego z podów kontrolera 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

Teraz przekaż port lokalny do portu 10254 na jednym z zasobników 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

Zanotuj port lokalny (43307 w tym przypadku) i otwórz http://localhost:43307/metrics go w przeglądarce. Powinny zostać wyświetlone metryki kontrolera ingress-nginx, które się ładują.

Zrzut ekranu przedstawiający metryki Prometheus w przeglądarce.

Teraz możesz zakończyć proces port-forward, aby zakończyć przekazywanie.

Konfigurowanie zarządzanej usługi Azure Monitor dla usługi Prometheus i narzędzia Azure Managed Grafana przy użyciu Container Insights

Zarządzana przez Azure Monitor usługa dla Prometheus to w pełni zarządzane rozwiązanie zgodne z Prometheus, które obsługuje standardowe funkcje branżowe, takie jak PromQL, pulpity nawigacyjne Grafana i alerty Prometheus. Ta usługa wymaga skonfigurowania dodatku metryk dla agenta usługi Azure Monitor, który wysyła dane do rozwiązania Prometheus. Jeśli klaster nie został skonfigurowany przy użyciu dodatku, możesz wykonać czynności opisane w tym artykule, aby skonfigurować klaster usługi Azure Kubernetes Service (AKS) do wysyłania danych do zarządzanej usługi Azure Monitor dla Prometheusa i wysyłania zebranych metryk do instancji Azure Managed Grafana.

Włącz wyciąganie danych na podstawie adnotacji zasobników

Po zaktualizowaniu klastra za pomocą agenta usługi Azure Monitor musisz skonfigurować agenta, aby umożliwić zbieranie danych na podstawie adnotacji zasobników, które są dodawane do zasobników ingress-nginx. Jednym ze sposobów ustawienia tego ustawienia jest w elemencie ama-metrics-settings-configmap ConfigMap w przestrzeni nazw kube-system.

Uwaga

Spowoduje to zastąpienie istniejącej ama-metrics-settings-configmap ConfigMap w kube-system. Jeśli masz już konfigurację, możesz utworzyć kopię zapasową lub scalić ją z tą konfiguracją.

Jeśli istnieje, możesz utworzyć kopię zapasową istniejącego ama-metrics-settings-config obiektu ConfigMap, uruchamiając polecenie kubectl get configmap ama-metrics-settings-configmap -n kube-system -o yaml > ama-metrics-settings-configmap-backup.yaml

Poniższa konfiguracja ustawia parametr podannotationnamespaceregex na .*, aby wyodrębnić wszystkie przestrzenie nazw.

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

Za kilka minut zasobniki ama-metrics w przestrzeni nazw kube-system powinny zostać zrestartowane i wczytać nową konfigurację.

Przeglądanie wizualizacji metryk w narzędziu Azure Managed Grafana

Teraz, gdy masz skonfigurowaną usługę zarządzaną Azure Monitor dla rozwiązań Prometheus i Azure Managed Grafana, powinieneś uzyskać dostęp do swojego wystąpienia Managed Grafana.

Istnieją dwa oficjalne pulpity nawigacyjne ruchu przychodzącego-nginx, które można pobrać i zaimportować do wystąpienia narzędzia Grafana:

  • Konsola Ingress-nginx Controller
  • Panel sterowania wydajnością obsługi żądań

Panel sterowania kontrolerem Ingress-nginx

Ten panel zapewnia wgląd w liczbę żądań, połączenia, współczynniki powodzenia, ponowne ładowania konfiguracji oraz konfiguracje niezsynchronizowane. Można go również użyć do wyświetlania obciążenia sieciowego IO, a także użycia pamięci i procesora CPU przez kontroler ruchu przychodzącego. Na koniec pokazuje również czasy odpowiedzi dla percentyli P50, P95 i P99 twoich wejść oraz ich przepustowość.

Ten pulpit nawigacyjny można pobrać z usługi GitHub.

Zrzut ekranu przeglądarki pokazujący pulpit nawigacyjny ingress-nginx w narzędziu Grafana.

Pulpit nawigacyjny wydajności obsługi żądań

Ten panel sterowania zapewnia wgląd w wydajność obsługi żądań na różnych miejscach docelowych ruchu przychodzącego, które są punktami końcowymi Twoich aplikacji, do których ruch jest przekazywany przez kontroler ruchu przychodzącego. Przedstawia percentyl P50, P95 i P99 dla całkowitego czasu żądania oraz czasu odpowiedzi systemu nadrzędnego. Można również wyświetlić agregacje błędów żądań i opóźnienia. Użyj tego pulpitu nawigacyjnego, aby przejrzeć i poprawić wydajność i skalowalność aplikacji.

Ten pulpit nawigacyjny można pobrać z usługi GitHub.

Zrzut ekranu przeglądarki pokazujący pulpit nawigacyjny wydajności obsługi żądań przez ingress-nginx w Grafanie.

Importowanie pulpitu nawigacyjnego

Aby zaimportować pulpit nawigacyjny narzędzia Grafana, rozwiń menu po lewej stronie i kliknij pozycję Importuj w obszarze Pulpity nawigacyjne.

Zrzut ekranu przedstawiający przeglądarkę z wyróżnionym wystąpieniem narzędzia Grafana z wyróżnionym pulpitem nawigacyjnym Importuj.

Następnie przekaż żądany plik pulpitu nawigacyjnego i kliknij pozycję Załaduj.

Zrzut ekranu przeglądarki pokazujący okno dialogowe do importowania dashboardu instancji Grafana.

Następne kroki