Pular para o conteúdo principal
As integrações do AppSignal e o agente standalone do AppSignal podem gerar métricas a partir dos logs de acesso do seu servidor NGINX. Após configurar seu servidor NGINX para enviar métricas ao AppSignal, um magic dashboard com métricas relacionadas ao seu servidor NGINX aparecerá.

Configurando o AppSignal

Primeiro, você deve configurar sua integração AppSignal ou agente standalone para receber métricas do NGINX.
Habilitar as métricas do NGINX abrirá um servidor para o NGINX enviar métricas. Por padrão, este servidor está vinculado a localhost e escuta na porta 27649. Você pode modificar essas configurações usando as opções de configuração bind_address e nginx_port.Se você está executando várias aplicações instrumentadas com AppSignal ao mesmo tempo no mesmo servidor, pode configurar cada aplicação para escutar em uma porta diferente usando a opção de configuração nginx_port.
Se você configura sua integração AppSignal com variáveis de ambiente, deve definir APPSIGNAL_ENABLE_NGINX_METRICS como true. Se você configura sua integração AppSignal com arquivos de configuração, ou usa o agente standalone, pode seguir as instruções relevantes abaixo sobre como habilitar as métricas do NGINX para sua aplicação:

Ruby

O suporte às métricas do NGINX foi adicionado na versão 3.3.4 da integração Ruby.
Adicione enable_nginx_metrics: true ao ambiente desejado no arquivo config/appsignal.yml da sua aplicação, por exemplo, o ambiente de produção:
production:
  enable_nginx_metrics: true
  # ...

Elixir

O suporte às métricas do NGINX foi adicionado na versão 2.5.2 da integração Elixir.
Adicione enable_nginx_metrics: true ao seu bloco de configuração do AppSignal, normalmente localizado em config/config.exs:
config :appsignal, :config,
  enable_nginx_metrics: true,
  # ...

Node.js

O suporte às métricas do NGINX foi adicionado na versão 3.0.8 da integração Node.js.
Adicione enableNginxMetrics: true ao seu arquivo appsignal.cjs:
new Appsignal({
  enableNginxMetrics: true,
  // ...
});

Agente standalone

O suporte às métricas do NGINX foi adicionado na versão 0.0.24 do agente standalone.
Adicione enable_nginx_metrics = true ao seu arquivo de configuração /etc/appsignal-agent.conf:
enable_nginx_metrics = true

Configurando o NGINX

O próximo passo é configurar seu servidor NGINX para enviar métricas ao AppSignal. Na maioria das distribuições Linux, a configuração padrão do NGINX incluirá arquivos de configuração de uma pasta de configuração, frequentemente localizada em /etc/nginx/conf.d. Salve a seguinte configuração nessa pasta como appsignal-metrics.conf:
map '' $appsignal_group {
  default 'http';
}

log_format appsignal_metrics '1|g=$appsignal_group;s=$status;rqt=$request_time;rql=$request_length;bs=$bytes_sent;ua=$upstream_addr;uct=$upstream_connect_time;uht=$upstream_header_time;urst=$upstream_response_time;us=$upstream_status;ucs=$upstream_cache_status;ca=$connections_active;cr=$connections_reading;cwr=$connections_writing;cwa=$connections_waiting';
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Substitua 127.0.0.1:27649 pelo host e porta onde sua integração AppSignal ou agente stand-alone está escutando por métricas do NGINX.
Se sua configuração do NGINX não inclui arquivos de configuração conforme descrito acima, você pode incluí-la dentro do bloco http do seu arquivo nginx.conf:
http {
  include '/path/to/appsignal-metrics.conf';
  ...
}
Observe que se um bloco server ou location contém uma diretiva access_log, as métricas para requisições a esse server ou location não serão reportadas ao AppSignal. Para reportar métricas ao AppSignal para essas requisições, você precisará adicionar a seguinte linha dentro do bloco:
Shell
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Substitua 127.0.0.1:27649 pelo host e porta onde sua integração AppSignal ou agente stand-alone está escutando por métricas do NGINX.
A diretiva access_log existente dentro do bloco continuará funcionando como antes.

Configurando grupos de requisições

Ao alterar o valor da variável $appsignal_group dentro de um bloco location ou server em sua configuração NGINX, você pode diferenciar entre diferentes tipos de requisições tratadas pelo seu servidor NGINX:
location /admin {
  set $appsignal_group 'admin';
  ...
}
As métricas relacionadas a requisições serão segmentadas pelo seu grupo, e os diferentes grupos serão rastreados independentemente nos gráficos do magic dashboard para essas métricas.

Desabilitando métricas

Você pode usar a diretiva access_log off para desabilitar todos os logs de acesso dentro de um bloco location ou server. Observe que isso desabilitará todos os logs de acesso configurados, não apenas aqueles que são enviados ao AppSignal como métricas. Para reportar métricas apenas de blocos location ou server específicos, remova a seguinte linha do arquivo appsignal-metrics.conf e adicione-a apenas dentro dos blocos location ou server específicos dos quais você gostaria de reportar métricas para o AppSignal:
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Substitua 127.0.0.1:27649 pelo host e porta onde sua integração AppSignal ou agente stand-alone está escutando por métricas do NGINX.
Fazer isso desabilitará implicitamente todos os logs de acesso das diretivas access_log no bloco server ou http envolvente. Para habilitar esses logs de acesso novamente, repita a diretiva access_log correspondente dentro do bloco location ou server onde você adicionou a linha acima:
server {
  access_log /var/log/nginx/access.log main;

  location /app {
    # esta linha habilita as métricas do AppSignal NGINX para este location
    # mas também desabilita o log de acesso declarado no bloco server
    access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;

    # esta linha habilita novamente o log de acesso declarado no bloco server
    access_log /var/log/nginx/access.log main;
  }
}

