BLOG | NGINX

Como visualizar o NGINX Plus com Prometheus e Grafana

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Monica Thorne
Mônica Thorne
Publicado em 23 de setembro de 2021

Conforme discutimos em Como melhorar a visibilidade no Kubernetes , um dos maiores desafios para as equipes de desenvolvimento e entrega de aplicativos é obter insights sobre o desempenho, a segurança e a disponibilidade do aplicativo. Esses insights ajudam as equipes a solucionar problemas rapidamente e a se preparar proativamente para picos de tráfego.

Ferramentas de gerenciamento de tráfego – como balanceadores de carga, proxies reversos, gateways de API e controladores Ingress – geram uma riqueza de informações sobre a integridade do seu aplicativo e da infraestrutura. Você pode monitorar essas métricas valiosas em tempo real no painel do NGINX Plus , e o NGINX Plus também pode fornecer métricas para ferramentas de monitoramento de terceiros para fornecer insights extras a partir de visualizações de desempenho ao longo do tempo. Duas das ferramentas mais populares trabalham juntas para fornecer estes gráficos de séries temporais:

  • Prometheus – Um projeto de código aberto da Cloud Native Computing Foundation (CNCF) para monitoramento e alerta
  • Grafana – Uma ferramenta de visualização e análise de código aberto que gera gráficos e outras visualizações de bancos de dados de séries temporais, como o Prometheus

O módulo Prometheus-njs facilita o fornecimento de métricas do NGINX Plus para o Prometheus e o Grafana. Ele usa o módulo NGINX JavaScript (NJS) e a API NGINX Plus para exportar métricas do NGINX Plus para o servidor Prometheus.

Nesta demonstração em vídeo, abordamos as etapas completas para configurar o NGINX Plus, Prometheus e Grafana, e criar gráficos Grafana.

Para ajudar você a configurar sua própria implementação, resumimos as etapas nas seções a seguir, mapeadas para pontos no tempo no vídeo:

Notas:

  • Essas instruções dependem da API NGINX Plus e, portanto, não funcionam no NGINX Open Source.
  • Para usar o Prometheus e o Grafana com o NGINX Ingress Controller, consulte nossa documentação .

Pré-requisitos

Antes de iniciar a demonstração, atendemos aos seguintes pré-requisitos.

  1. Instale o NGINX Plus no servidor NGINX Plus. Para fins de demonstração, estamos fazendo uma instalação inicial limpa. Se você estiver usando um servidor NGINX Plus existente, talvez seja necessário modificar as alterações feitas nos arquivos de configuração durante a demonstração.
  2. Instale o módulo NGINX JavaScript (njs) no servidor NGINX Plus.
  3. Instale a versão mais recente do Docker no servidor Prometheus. Na demonstração, seguimos a prática comum e executamos o Prometheus em um segundo servidor, separado do NGINX Plus.
  4. Instale a versão mais recente do Docker no servidor Grafana (na demonstração, um terceiro servidor).

Configurar o servidor NGINX Plus (1:20)

  1. Instale o módulo Prometheus-njs . Estamos usando o Ubuntu 20.04 na demonstração, e este é o comando apropriado. Para outros sistemas operacionais, consulte a documentação .

    $ sudo apt-get install nginx-plus-module-prometheus
    
  2. Usando seu editor de texto preferido, abra /etc/nginx/nginx.conf e adicione a seguinte diretiva load_module no contexto de nível superior, fora do bloco http .

    load_module modules/ngx_http_js_module.so;
    # diretivas de nível superior existentes
    
    http {
    #...
    }
    
  3. (Opcional) Aumente o tamanho do buffer para armazenar corpos de resposta de sub-solicitações (o tamanho padrão é 4 KB ou 8 KB , dependendo da plataforma). Isso evita erros de resposta de sub-solicitação muito grandes , que aparecem no log de erros do NGINX . Adicione a seguinte diretiva subrequest_output_buffer_size no bloco http .

    http { #...
    subrequest_output_buffer_size 32k;
    }
    
  4. Salve nginx.conf e execute este comando para verificar se a configuração do NGINX está sintaticamente correta.

    $ sudo nginx -t nginx: a sintaxe do arquivo de configuração /etc/nginx/nginx.conf está ok nginx: o teste do arquivo de configuração /etc/nginx/nginx.conf foi bem-sucedido
    
  5. Altere o diretório para conf.d e liste os arquivos.

    $ cd conf.d $ ls default.conf
    
  6. O arquivo default.conf define um servidor virtual que escuta na porta 80. O servidor virtual do Prometheus precisa escutar nessa porta, então remova default.conf para liberá-lo.

    $ sudo rm default.conf
    
  7. Usando seu editor de texto preferido, crie um novo arquivo chamado prometheus.conf , com o seguinte conteúdo.

    js_import /usr/share/nginx-plus-module-prometheus/prometheus.js;
    
    servidor {
    localização = /metrics {
    js_content prometheus.metrics;
    }
    
    localização /api {
    api;
    } 
    }
    

    A diretiva js_import especifica o local do código JavaScript do NGINX que converte as métricas geradas pela API do NGINX Plus no formato exigido pelo Prometheus. (Você também não precisa adicionar uma diretiva load_module para Prometheus-njs .)

    O primeiro bloco de localização fornece acesso às métricas formatadas pelo Prometheus. O segundo bloco de localização ativa a API NGINX Plus , que gera as métricas brutas e as expõe ao Prometheus.

    Observação:  Em ambientes de produção, recomendamos fortemente restringir o acesso à API do NGINX Plus, conforme descrito em nossa documentação .

    Para mais informações sobre o módulo Prometheus-njs , consulte nossa documentação .

  8. Salve prometheus.conf , verifique a sintaxe correta como na Etapa 4 e execute este comando para iniciar o NGINX Plus.

    $ sudo nginx
    

