Mantenha as APIs saudáveis com APISIX e Prometheus
July 20, 2023
Verificações de saúde da API fazem parte de uma abordagem proativa para monitorar a saúde geral das suas APIs. Elas garantem que você esteja informado sobre a saúde geral da sua API e possam identificar problemas nos estágios iniciais. Neste artigo, exploraremos como o APISIX e o Prometheus trabalham juntos para coletar e analisar métricas de dados de verificação de saúde, facilitando o monitoramento, diagnóstico e resolução de problemas relacionados à API.
Por que isso é importante para as empresas?
O fato de estabelecer Indicadores de Nível de Serviço (SLIs) e Objetivos de Nível de Serviço (SLOs) tornou-se um componente crucial das melhores práticas de engenharia de confiabilidade de sites (SRE). Eles ajudam a equipe a definir metas claras sobre o quão bem um serviço (como um site ou um aplicativo) deve funcionar. Essas metas podem ser para serviços internos (como uma API usada pelos próprios aplicativos da empresa) ou para produtos públicos (usados pelos clientes). Eles fornecem às equipes uma abordagem quantificável para gerenciar o desempenho de um sistema. Por exemplo, SLIs comuns incluem taxa de erro, latência, taxa de transferência e disponibilidade, ou um SLO poderia ser "99,9% das solicitações de API devem ser concluídas em menos de 300ms".
O APISIX API Gateway fica na frente da sua infraestrutura de API e pode ser fundamental para medir SLIs e SLOs. Você não precisa descobrir o que medir e como medir, pois isso pode se tornar problemático, especialmente nas arquiteturas complexas e distribuídas de hoje. O APISIX rastreia automaticamente todas as métricas necessárias, como latência, solicitações mal-sucedidas ou taxa de transferência para os serviços upstream consumidos pelas suas APIs. O APISIX pode realizar verificações de saúde nos serviços de backend, garantindo que estejam disponíveis para processar solicitações e alertar as equipes responsáveis sobre possíveis problemas antes que eles se agravem, minimizando o tempo de inatividade e melhorando a confiabilidade do sistema.
Como funciona a verificação de saúde de um gateway de API?
Geralmente, ativar verificações de saúde para APIs é um processo simples. Cada serviço só precisa de um endpoint de verificação de saúde designado (/health
). A partir daí, você inspeciona as métricas mais relevantes para esse serviço, como uso de memória, conectividade do banco de dados, duração da resposta e muito mais. Você pode usar plataformas de observabilidade como Prometheus e Grafana para exibir os resultados e um sistema de alerta para sinalizar imediatamente quaisquer problemas.
Um dos benefícios do APISIX é que ele torna o processo de configuração de ferramentas de observabilidade ainda mais fácil para vários serviços. O APISIX envia periodicamente solicitações para os serviços de backend que gerencia (também conhecidos como nós upstream). Se um status saudável for retornado (normalmente um código de status HTTP 200 OK), o serviço é considerado saudável. O gateway também pode avaliar o tempo de resposta, tratando uma resposta lenta como um indicativo de possíveis problemas. Se o serviço não responder dentro de um período de tempo especificado ou se retornar um status de erro, ele é marcado como não saudável. Ele parará de rotear o tráfego para esse serviço para evitar erros ou lentidão no aplicativo e roteará o tráfego para um nó saudável. Saiba como ativar a verificação de saúde aqui.
Coletando dados de verificação de saúde com o plugin Prometheus do APISIX
O APISIX integra-se ao Prometheus por meio de um plugin chamado prometheus
, oferecendo uma maneira eficiente de extrair métricas de API, incluindo aquelas relacionadas ao status de saúde dos nós upstream (múltiplas instâncias de um serviço de API de backend). Veja como funciona:
- Quando o plugin Prometheus do APISIX é ativado (veja como ativá-lo aqui), ele expõe uma URL de métricas, normalmente
/apisix/prometheus/metrics
. Você também pode personalizar o URI de exportação, adicionar rótulos extras, a frequência dessas coletas e outros parâmetros configurando-os no arquivoconf/config.yaml
.
plugin_attr:
prometheus:
export_uri: /metrics
- O Prometheus coleta essa URL em intervalos específicos, coletando dados de séries temporais associados a vários parâmetros de desempenho, como contagem de solicitações, latência de solicitação, latência upstream e códigos de status.
- Com a funcionalidade de métricas personalizadas do Prometheus que lançamos na versão APISIX 3.3.0, agora você pode expor dados de métricas mais granulares para suas APIs. Esse mecanismo permite que o APISIX verifique periodicamente se os nós upstream estão saudáveis ou não e ajuste o roteamento de acordo. Isso pode ajudar a prevenir falhas e melhorar a confiabilidade do sistema, o que é crítico para qualquer infraestrutura baseada em API. Os resultados dessas verificações de saúde são incorporados nas métricas que o plugin Prometheus expõe, fornecendo uma visão abrangente e em tempo real do desempenho das suas APIs. Por exemplo, se você enviar uma solicitação simples para o endpoint
/metrics
do APISIX Gateway, poderá observar os dados de monitoramento coletados e o status do resultado da verificação de saúde dos nós upstream.
curl <http://127.0.0.1:9091/metrics>
...
# HELP apisix_upstream_status Status upstream da verificação de saúde
# TYPE apisix_upstream_status gauge
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="80"} 1
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="80"} 1
Um valor de 1 representa saudável e 0 significa que o nó upstream não está saudável.
- Você também pode ver a saída dos status de verificação de saúde dos nós upstream no painel do Prometheus:
- O plugin Prometheus do APISIX é configurado para se conectar automaticamente ao Grafana para visualizar essas métricas.
Igualmente importante, também é possível habilitar o Prometheus para coletar métricas para TCP/UDP. Porque a observabilidade na camada de transporte fornece insights sobre como os dados são transmitidos entre os serviços na sua infraestrutura e pode ser crucial para diagnosticar problemas e otimizar o desempenho.
Personalizando o plugin Prometheus
No contexto do APISIX, o plugin Prometheus expõe várias métricas por padrão. Essas métricas são configuráveis, e o plugin pode ser estendido para adicionar métricas adicionais com base em requisitos específicos. A equipe da API7.ai está sempre à disposição para responder a quaisquer perguntas que você possa ter sobre verificação e monitoramento de saúde de API, e nossos engenheiros estão ativamente apoiando novos usuários do APISIX a bordo e ajudando-os a modificar as configurações padrão do APISIX de acordo com suas necessidades.
Caso de uso real: Gigante de Fast-Food Melhora o Monitoramento de Saúde do Servidor com Integração do APISIX e Prometheus
Suponha que haja uma grande cadeia global de fast-food com milhares de filiais em todo o mundo (doravante denominada "Empresa X") estava interessada em alcançar uma configuração de servidor ativo-ativo. Seu objetivo era garantir que todos os servidores ou data centers pudessem compartilhar a carga de trabalho em tempo real sem causar interrupções no serviço.
A equipe de tecnologia da empresa havia automatizado o processo de alternância entre servidores ou data centers. No entanto, havia ocasiões em que o tráfego de negócios variava entre os servidores ativos, e a carga era distribuída de forma desigual. Alguns servidores estavam sobrecarregados, e outros recebiam menos tráfego, levando a ineficiências operacionais. Durante os horários de pico, isso levava a falhas de servidores e interrupções de serviço, afetando as operações digitais da empresa.
O APISIX permitiu que a empresa monitorasse continuamente a saúde de seus servidores/data centers upstream e alternasse automaticamente o tráfego com base no status de saúde do servidor. Se um servidor for considerado não saudável, o sistema pode alternar automaticamente para outro servidor saudável para manter o serviço ininterrupto. Em cenários específicos em que o tráfego era incomumente pequeno ou grande demais para um servidor lidar, o mecanismo de alerta do Prometheus acionava alarmes. Essa integração facilitou a equipe de operações da Empresa X a monitorar proativamente os status de saúde dos servidores, cargas de tráfego e outras métricas críticas.
Conclusão
Em resumo, integrar o APISIX e o Prometheus para obter métricas de dados de verificação de saúde pode melhorar significativamente o seu ecossistema de métricas, proporcionando uma compreensão mais profunda do status de saúde das suas APIs. Isso pode, em última análise, levar a melhores resultados de negócios, como maior eficiência operacional, maior satisfação do cliente e aumento da receita. Portanto, se você deseja elevar o nível do seu ecossistema de métricas, considere aproveitar a força do APISIX e do Prometheus.
Recursos relacionados
- Monitorando Métricas de API: Como Garantir o Desempenho Ideal da Sua API?
- Monitorando Microsserviços com Prometheus e Grafana