Udostępnij za pośrednictwem


Kontroler usługi ALB — kondycja zaplecza i metryki

Zrozumienie kondycji zaplecza usług i zasobników Kubernetes ma kluczowe znaczenie w identyfikowaniu problemów i pomocy w rozwiązywaniu problemów. Aby ułatwić wgląd w kondycję zaplecza, kontroler usługi ALB uwidacznia kondycję zaplecza i punkty końcowe metryk we wszystkich wdrożeniach kontrolera usługi ALB.

Kondycja zaplecza kontrolera usługi ALB uwidacznia trzy różne środowiska:

  1. Podsumowanie kondycji zaplecza przez zasób usługi Application Gateway for Containers
  2. Podsumowanie kondycji zaplecza przez usługę Kubernetes
  3. Szczegółowa kondycja zaplecza dla określonej usługi Kubernetes

Punkt końcowy metryki kontrolera usługi ALB uwidacznia zarówno metryki, jak i podsumowanie kondycji zaplecza. Ten punkt końcowy umożliwia narażenie na działanie rozwiązania Prometheus.

Dostęp do tych punktów końcowych można uzyskać za pośrednictwem następujących adresów URL:

  • Kondycja zaplecza — http://< alb-controller-pod-ip>:8000/backendHealth
    • Dane wyjściowe są formatem JSON
  • Metryki — http://< alb-controller-pod-ip>:8001/metrics
    • Dane wyjściowe są formatem tekstowym

Wszyscy klienci lub zasobniki, którzy mają łączność z tym zasobnikem i portem, mogą uzyskiwać dostęp do tych punktów końcowych. Aby ograniczyć dostęp, zalecamy użycie zasad sieci platformy Kubernetes w celu ograniczenia dostępu do niektórych klientów.

Kondycja wewnętrznej bazy danych

Odnajdywanie kondycji zaplecza

Kontroler usługi ALB uwidacznia kondycję zaplecza na zasobniku kontrolera usługi ALB, który działa jako podstawowy.

Aby znaleźć zasobnik podstawowy, uruchom następujące polecenie:

CONTROLLER_NAMESPACE='azure-alb-system'
kubectl get lease -n $CONTROLLER_NAMESPACE alb-controller-leader-election -o jsonpath='{.spec.holderIdentity}' | awk -F'_' '{print $1}'

W przypadku dostępu pośredniego za pośrednictwem narzędzia kubectl można utworzyć odbiornik, który proxy ruchu do zasobnika.

kubectl port-forward <pod-name> -n $CONTROLLER_NAMESPACE 8000 8001

Gdy polecenie kubectl nasłuchuje, otwórz inny terminal (lub sesję usługi Cloud Shell) i wykonaj polecenie curl do wersji 127.0.0.1, aby zostać przekierowane do zasobnika.

curl http://127.0.0.1:8000

Przykładowa odpowiedź:

Available paths:
Path: /backendHealth
Description: Prints the backend health of the ALB.
Query Parameters:
        detailed: if true, prints the detailed view of the backend health
        alb-id: Resource ID of the Application Gateway for Containers to filter backend health for.
        service-name: Service to filter backend health for. Expected format: \<namespace\>/\<service\>/\<service-port-number\>

Path: /
Description: Prints the help

Podsumowanie kondycji zaplecza przez usługę Application Gateway dla kontenerów

To środowisko zawiera podsumowanie wszystkich usług Kubernetes z odwołaniami do usługi Application Gateway for Containers i odpowiadających im stanu kondycji.

Dostęp do tego środowiska można uzyskać, określając identyfikator zasobu usługi Application Gateway for Containers w zapytaniu żądania do zasobnika alb-controller.

Następujące polecenie może służyć do sondowania kondycji zaplecza dla określonego zasobu usługi Application Gateway for Containers.

curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?alb-id=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz

Przykładowe wyjście:

{
  "services": [
    {
      "serviceName": "default/service-hello-world/80",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0
        }
      ]
    },
    {
      "serviceName": "default/service-contoso/443",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0
        }
      ]
    }
  ]
}

Podsumowanie kondycji zaplecza przez usługę Kubernetes

To środowisko wyszukuje stan podsumowania kondycji danej usługi.

Dostęp do tego środowiska można uzyskać, określając nazwę przestrzeni nazw, usługi i numeru portu usługi w następującym formacie ciągu zapytania do zasobnika alb-controller: <przestrzeń nazw>/<usługa>/<numer-port-usługi>

Następujące polecenie może służyć do sondowania kondycji zaplecza dla określonej usługi Kubernetes.

curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80

Przykładowe wyjście:

{
  "services": [
    {
      "serviceName": "default/service-hello-world/80",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0
        }
      ]
    }
  ]
}

Szczegółowa kondycja zaplecza dla określonej usługi Kubernetes

To środowisko pokazuje wszystkie punkty końcowe, które tworzą usługę, w tym ich odpowiedni stan kondycji i adres IP. Stan punktu końcowego jest zgłaszany jako W DOBREJ KONDYCJI lub W ZŁEJ KONDYCJI.

Dostęp do tego środowiska można uzyskać, określając parametr detailed=true w ciągu zapytania do zasobnika alb-controller.

Na przykład możemy zweryfikować kondycję poszczególnych punktów końcowych, wykonując następujące polecenie:

curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80\&detailed=true

Przykładowe wyjście:

{
  "services": [
    {
      "serviceName": "default/service-hello-world/80",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0,
          "endpoints": [
            {
              "address": "10.1.1.22",
              "health": {
                "status": "HEALTHY"
              }
            }
          ]
        }
      ]
    }
  ]
}

Metryki

Kontroler usługi ALB obecnie udostępnia metryki w formacie opartym na tekście, które mają być uwidocznione w usłudze Prometheus. Dostęp do tych dzienników jest dostępny na porcie 8001 podstawowego zasobnika http://\<alb-controller-pod-ip\>:8001/metricskontrolera alb .

Obecnie uwidocznione są następujące metryki:

Nazwa metryki opis
alb_connection_status Stan połączenia z zasobem usługi Application Gateway for Containers
alb_reconnection_count Liczba ponownych prób nawiązania połączenia z zasobami usługi Application Gateway for Containers
total_config_updates Liczba operacji konfiguracji routingu usługi
total_endpoint_updates Liczba operacji konfiguracji puli zaplecza
total_deployments Liczba wdrożeń zasobów usługi Application Gateway dla kontenerów
total_endpoints Liczba punktów końcowych w usłudze
total_healthy_endpoints Liczba punktów końcowych w dobrej kondycji w usłudze
total_unhealthy_endpoints Liczba punktów końcowych w złej kondycji w usłudze