Magic dashboard

O magic dashboard do NGINX As métricas enviadas ao AppSignal pelo seu servidor NGINX serão usadas para criar um magic dashboard. Neste dashboard, você poderá ver gráficos representando métricas úteis ao longo do tempo, como:
  • Tempo de requisição: o tempo levado pelo seu servidor NGINX para responder a uma requisição, como média por minuto e percentil 95.
  • Throughput: uma contagem das requisições tratadas pelo seu servidor NGINX.
  • Comprimento da requisição: o comprimento em bytes da requisição recebida do cliente pelo seu servidor NGINX, como média por minuto e percentil 95.
  • Comprimento da resposta: o comprimento em bytes da resposta enviada ao cliente pelo seu servidor NGINX, como média por minuto e percentil 95.
  • Códigos de status: uma contagem dos códigos de status das respostas enviadas pelo seu servidor NGINX.
  • Conexões: um gauge das conexões atualmente tratadas pelo seu servidor NGINX, medidas uma vez por minuto e segmentadas pelo status da conexão.
  • Códigos de status upstream: uma contagem dos códigos de status das respostas enviadas pelos servidores upstream dos quais seu servidor NGINX faz proxy.
  • Tempo de resposta upstream: o tempo levado para responder a uma requisição pelos servidores upstream dos quais seu servidor NGINX faz proxy, como média por minuto e percentil 95.
  • Status do cache upstream: o status do cache (como HIT ou MISS) ao tratar uma requisição em cache vinda de um servidor upstream.
A maioria desses gráficos é segmentada pelo grupo de requisição, o hostname ou o upstream relevante, se houver. Você pode, no entanto, mergulhar no editor de gráficos e escolher uma segmentação diferente que forneça uma visão mais útil de seus dados. Veja a seção abaixo para uma divisão detalhada das métricas enviadas pelo seu servidor NGINX.

Métricas

As seguintes métricas serão enviadas ao AppSignal pelo seu servidor NGINX:
  • nginx_status: Um counter que incrementa para cada requisição tratada pelo seu servidor NGINX. Marcado por:
    • status: O código de status da resposta.
    • group: O grupo da requisição, conforme configurado no seu servidor NGINX.
    • hostname: O hostname do servidor que tratou a requisição.
  • nginx_request_time: Uma distribuição do tempo levado para responder a cada requisição. Marcado por:
  • nginx_request_length: Uma distribuição dos bytes recebidos na requisição do cliente, para cada requisição. Marcado por:
  • nginx_bytes_sent: Uma distribuição dos bytes enviados na resposta ao cliente, para cada requisição. Marcado por:
Se a requisição é tratada fazendo proxy de um upstream usando a diretiva proxy_pass do NGINX, as seguintes métricas também estarão presentes:
  • nginx_upstream_time: Uma distribuição do tempo levado para se comunicar com o servidor upstream. Marcado por:
    • group: O grupo da requisição, conforme configurado no seu servidor NGINX.
    • hostname: O hostname do servidor que tratou a requisição.
    • upstream: O servidor upstream para o qual a requisição foi proxiada.
    • measurement: O tempo específico medido:
      • connect: O tempo que levou para a conexão ser estabelecida.
      • header: O tempo que levou para o cabeçalho da resposta ser enviado.
      • response: O tempo que levou para a resposta completa ser enviada.
  • nginx_upstream_status: Um counter que incrementa para cada requisição proxiada para um upstream. Marcado por:
    • status: O código de status da resposta.
    • group: O grupo da requisição, conforme configurado no seu servidor NGINX.
    • hostname: O hostname do servidor que tratou a requisição.
    • upstream: O servidor upstream para o qual a requisição foi proxiada.
Se a requisição proxiada de um upstream é armazenada em cache usando a diretiva proxy_cache do NGINX, a seguinte métrica também estará presente:
  • nginx_upstream_cache_status: Um counter que incrementa para cada requisição proxiada para um upstream com cache habilitado. Marcado por:
Se seu servidor NGINX foi compilado com o módulo NGINX ngx_http_stub_status_module habilitado (como fornecido pela maioria das distribuições Linux), a seguinte métrica também estará presente:
  • nginx_connections: O número de conexões que seu servidor NGINX está tratando atualmente. Marcado por:
    • hostname: O hostname do servidor que tratou a requisição.
    • measurement: O número específico de conexões medido:
      • active: O número de conexões ativas.
      • reading: O número de conexões onde a requisição está sendo lida.
      • writing: O número de conexões onde a resposta está sendo escrita.
      • waiting: O número de conexões ociosas.
A métrica de conexões sempre se refere ao hostname como um todo, não a um grupo específico. Seu valor é atualizado uma vez por minuto.
O hostname do servidor usado para as métricas não é o valor do hostname do NGINX, mas o valor do hostname configurado para a integração AppSignal ou agente standalone. Este valor é geralmente configurado automaticamente e pode ser sobrescrito pela opção de configuração hostname.

Suporte

Se você está enfrentando alguma dificuldade para configurar as métricas do NGINX da sua aplicação, entre em contato com o suporte, e ajudaremos você a fazer suas métricas fluírem.