Melhores práticas para integrar Prometheus com APISIX
January 13, 2024
Na arquitetura nativa em nuvem de hoje, monitorar as métricas do seu gateway de API é crucial. O Apache APISIX, atuando como um gateway de API de alto desempenho, não apenas oferece funcionalidades extensas, mas também suporta integração perfeita com o Prometheus para coletar e monitorar métricas-chave do tráfego de API. Este artigo explora como configurar e usar o Prometheus no Apache APISIX, destacando considerações essenciais e recomendando configurações comuns de métricas.
Sobre o Prometheus
Prometheus é um sistema de monitoramento de código aberto que coleta e armazena dados de séries temporais, permitindo o monitoramento e análise em tempo real do desempenho do sistema. Quando integrado ao Apache APISIX, o Prometheus se torna fundamental para capturar métricas detalhadas relacionadas ao tráfego de API.
Habilitando o Plugin Prometheus no Apache APISIX
-
Para habilitar as métricas do Prometheus no Apache APISIX, comece configurando o plugin Prometheus no arquivo
config.yaml
:plugins: - prometheus
-
Configure o plugin Prometheus no serviço ou API desejado para ser coletado. Alternativamente, configure-o globalmente. Aqui está um exemplo de configuração do plugin usando um comando cURL:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "prometheus":{} }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:80": 1 } } }'
Para configurações mais complexas, consulte: Documentação do Plugin Prometheus
Configurando a Estratégia de Coleta no Prometheus
No Prometheus, configure o arquivo prometheus.yml
para adicionar o APISIX como um novo alvo de monitoramento:
scrape_configs:
- job_name: 'apisix'
static_configs:
- targets: ['<APISIX_IP>:<APISIX_PORT>']
Métricas Comuns no Apache APISIX
As métricas específicas para empresas podem variar, mas aqui estão algumas métricas-chave no Apache APISIX, fornecendo informações ricas para monitoramento e análise do sistema:
-
Métricas de Requisição e Resposta HTTP:
apisix_http_request_total
: Registra o total de requisições HTTP através do APISIX, oferecendo uma visão geral do tráfego do sistema.apisix_http_request_duration_seconds
: Mede o tempo de processamento das requisições HTTP, ajudando a identificar gargalos de desempenho.apisix_http_request_size_bytes
: Captura o tamanho das requisições HTTP para análise de dados.apisix_http_response_size_bytes
: Monitora o tamanho das respostas HTTP para acompanhar o volume de dados de resposta.
-
Métricas de Serviço Upstream:
apisix_upstream_latency
: Reflete a latência de resposta dos serviços upstream.apisix_upstream_health
: Indica o status de saúde dos serviços upstream.
-
Métricas de Desempenho do Sistema:
apisix_node_cpu_usage
: Relata o uso da CPU do nó APISIX.apisix_node_memory_usage
: Oferece insights sobre o uso de memória.
-
Métricas de Tráfego:
apisix_bandwidth
: Detalha o uso de largura de banda para tráfego upstream e downstream.
-
Métricas de Erro e Exceção:
apisix_http_status_code
: Distribui os códigos de status de resposta HTTP, com foco particular em erros 4xx e 5xx.
Visualização e Alertas
Aproveite a integração do Grafana e Prometheus para criar painéis de visualização dessas métricas. Além disso, as regras de alerta do Prometheus podem ser configuradas para definir alertas com base em condições específicas.
Exemplo de Painel do Grafana: Crie vários gráficos no Grafana, como séries temporais, gráficos de barras ou gráficos de pizza, para exibir as métricas de desempenho do APISIX. Por exemplo, um painel exibindo contagens de requisições HTTP e tempos médios de resposta oferece insights em tempo real sobre o tráfego e o desempenho.
Exemplo de Alerta do Prometheus:
As regras de alerta no Prometheus podem ser configuradas para várias condições. Por exemplo, se a duração média de apisix_http_request_duration_seconds
ultrapassar um limite pré-definido, o Prometheus pode ser configurado para enviar alertas críticos.
Considerações de Otimização
Embora ter métricas extensas do Prometheus aumente as dimensões de monitoramento e alerta, é crucial reconhecer que essas métricas consomem recursos computacionais. Mais métricas implicam em maiores demandas de recursos, potencialmente impactando os sistemas de negócios.
Desde a versão 3.0, o Apache APISIX otimizou significativamente o plugin Prometheus, introduzindo um processo dedicado para estatísticas e recuperação de métricas. Essa melhoria mitiga o impacto no tráfego de negócios causado por estatísticas extensas de métricas do Prometheus, contribuição da API7.ai.
Conclusão
Ao integrar o Prometheus com o Apache APISIX, as empresas obtêm insights profundos sobre sua infraestrutura de API, garantindo operações eficientes e seguras. O monitoramento do tráfego de API gradualmente se torna uma ferramenta essencial para prevenir proativamente problemas, otimizar o desempenho e garantir a segurança.