L’agent New Relic Ruby peut échantillonner les statistiques de serveur à l’échelle du cluster de Puma à partir du processus maître Puma et les signaler comme Ruby/Puma/* métriques de tranche de temps.
Cette instrumentation est désactivée par défaut.
Exigences minimales
Exigence | Détails |
|---|---|
Version de l'agent Ruby | 10.7.0 ou version ultérieure |
Version Puma | 6.6.0 ou version ultérieure |
Mode Puma | Mode unique, ou mode cluster avec
activé. |
Activer l’instrumentation
Pour activer l’instrumentation Puma, définissez disable_puma_instrumentation sur false dans votre newrelic.yml:
disable_puma_instrumentation: falseL’agent échantillonne les statistiques du processus maître Puma, il ne collecte donc les métriques que là où l’agent est chargé dans le maître :
Mode unique (sans workers) : les métriques sont toujours collectées.
Mode cluster (un ou plusieurs workers) : les métriques sont collectées uniquement lorsque votre application est préchargée, de sorte que l'agent soit chargé dans le master plutôt que dans un worker. Ajoutez
preload_app!à votrepuma.rb:workers 2preload_app!Important
Sur Puma v6.x, vous devez définir
preload_app!explicitement. Puma v6.x n’applique pas sa valeur par défautpreload_appà partir du bloc de configuration, donc une application en cluster avecworkersdéfini mais sanspreload_app!explicite charge l’agent dans un worker et aucune métrique Puma n’est collectée. Lorsque cela se produit, l’agent enregistre un avertissement.
Ajuster le taux d’échantillonnage
Par défaut, l'agent échantillonne les statistiques Puma toutes les 60 secondes. Modifiez cela avec la configuration puma.sample_rate dans votre newrelic.yml:
puma.sample_rate: 30Ce qu’il capture
Toutes les métriques sont enregistrées sous l'espace de nommage Ruby/Puma/. Les valeurs par worker sont additionnées à travers le cluster.
métrique | Description |
|---|---|
| Nombre de requests en attente d’un thread disponible. |
| Nombre de threads de travail actuellement générés dans le pool de threads. |
| Capacité de requête de réserve : threads inactifs plus threads non encore générés mais toujours autorisés jusqu’à
. |
| Nombre maximum de threads configuré. |
| Nombre cumulé de requests traitées depuis le démarrage des workers. |
| Nombre de workers Puma. Signalé en mode cluster uniquement. |
Exemple de requête
Effectuez une requête sur ces métriques avec NRQL en utilisant le type Metric. Remplacez YOUR_APP_NAME par le nom de votre application.
Pour afficher toutes les métriques Puma à la fois :
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 agoPour afficher une seule métrique, filtrez par son nom :
FROM Metric SELECT average(newrelic.timeslice.value)WHERE appName = 'YOUR_APP_NAME' AND metricTimesliceName = 'Ruby/Puma/requests_count'TIMESERIES LIMIT MAX SINCE 1 hour agoComment ça marche
Lorsqu’il est activé, l’agent démarre un thread de rapport dans le processus maître Puma pour fournir ces métriques. Cela exécute une connexion d’agent supplémentaire dans le maître, aux côtés des connexions de vos workers Puma.
L’instrumentation enregistre uniquement des jauges et des compteurs entiers via NewRelic::Agent.record_metric. Il ne capture aucune donnée de request, de requête ou d’utilisateur.