Udostępnij za pośrednictwem


Monitorowanie metryk kontrolera ruchu przychodzącego-nginx w dodatku routingu aplikacji za pomocą rozwiązania Prometheus w narzędziu Grafana (wersja zapoznawcza)

Kontroler ruchu przychodzącego-nginx w dodatku routingu aplikacji uwidacznia wiele metryk dla żądań, procesu nginx i kontrolera, który może być pomocny w analizowaniu wydajności i użycia aplikacji.

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

Ważne

Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi. 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 zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów. 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.
  • Wystąpienie rozwiązania Prometheus, takie jak usługa zarządzana usługi Azure Monitor dla rozwiązania Prometheus.
  • Wystąpienie narzędzia Grafana, takie jak Azure Managed Grafana.

Weryfikowanie punktu końcowego metryk

Aby sprawdzić, czy metryki są zbierane, możesz skonfigurować port do przodu do jednego z zasobników kontrolera ruchu przychodzącego-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 ruchu przychodzącego-nginx, które są ładowane.

Screenshot of the Prometheus metrics in the browser.

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

Konfigurowanie usługi zarządzanej usługi Azure Monitor dla rozwiązania Prometheus i usługi Azure Managed Grafana przy użyciu usługi Container Szczegółowe informacje

Usługa zarządzana usługi Azure Monitor dla rozwiązania Prometheus to w pełni zarządzana usługa zgodna z rozwiązaniem Prometheus, która 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) w celu wysyłania danych do usługi zarządzanej usługi Azure Monitor dla rozwiązania Prometheus i wysyłania zebranych metryk do wystąpienia usługi Azure Managed Grafana.

Włączanie wycinków opartych na adnotacjach zasobników

Po zaktualizowaniu klastra za pomocą agenta usługi Azure Monitor należy skonfigurować agenta w celu włączenia złomowania na podstawie adnotacji zasobników, które są dodawane do zasobników ingress-nginx. Jednym ze sposobów ustawienia tego ustawienia jest ama-metrics-settings-configmap element ConfigMap w kube-system przestrzeni nazw.

Uwaga

Spowoduje to zastąpienie istniejącej ama-metrics-settings-configmap ConfigMap w elemencie 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 na podannotationnamespaceregex.* , aby zeskrobać 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

W ciągu kilku minut ama-metrics zasobniki w kube-system przestrzeni nazw powinny zostać uruchomione ponownie i pobrać 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, musisz uzyskać dostęp do wystąpienia zarządzanego narzędzia Grafana.

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

  • Pulpit nawigacyjny kontrolera ruchu przychodzącego-nginx
  • Pulpit nawigacyjny wydajności obsługi żądań

Pulpit nawigacyjny kontrolera ruchu przychodzącego-nginx

Ten pulpit nawigacyjny zapewnia widoczność woluminu żądań, połączeń, współczynników powodzenia, ponownego ładowania konfiguracji i konfiguracji poza synchronizacją. Można go również użyć do wyświetlania użycia procesora WE/Wy sieci, pamięci i procesora CPU kontrolera ruchu przychodzącego. Na koniec pokazuje również czasy odpowiedzi ruchu przychodzącego P50, P95 i P99 percentyl oraz ich przepływność.

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

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

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

Ten pulpit nawigacyjny zapewnia wgląd w wydajność obsługi żądań różnych miejsc docelowych ruchu przychodzącego nadrzędnego, które są punktami końcowymi aplikacji, do których kontroler ruchu przychodzącego przekazuje ruch. Przedstawia on percentyl P50, P95 i P99 całkowitego czasu żądania i odpowiedzi nadrzędnej. 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.

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

Importowanie pulpitu nawigacyjnego

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

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

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

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

Następne kroki