Configurar o servidor Prometheus (5:30)

  1. Crie um novo arquivo de configuração do Prometheus no formato YAML chamado prometheus.yml no diretório /etc/prometheus , com este conteúdo (com base em um arquivo de configuração padrão do site do Prometheus). Conforme mostrado, a única alteração a ser feita é adicionar o endereço IP e a porta do servidor NGINX Plus no campo de destinos.

    global: intervalo_de_raspagem: 15s rótulos_externos: monitor: 'codelab-monitor' configurações_de_raspagem: - nome_do_trabalho: 'prometheus' intervalo_de_raspagem: 5s static_configs: - alvos: [' NGINX_Plus_IP_address :80']
    

    Para obter detalhes sobre a configuração do Prometheus, incluindo mais opções que você pode incluir no arquivo de configuração, consulte a documentação do Prometheus .

  2. Salve prometheus.yml e execute o seguinte comando. Ele extrai o Prometheus do Docker Hub e o expõe na porta 9090.

    $ sudo docker run --network="host" -d -p 9090:9090 -v ~/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
    
  3. Em um navegador, navegue até o endereço IP e a porta do novo servidor Prometheus. Uma página como a seguinte confirma que o servidor está funcionando.

  4. Verifique se o Prometheus está acessando o feed de métricas do NGINX Plus. Clique no ícone do globo à esquerda do botão Executar , no canto superior direito da janela. Uma lista de métricas como a seguinte é exibida.

