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:
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:
Antes de iniciar a demonstração, atendemos aos seguintes pré-requisitos.
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
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 {
#...
}
(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;
}
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
Altere o diretório para conf.d e liste os arquivos.
$ cd conf.d $ ls default.conf
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
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 .
Salve prometheus.conf , verifique a sintaxe correta como na Etapa 4 e execute este comando para iniciar o NGINX Plus.
$ sudo nginx
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 .
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
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.
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.
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 .
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.
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.
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.
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:
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 .
Clique na caixa Adicionar um painel vazio .
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.
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 aceitasnginxplus_connections_active
– Conexões de cliente ativasnginxplus_connections_dropped
– Conexões de cliente descartadasnginxplus_connections_idle
– Conexões de cliente ociosasnginxplus_http_requests_current
– Solicitações HTTP atuaisnginxplus_http_requests_total
– Total de solicitações HTTPnginxplus_nginx_meta
– meta informações do NGINXnginxplus_processes_respawned
– Número total de processos filho encerrados e re-gerados de forma anormalnginxplus_ssl_handshakes
– Handshakes SSL bem-sucedidosnginxplus_ssl_handshakes_failed
– Handshakes SSL com falhanginxplus_ssl_session_reuses
– Reutilizações de sessão durante o handshake SSLnginxplus_workers_mem_private
– Memória privada usada por trabalhadores NGINX, não inclui bibliotecas compartilhadasnginxplus_workers_mem_rss
– Memória utilizada pelos processos de trabalho do NGINXSelecione 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
).
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.
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.
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."