Sdílet prostřednictvím


Kontroler ALB – Stav a metriky back-endu

Pochopení stavu back-endu služeb a podů Kubernetes je zásadní při identifikaci problémů a pomoci při řešení potíží. Aby se usnadnil přehled o stavu back-endu, ovladač ALB zveřejňuje koncové body stavu back-endu a metrik ve všech nasazeních kontroleru ALB.

Stav back-endu kontroleru ALB zveřejňuje tři různá prostředí:

  1. Shrnutí stavu back-endu podle služby Application Gateway pro prostředky kontejnerů
  2. Shrnutí stavu back-endu službou Kubernetes
  3. Podrobný stav back-endu pro zadanou službu Kubernetes

Koncový bod metriky kontroleru ALB zveřejňuje metriky i souhrn stavu back-endu. Tento koncový bod umožňuje vystavení produktu Prometheus.

Přístup k těmto koncovým bodům je dostupný prostřednictvím následujících adres URL:

  • Stav back-endu< – http:// alb-controller-pod-ip>:8000/back-endHealth
    • Výstup je formát JSON.
  • Metriky – http://< alb-controller-pod-ip>:8001/metrics
    • Výstup je textový formát.

K těmto koncovým bodům mají přístup všichni klienti nebo pody, kteří mají připojení k tomuto podu a portu. Pokud chcete omezit přístup, doporučujeme použít zásady sítě Kubernetes k omezení přístupu k určitým klientům.

Stav back-endu

Zjišťování stavu back-endu

Kontroler ALB zveřejňuje stav back-endu na podu kontroleru ALB, který funguje jako primární.

Pokud chcete najít primární pod, spusťte následující příkaz:

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

Pro nepřímý přístup přes nástroj kubectl můžete vytvořit naslouchací proces, který proxy provoz do podu.

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

Jakmile příkaz kubectl naslouchá, otevřete jiný terminál (nebo relaci cloud shellu) a spusťte curl na 127.0.0.1, který se má přesměrovat na pod.

curl http://127.0.0.1:8000

Příklad odpovědi:

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

Shrnutí stavu back-endu službou Application Gateway pro kontejnery

Toto prostředí shrnuje všechny služby Kubernetes s odkazy na Službu Application Gateway pro kontejnery a jejich odpovídající stav.

K tomuto prostředí může přistupovat zadáním ID prostředku služby Application Gateway for Containers v dotazu požadavku na pod kontroleru alb.

Následující příkaz se dá použít k testování stavu back-endu pro zadaný prostředek služby 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

Příklad výstupu:

{
  "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
        }
      ]
    }
  ]
}

Shrnutí stavu back-endu službou Kubernetes

Toto prostředí vyhledá stav souhrnného stavu dané služby.

K tomuto prostředí je možné získat přístup zadáním názvu oboru názvů, služby a čísla portu služby v následujícím formátu řetězce dotazu na pod alb-controller: namespace/service/<service-port-number>. <<>>

Následující příkaz se dá použít k otestování stavu back-endu pro zadanou službu Kubernetes.

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

Příklad výstupu:

{
  "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
        }
      ]
    }
  ]
}

Podrobný stav back-endu pro zadanou službu Kubernetes

Toto prostředí ukazuje všechny koncové body, které tvoří službu, včetně jejich odpovídajícího stavu a IP adresy. Stav koncového bodu se hlásí jako V POŘÁDKU nebo NENÍ V POŘÁDKU.

K tomuto prostředí může přistupovat zadáním podrobné=true v řetězci dotazu podu alb-controller.

Pomocí následujícího příkazu můžeme například ověřit stav jednotlivých koncových bodů:

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

Příklad výstupu:

{
  "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"
              }
            }
          ]
        }
      ]
    }
  ]
}

Metriky

Kontroler ALB v současné době vystavuje metriky podle formátu založeného na textu, který se má zpřístupnit pro Prometheus. Přístup k těmto protokolům je k dispozici na portu 8001 podu primárního řadiče http://\<alb-controller-pod-ip\>:8001/metricsalb .

Dnes jsou zpřístupněny následující metriky:

Název metriky Popis
alb_connection_status Stav připojení k prostředku služby Application Gateway for Containers
alb_reconnection_count Počet pokusů o opětovné připojení k prostředkům služby Application Gateway pro kontejnery
total_config_updates Počet operací konfigurace směrování služeb
total_endpoint_updates Počet operací konfigurace back-endového fondu
total_deployments Počet nasazení prostředků služby Application Gateway pro kontejnery
total_endpoints Počet koncových bodů ve službě
total_healthy_endpoints Počet koncových bodů, které jsou v pořádku ve službě
total_unhealthy_endpoints Počet koncových bodů, které nejsou v pořádku ve službě