Skip to main content
O Puma foi construído para velocidade e paralelismo. O Puma é uma pequena biblioteca que fornece um servidor HTTP 1.1 rápido e concorrente para aplicações web Ruby. A gem AppSignal Ruby insere automaticamente um listener no servidor Puma; nenhuma configuração manual é necessária.

Plugin de métricas do Puma

O plugin do AppSignal para o Puma irá coletar métricas sobre como o Puma está operando. Quando o AppSignal detecta métricas do Puma, ele criará um Intelligence dashboard, permitindo que você monitore métricas principais visualmente. Para habilitar a coleta de métricas, adicione o plugin AppSignal à sua configuração do Puma:
O servidor StatsD incluído no AppSignal Agent deve estar ativo para que o plugin de métricas do Puma funcione. Certifique-se de que a opção de configuração enable_statsd não esteja definida como false.
O Puma pode exigir configuração adicional para carregar os secrets da sua aplicação, que podem ser necessários para o AppSignal iniciar.

Uso com prune_bundler

Se o seu arquivo puma.rb inclui prune_bundler, você deve adicionar o AppSignal como uma dependência de runtime.
Para usar o Puma com prune_bundler, é necessária a versão 4.2.0 ou superior do Puma.

Uso com preload_app!

Se o seu arquivo puma.rb inclui preload_app!, alguma configuração é necessária para reportar corretamente as métricas dos minutely probes. Quando preload_app! é true, os minutely probes são executados no processo primary do Puma. No processo primary, os probes não conseguem acessar os mesmos dados que o app rodando nos workers do Puma pode, reportando dados imprecisos ou nenhum dado. No arquivo de configuração puma.rb do Puma, pare os minutely probes do AppSignal no callback before_fork para parar os minutely probes no processo principal do Puma. Em seguida, inicie os minutely probes no processo worker a partir do callback on_worker_boot.

Secrets

Se você usa uma biblioteca como Rails ou dotenv para gerenciar os secrets do seu app e configurar o AppSignal, você precisará carregá-los na sua configuração do Puma. O AppSignal executa um processo em background no processo principal do Puma quando se usa o plugin do Puma. O resto do seu app não é carregado por padrão no processo principal do Puma (a menos que você use preload_app!, que pode não ser adequado para o seu app). Sem configuração adicional, a config do AppSignal falhará ao carregar, e o AppSignal não iniciará. Nenhum hook “on boot” está disponível no Puma para carregar sua configuração extra no processo principal. Para carregar sua configuração, adicione-a à raiz do seu arquivo de configuração puma.rb, como no exemplo abaixo.

Hostname

Este probe escuta a opção de configuração APPSIGNAL_HOSTNAME da variável de ambiente para a tag hostname adicionada a todas as suas métricas. Se nenhuma for definida, ele tentará detectá-la automaticamente. Use a variável de ambiente do sistema APPSIGNAL_HOSTNAME para definir o hostname caso queira alterar o hostname detectado.

Porta do StatsD

Este probe escuta a opção de configuração APPSIGNAL_STATSD_PORT da variável de ambiente para a configuração de portas StatsD não padrão. Se a variável de ambiente não estiver definida, o padrão é 8125. Para o processo principal do Puma, é necessário usar a variável de ambiente; ele não lerá a configuração de arquivo do AppSignal.

Phased restart

Phased restarts do Puma não reiniciam o processo principal do Puma, o que significa que o processo em background do AppSignal também não é reiniciado em um phased restart. Se você fez alterações na config do AppSignal, será necessário reiniciar completamente seu app Puma depois para que a mudança de configuração tenha efeito.

Intelligence dashboard

Quando o AppSignal recebe métricas do Puma, ele criará um Intelligence dashboard do Puma, disponível na seção de dashboard do app AppSignal. O Intelligence dashboard do Puma terá os seguintes gráficos: As tags fornecem um detalhamento contextual das informações de performance do Active job. O AppSignal reporta as seguintes tags para jobs do Active Job: Os gráficos permitem que você monitore as métricas da sua aplicação visualmente. Você pode adicionar marcadores aos gráficos e clicar em qualquer ponto de dados para obter insights sobre o estado da sua aplicação naquele momento. Exemplo de Intelligence dashboard do Puma

Gráfico Connection backlog

O gráfico Connection backlog mostra a quantidade de conexões de entrada para o servidor que estão aguardando para serem atendidas na fila de backlog do servidor. Você pode usar o gráfico Connection backlog para monitorar quantas requisições estão aguardando para serem tratadas e identificar gargalos do Puma.

Gráfico Pool capacity

O gráfico Pool capacity mostra a quantidade de threads do Puma disponíveis para receber requisições, incluindo threads do Puma que ainda não foram criadas. Você pode usar o gráfico Pool capacity para monitorar a disponibilidade das threads do Puma e otimizar os workers.

Gráfico Threads

O gráfico Threads mostra informações sobre as threads criadas pelo Puma para atender requisições web, agregadas em todos os workers do Puma. Para atender requisições web, o Puma criará mais threads quando necessário. O gráfico mostrará a quantidade de threads em execução em comparação ao número máximo disponível de threads. Você pode usar o gráfico Threads para monitorar a demanda e a oferta de threads do Puma e otimizar os workers.

Gráfico Worker info

O gráfico Worker info mostra quantos workers do Puma estão funcionando e qual versão do seu site eles estão usando. A linha count mostra quantos workers estão funcionando no total, enquanto as linhas booted e old mostram quantos workers estão usando a nova versão e quantos workers estão usando a versão antiga da sua aplicação. Você pode usar o gráfico worker info para monitorar o status e a performance dos seus workers do Puma e ver quantos workers estão rodando em uma configuração desatualizada da sua aplicação.