O agente Ruby da New Relic pode amostrar as estatísticas de servidor em todo o cluster do Puma a partir do processo mestre Puma e relatá-las como Ruby/Puma/* métricas de timeslice.
Esta instrumentação está desativada por padrão.
Requerimentos mínimos
Requerimento | Detalhes |
|---|---|
Versão do agente Ruby | 10.7.0 ou superior |
Versão do Puma | 6.6.0 ou superior |
Modo Puma | Modo único ou modo em cluster com
ativado. |
Habilitar a instrumentação
Para habilitar a instrumentação de Puma, defina disable_puma_instrumentation como false em seu newrelic.yml:
disable_puma_instrumentation: falseO agente coleta amostras de estatísticas do processo mestre do Puma, portanto, ele só coleta métricas onde o agente está carregado no mestre:
Modo único (sem workers): as métricas são sempre coletadas.
Modo clusterizado (um ou mais workers): as métricas são coletadas apenas quando seu aplicativo é pré-carregado, para que o agente seja carregado no master em vez de em um worker. Adicione
preload_app!ao seupuma.rb:workers 2preload_app!Importante
Em Puma v6.x, você deve definir
preload_app!explicitamente. Puma v6.x não aplica seu padrãopreload_appdo bloco de configuração, portanto, um aplicativo em cluster comworkersdefinido, mas sempreload_app!explícito, carrega o agente em um worker e nenhuma métrica do Puma é coletada. Quando isso acontece, o agente registra um aviso.
Ajuste a taxa de amostragem
Por padrão, o agente coleta amostras de estatísticas do Puma a cada 60 segundos. Altere isso com a configuração puma.sample_rate no seu newrelic.yml:
puma.sample_rate: 30O que ele captura
Todas as métricas são registradas no namespace Ruby/Puma/. Os valores por worker são somados em todo o cluster.
Métrica | Descrição |
|---|---|
| Número de requests aguardando uma thread disponível. |
| Número de threads de trabalho atualmente geradas no pool de threads. |
| Capacidade de requisição sobressalente: threads ociosas mais threads ainda não criadas, mas ainda permitidas até
. |
| Número máximo configurado de threads. |
| Número acumulado de requests processados desde que os workers foram iniciados. |
| Número de trabalhadores do Puma. Relatado apenas no modo clusterizado. |
Exemplo de consulta
Consulte essas métricas com NRQL usando o tipo Metric. Substitua YOUR_APP_NAME pelo nome do seu aplicativo.
Para visualizar todas as métricas do Puma de uma vez:
FROM Metric SELECT average(newrelic.timeslice.value)WHERE appName = 'YOUR_APP_NAME' AND metricTimesliceName LIKE 'Ruby/Puma/%'FACET metricTimesliceName TIMESERIES LIMIT MAX SINCE 1 hour agoPara visualizar uma única métrica, filtre pelo nome dela:
FROM Metric SELECT average(newrelic.timeslice.value)WHERE appName = 'YOUR_APP_NAME' AND metricTimesliceName = 'Ruby/Puma/requests_count'TIMESERIES LIMIT MAX SINCE 1 hour agoComo funciona
Quando ativado, o agente inicia uma thread de relatórios no processo mestre do Puma para entregar essas métricas. Isso executa uma conexão adicional do agente no mestre, junto com as conexões dos seus workers do Puma.
A instrumentação registra apenas medidores e contadores inteiros por meio de NewRelic::Agent.record_metric. Ela não captura nenhum dado de solicitação, consulta ou usuário.