Configurar o servidor Grafana (9:15)

  1. Execute este comando para extrair o Grafana do Docker Hub e expô-lo na porta 3000:

    [terminal]$ sudo docker run -d -p 3000:3000 grafana/grafana
    

    Para outros métodos de instalação, consulte a documentação do Grafana .

  2. Em um navegador, navegue até o endereço IP e a porta do novo servidor Grafana. A página de login do Grafana confirma que o servidor está funcionando.

  3. Efetue login digitando admin nos campos E-mail ou nome de usuário e Senha . Recomendamos fortemente que você defina uma nova senha segura quando solicitado, mas pularemos essa etapa na demonstração por uma questão de tempo.

  4. Na página inicial do Grafana que aparece, registre o Prometheus como uma fonte de dados seguindo as instruções na documentação do Grafana . O vídeo mostra os passos na interface gráfica do usuário do Grafana.

    Observação:  Na Etapa 5 das instruções do Grafana, em vez do exemplo de URL mostrado ( http://localhost:9090 ), insira o endereço IP do seu servidor Prometheus (e a porta 9090).

    Após clicar no botão Salvar e testar na Etapa 7 das instruções do Grafana, a caixa verde com uma marca de seleção e a mensagem A fonte de dados está funcionando indicam que o Grafana se conectou com sucesso ao servidor Prometheus.

Crie gráficos NGINX Plus no Grafana (11:15)

Enquanto o Prometheus é útil para analisar apenas uma métrica, o Grafana facilita a análise de uma coleção de métricas em um único gráfico.

Para construir um gráfico Grafana:

  1. Clique no sinal de mais ( + ) na barra de navegação no lado esquerdo da página (veja a captura de tela na Etapa 4 da seção anterior). Selecione Painel no menu suspenso Criar .

  2. Clique na caixa Adicionar um painel vazio .

  3. Na página Novo painel/Painel de edição que aparece, verifique se o Prometheus aparece no campo Fonte de dados da guia Consulta na metade inferior da página. Caso contrário, selecione Prometheus no menu suspenso.

  4. Digite nginx no campo Navegador de métricas > . Uma lista de métricas do NGINX Plus é exibida.

    Aqui estão breves descrições para lhe dar uma ideia de quais informações eles fornecem.

    • nginxplus_connections_accepted – Conexões de cliente aceitas
    • nginxplus_connections_active – Conexões de cliente ativas
    • nginxplus_connections_dropped – Conexões de cliente descartadas
    • nginxplus_connections_idle – Conexões de cliente ociosas
    • nginxplus_http_requests_current – Solicitações HTTP atuais
    • nginxplus_http_requests_total – Total de solicitações HTTP
    • nginxplus_nginx_meta – meta informações do NGINX
    • nginxplus_processes_respawned – Número total de processos filho encerrados e re-gerados de forma anormal
    • nginxplus_ssl_handshakes – Handshakes SSL bem-sucedidos
    • nginxplus_ssl_handshakes_failed – Handshakes SSL com falha
    • nginxplus_ssl_session_reuses – Reutilizações de sessão durante o handshake SSL
    • nginxplus_workers_mem_private – Memória privada usada por trabalhadores NGINX, não inclui bibliotecas compartilhadas
    • nginxplus_workers_mem_rss – Memória utilizada pelos processos de trabalho do NGINX
  5. Selecione uma métrica da lista (na demonstração selecionamos nginxplus_connections_active ). Para selecionar outra métrica, clique no botão + Consulta e selecione outra métrica no novo campo Navegador de métricas > (na demonstração, selecionamos nginxplus_connections_idle ).

  6. Clique no ícone "atualizar" (duas setas formando um círculo) acima do gráfico na metade superior da página, e os resultados começarão a aparecer no gráfico.

Bônus: Insights e análises unificados para todas as suas implantações NGINX Plus

Você pode estar se perguntando “E se eu tiver uma grande implantação do NGINX, incluindo muitas instâncias do NGINX Plus?” ou “Como posso atualizar a configuração das minhas instâncias com base nos insights e análises do Prometheus e do Grafana?” O NGINX Controller , nossa solução de plano de controle e gerenciamento para implantações do NGINX, ajuda você a resolver essas questões e muito mais.

Embora Prometheus e Grafana sejam excelentes soluções para monitoramento, alertas e visualização, eles não fornecem uma maneira de atualizar configurações e políticas. Tomar medidas com base nesses insights ainda exige login em instâncias individuais do NGINX Plus para fazer alterações, o que pode ser demorado e propenso a erros, especialmente para implantações grandes e complexas do NGINX Plus.

O NGINX Controller oferece insights e análises profundas sobre mais de 200 métricas do NGINX Plus, incluindo solicitações por segundo, uso da CPU, 4xx e 5xx erros, falhas de verificação de integridade e muito mais – tudo apresentado em uma plataforma unificada, intuitiva e centrada em aplicativos. Você pode então se aprofundar nos dados, exportá-los em relatórios e fazer as alterações necessárias na configuração e nas políticas, aproveitando fluxos de trabalho automatizados e específicos de funções, projetados por especialistas da NGINX para abstrair a complexidade.

Com o NGINX Controller, você pode manter o controle das implantações de seus aplicativos e assumir o controle das instâncias e objetos de configuração do NGINX Plus (por exemplo, ambientes, gateways e aplicativos) em escala. E você não precisa sacrificar o uso de suas soluções favoritas de monitoramento e alerta; o design API‑first do Controller torna a integração com soluções de terceiros muito simples e direta.

Comece a usar o NGINX Plus e o NGINX Controller

Se você ainda não experimentou o NGINX Plus, recomendamos que experimente como um balanceador de carga, proxy reverso e gateway de API, ou como um servidor web totalmente suportado com APIs aprimoradas de monitoramento e gerenciamento. Comece hoje mesmo com uma avaliação gratuita de 30 dias ou entre em contato conosco para discutir seus casos de uso .

E se você acha que o NGINX Controller pode ser a maneira de visualizar e monitorar sua frota NGINX Plus, confira o teste gratuito de 30 dias que inclui os módulos Application Delivery e API Management com o Controller App Security.


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."