Dela via


ALB-styrenhet – Serverdelshälsa och mått

Att förstå serverdelshälsan för dina Kubernetes-tjänster och poddar är avgörande för att identifiera problem och hjälp med felsökning. För att underlätta insynen i serverdelshälsan exponerar ALB-kontrollanten serverdelshälsa och måttslutpunkter i alla ALB Controller-distributioner.

ALB-styrenhetens serverdelshälsa visar tre olika upplevelser:

  1. Sammanfattad serverdelshälsa efter Application Gateway for Containers-resurs
  2. Sammanfattad serverdelshälsa av Kubernetes-tjänsten
  3. Detaljerad serverdelshälsa för en angiven Kubernetes-tjänst

ALB-styrenhetens måttslutpunkt visar både mått och sammanfattning av serverdelshälsa. Den här slutpunkten möjliggör exponering för Prometheus.

Åtkomst till dessa slutpunkter kan nås via följande URL:er:

  • Serverdelshälsa – http://< alb-controller-pod-ip>:8000/backendHealth
    • Utdata är JSON-format
  • Mått – http://< alb-controller-pod-ip>:8001/metrics
    • Utdata är textformat

Alla klienter eller poddar som har anslutning till den här podden och porten kan komma åt dessa slutpunkter. För att begränsa åtkomsten rekommenderar vi att du använder Kubernetes-nätverksprinciper för att begränsa åtkomsten till vissa klienter.

Serverdelens hälsotillstånd

Identifiera serverdelshälsa

ALB-kontrollanten exponerar serverdelshälsa på ALB-styrenhetens podd som fungerar som primär.

Kör följande kommando för att hitta den primära podden:

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

För indirekt åtkomst via kubectl-verktyget kan du skapa en lyssnare som proxyservrar trafik till podden.

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

När kubectl-kommandot lyssnar öppnar du en annan terminal (eller cloud shell-session) och kör curl till 127.0.0.1 för att omdirigeras till podden.

curl http://127.0.0.1:8000

Exempelsvar:

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

Sammanfattad serverdelshälsa av Application Gateway för containrar

Den här upplevelsen sammanfattar alla Kubernetes-tjänster med referenser till Application Gateway för containrar och deras motsvarande hälsostatus.

Den här upplevelsen kan nås genom att ange resurs-ID för Application Gateway för containrar i frågan för begäran till alb-controller-podden.

Följande kommando kan användas för att avsöka serverdelshälsa för den angivna Application Gateway for Containers-resursen.

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

Exempel på utdata>

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

Sammanfattad serverdelshälsa av Kubernetes-tjänsten

Den här upplevelsen söker efter hälsosammanfattningsstatus för en viss tjänst.

Den här upplevelsen kan nås genom att ange namnet på tjänstens namnområde, tjänst och portnummer i följande format av frågesträngen till alb-controller-podden: <namespace>/<service>/<service-port-number>

Följande kommando kan användas för att avsöka serverdelshälsa för den angivna Kubernetes-tjänsten.

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

Exempel på utdata>

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

Detaljerad serverdelshälsa för en angiven Kubernetes-tjänst

Den här upplevelsen visar alla slutpunkter som utgör tjänsten, inklusive deras motsvarande hälsostatus och IP-adress. Slutpunktsstatus rapporteras som felfri eller inte felfri.

Du kan komma åt den här upplevelsen genom att ange detailed=true i frågesträngen till alb-controller-podden.

Vi kan till exempel verifiera individuell slutpunktshälsa genom att köra följande kommando:

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

Exempel på utdata>

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

Mått

ALB Controller innehåller för närvarande mått som följer textbaserat format som ska exponeras för Prometheus. Åtkomst till dessa loggar är tillgängliga på port 8001 för den primära alb-styrenhetens podd http://\<alb-controller-pod-ip\>:8001/metrics.

Följande mått exponeras idag:

Måttnamn beskrivning
alb_connection_status Anslutningsstatus till en Application Gateway for Containers-resurs
alb_reconnection_count Antal återanslutningsförsök till en Application Gateway för containrar-resurser
total_config_updates Antal konfigurationsåtgärder för tjänstroutning
total_endpoint_updates Antal konfigurationsåtgärder för serverdelspool
total_deployments Antal resursdistributioner av Application Gateway för containrar
total_endpoints Antal slutpunkter i en tjänst
total_healthy_endpoints Antal felfria slutpunkter i en tjänst
total_unhealthy_endpoints Antal ej felfria slutpunkter i en tjänst