ALB Controller – Back-End-Integrität und Metriken
Für die Identifizierung von Problemen und Unterstützung bei der Problembehandlung ist es enorm wichtig, die Back-End-Integrität Ihrer Kubernetes-Dienste und -Pods zu verstehen. Um die Sichtbarkeit der Back-End-Integrität zu erleichtern, gibt der ALB Controller die Back-End-Integrität und Metrikenendpunkte in allen ALB Controller-Bereitstellungen frei.
Die Back-End-Integrität des ALB-Controllers macht drei verschiedene Dinge freigegeben:
- Zusammengefasster Back-End-Integrität durch Application Gateway für Containerressource
- Zusammengefasster Back-End-Integrität durch Kubernetes-Dienst
- Detaillierte Back-End-Integrität für einen angegebenen Kubernetes-Dienst
Der metrische Endpunkt des ALB Controllers gibt sowohl Metriken als auch eine Zusammenfassung der Back-End-Integrität frei. Dieser Endpunkt ermöglicht Freigabe an Prometheus.
Der Zugriff auf diese Endpunkte kann über folgende URLs erreicht werden:
- Backend Health - http://<alb-controller-pod-ip>:8000/backendHealth
- Ausgabe ist JSON-Format
- Metrics - http://<alb-controller-pod-ip>:8001/metrics
- Ausgabe ist Textformat
Alle Clients oder Pods, die über eine Verbindung mit diesem Pod und Port verfügen, können auf diese Endpunkte zugreifen. Um den Zugriff auf bestimmte Clients einzuschränken, empfehlen wir die Kubernetes-Netzwerkrichtlinien.
Back-End-Integrität
Ermitteln der Back-End-Integrität
Der ALB-Controller macht die Back-End-Integrität auf dem ALB-Controllerpod verfügbar, der als primärer Pod fungiert.
Führen Sie den folgenden Befehl aus, um den primären Pod zu ermitteln:
CONTROLLER_NAMESPACE='azure-alb-system'
kubectl get lease -n $CONTROLLER_NAMESPACE alb-controller-leader-election -o jsonpath='{.spec.holderIdentity}' | awk -F'_' '{print $1}'
- Zugreifen auf die Back-End-Integrität über den Kubectl-Befehl
- Zugreifen auf die Back-End-Integrität direkt über den Controllerpod
Für den indirekten Zugriff über das Kubectl-Hilfsprogramm können Sie einen Listener erstellen, der Datenverkehr über einen Proxy an den Pod leitet.
kubectl port-forward <pod-name> -n $CONTROLLER_NAMESPACE 8000 8001
Sobald der Kubectl-Befehl lauscht, öffnen Sie ein weiteres Terminal (oder eine Cloud Shell-Sitzung), und führen Sie Curl für 127.0.0.1 aus, um Datenverkehr an den Pod umzuleiten.
curl http://127.0.0.1:8000
Beispielantwort:
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
Zusammengefasste Back-End-Integrität durch Application Gateway für Container
Diese Erfahrung fasst alle Kubernetes-Dienste mit Verweisen auf das Anwendungsgateway für Container und ihren entsprechenden Integritätsstatus zusammen.
Sie können auf diese zugreifen, indem Sie die Ressourcen-ID fürs Application Gateway für Container in der Abfrage der Anforderung an den ALB-Controller-Pod angeben.
Folgender Befehl kann verwendet werden, um die Back-End-Integrität für die angegebene Application Gateway for Containers-Ressource zu testen.
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?alb-id=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz
Beispielausgabe:
{
"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
}
]
}
]
}
Zusammengefasster Back-End-Integrität durch Kubernetes-Dienst
Dieser Erfahrungswert sucht nach dem Integritätszusammenfassungsstatus eines bestimmten Diensts.
Sie können auf diesen Erfahrungswert zugrifen, indem Sie den Namen des Namespaces und Diensts sowie die Portnummer des Diensts im folgenden Format der Abfragezeichenfolge an den Alb-Controller-Pod angeben: <namespace>/<service/><service-port-number>
Der folgende Befehl kann zum Testen der Back-End-Integrität für den angegebenen Kubernetes-Dienst verwendet werden.
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80
Beispielausgabe:
{
"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
}
]
}
]
}
Detaillierte Back-End-Integrität für einen angegebenen Kubernetes-Dienst
Diese Erfahrung zeigt alle Endpunkte, aus denen der Dienst besteht, einschließlich des entsprechenden Integritätsstatus und der IP-Adresse. Der Endpunktstatus wird entweder als FEHLERFREI oder FEHLERHAFTgemeldet.
Sie können darauf zugreifen, indem Sie in der Abfragezeichenfolge an den ALB-Controller-Pod "detailed=true" eingeben.
Beispielsweise können wir die Integrität einzelner Endpunkte überprüfen, indem wir folgenden Befehl ausführen:
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80\&detailed=true
Beispielausgabe:
{
"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"
}
}
]
}
]
}
]
}
metrics
Der ALB Controller zeigt derzeit Metriken nach textbasiertem Format an, die für Prometheus freigegeben werden. Der Zugriff auf diese Protokolle ist an Port 8001 des primären ALB-Controllerpods unter http://\<alb-controller-pod-ip\>:8001/metrics
verfügbar.
Die folgenden Metriken werden derzeit verfügbar gemacht:
Metrikname | Beschreibung |
---|---|
alb_connection_status | Verbindungsstatus mit einem Anwendungsgateway für Containerressource |
alb_reconnection_count | Anzahl der erneuten Verbindungsversuche mit einem Anwendungsgateway für Containerressourcen |
total_config_updates | Anzahl der Dienstroutingkonfigurationsvorgänge |
total_endpoint_updates | Anzahl der Back-End-Poolkonfigurationsvorgänge |
Bereitstellungen gesamt | Anzahl der Anwendungsgateways für Containerressourcenbereitstellungen |
total_endpoints | Anzahl der Endpunkte in einem Dienst |
total_healthy_endpoints | Anzahl der fehlerfreien Endpunkte in einem Dienst |
total_unhealthy_endpoints | Anzahl der fehlerhaften Endpunkte in einem Dienst |