ALB Controller - Integridade e métricas do back-end
Compreender a integridade do back-end de seus serviços e pods do Kubernetes é crucial para identificar problemas e ajudar na solução de problemas. Para ajudar a facilitar a visibilidade da integridade do back-end, o ALB Controller expõe a integridade do back-end e os pontos de extremidade de métricas em todas as implantações do ALB Controller.
A integridade do back-end do ALB Controller expõe três experiências diferentes:
- Integridade de back-end resumida pelo recurso Application Gateway for Containers
- Integridade de back-end resumida pelo serviço Kubernetes
- Integridade detalhada do back-end para um serviço Kubernetes especificado
O ponto de extremidade métrico do ALB Controller expõe métricas e resumo da integridade do back-end. Este parâmetro de avaliação permite a exposição ao Prometheus.
O acesso a esses pontos de extremidade pode ser acessado por meio dos seguintes URLs:
- Estado de funcionamento do back-end - http://< alb-controller-pod-ip>:8000/backendHealth
- A saída é o formato JSON
- Métricas - http://< alb-controller-pod-ip>:8001/metrics
- A saída é o formato de texto
Todos os clientes ou pods que tenham conectividade com esse pod e porta podem acessar esses endpoints. Para restringir o acesso, recomendamos o uso de políticas de rede do Kubernetes para restringir o acesso a determinados clientes.
Estado de Funcionamento do Back-end
Descobrindo a integridade do back-end
O controlador ALB expõe a integridade do back-end no pod do controlador ALB que está agindo como primário.
Para localizar o pod primário, execute o seguinte comando:
CONTROLLER_NAMESPACE='azure-alb-system'
kubectl get lease -n $CONTROLLER_NAMESPACE alb-controller-leader-election -o jsonpath='{.spec.holderIdentity}' | awk -F'_' '{print $1}'
- Acesse a integridade do back-end por meio do comando Kubectl
- Acesse a integridade do back-end via pod do controlador diretamente
Para acesso indireto via utilitário kubectl, você pode criar um ouvinte que faz proxy de tráfego para o pod.
kubectl port-forward <pod-name> -n $CONTROLLER_NAMESPACE 8000 8001
Quando o comando kubectl estiver escutando, abra outro terminal (ou sessão de shell na nuvem) e execute curl para 127.0.0.1 para ser redirecionado para o pod.
curl http://127.0.0.1:8000
Resposta de exemplo:
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
Integridade de back-end resumida pelo Application Gateway for Containers
Esta experiência resume todos os serviços do Kubernetes com referências ao Application Gateway for Containers e seu status de integridade correspondente.
Essa experiência pode ser acessada especificando o ID do recurso Application Gateway for Containers na consulta da solicitação ao pod alb-controller.
O comando a seguir pode ser usado para investigar a integridade do back-end para o recurso especificado do 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
Saída de exemplo:
{
"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
}
]
}
]
}
Integridade de back-end resumida pelo serviço Kubernetes
Essa experiência procura o status de resumo de integridade de um determinado serviço.
Essa experiência pode ser acessada especificando o nome do namespace, serviço e número da porta do serviço no seguinte formato da cadeia de caracteres de consulta para o pod alb-controller: <namespace>/<service>/<service-port-number>
O comando a seguir pode ser usado para investigar a integridade do back-end para o serviço Kubernetes especificado.
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80
Saída de exemplo:
{
"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
}
]
}
]
}
Integridade detalhada do back-end para um serviço Kubernetes especificado
Essa experiência mostra todos os pontos de extremidade que compõem o serviço, incluindo seu status de integridade e endereço IP correspondentes. O estado do parâmetro de avaliação final é reportado como SAUDÁVEL ou INSAUDÁVEL.
Essa experiência pode ser acessada especificando detailed=true na cadeia de caracteres de consulta para o pod alb-controller.
Por exemplo, podemos verificar a integridade de cada ponto de extremidade executando o seguinte comando:
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80\&detailed=true
Saída de exemplo:
{
"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étricas
ALB Controller atualmente apresenta métricas seguindo o formato baseado em texto para ser exposto ao Prometheus. O acesso a esses logs está disponível na porta 8001 do pod http://\<alb-controller-pod-ip\>:8001/metrics
do controlador alb primário.
As seguintes métricas são expostas hoje:
Nome da Métrica | Description |
---|---|
alb_connection_status | Status da conexão com um recurso do Application Gateway for Containers |
alb_reconnection_count | Número de tentativas de reconexão a um Application Gateway para recursos de contêineres |
total_config_updates | Número de operações de configuração de roteamento de serviço |
total_endpoint_updates | Número de operações de configuração do pool de back-end |
total_deployments | Número de implantações de recursos do Application Gateway for Containers |
total_endpoints | Número de pontos de extremidade em um serviço |
total_healthy_endpoints | Número de pontos de extremidade íntegros em um serviço |
total_unhealthy_endpoints | Número de pontos de extremidade não íntegros em um serviço |