Puma is gebouwd voor snelheid en parallellisme. Puma is een kleine bibliotheek die een snelle en gelijktijdige HTTP 1.1-server biedt voor Ruby-webapplicaties.
De AppSignal Ruby-gem voegt automatisch een listener in de Puma-server in; er is geen handmatige configuratie nodig.
Puma-metrieken-plugin
De AppSignal Puma-plugin verzamelt metrieken over hoe Puma functioneert. Wanneer AppSignal Puma-metrieken detecteert, maakt het een Magic Dashboard aan, waardoor u kerncijfers visueel kunt monitoren.
Om de metriekverzameling in te schakelen, voegt u de AppSignal-plugin toe aan uw Puma-configuratie:
# puma.rb (or config/puma.rb)
plugin :appsignal
De StatsD-server die bij de AppSignal Agent wordt geleverd, moet actief zijn
om de Puma-metrieken-plugin te laten werken. Zorg ervoor dat de
enable_statsd-configuratieoptie
niet op false staat.
Puma kan extra configuratie nodig hebben om de secrets van uw applicatie te laden, die nodig kunnen zijn om AppSignal te kunnen starten.
Gebruik met prune_bundler
Als uw puma.rb-bestand prune_bundler bevat, moet u AppSignal als runtime-afhankelijkheid toevoegen.
Om Puma met prune_bundler te gebruiken, is Puma versie 4.2.0 of hoger
vereist.
# puma.rb (or config/puma.rb)
prune_bundler
plugin :appsignal
extra_runtime_dependencies ["appsignal"]
Gebruik met preload_app!
Als uw puma.rb-bestand preload_app! bevat, is enige configuratie nodig om metrieken van minutely probes correct te rapporteren. Wanneer preload_app! true is, worden de minutely probes uitgevoerd in het Puma-hoofdproces. In het hoofdproces hebben de probes geen toegang tot dezelfde gegevens als de app in de Puma-workers, waardoor er onnauwkeurige of geen gegevens worden gerapporteerd.
In het puma.rb-configuratiebestand van Puma stopt u de AppSignal minutely probes in de before_fork-callback om de minutely probes in het Puma-hoofdproces te stoppen. Start vervolgens de minutely probes in het workerproces vanuit de on_worker_boot-callback.
# puma.rb or config/puma.rb
# When preload_app! is set
preload_app!
# Add this before_fork callback to stop the minutely probes in the Puma main process
before_fork do
Appsignal::Probes.stop
end
# Add this on_worker_boot callback to start the minutely probes in the Puma worker processes
on_worker_boot do
Appsignal::Probes.start
end
Secrets
Als u een bibliotheek zoals Rails of dotenv gebruikt om de secrets van uw app te beheren en AppSignal te configureren, moet u deze in uw Puma-configuratie laden.
AppSignal voert een achtergrondproces uit in het hoofdproces van Puma bij gebruik van de Puma-plugin. De rest van uw app wordt standaard niet geladen in het hoofdproces van Puma (tenzij u preload_app! gebruikt, wat mogelijk niet geschikt is voor uw app). Zonder aanvullende configuratie zal de AppSignal-config niet laden, en zal AppSignal niet starten.
Er is geen “on boot”-hook beschikbaar in Puma om uw extra config in het hoofdproces te laden. Om uw configuratie te laden, voegt u deze toe aan de root van uw puma.rb-configuratiebestand, zoals in het onderstaande voorbeeld.
# puma.rb (or config/puma.rb)
plugin :appsignal # Add this plugin
# Rails secrets
# Add this line when using Rails secrets in your `config/appsignal.rb` or `config/appsignal.yml` file.
require "rails"
# Add this section when using dotenv for secrets management
require "dotenv"
Dotenv.load
# or for Rails apps:
require "dotenv/load"
Dotenv.load
# Rest of your Puma config...
Hostname
Deze probe luistert naar de APPSIGNAL_HOSTNAME-configuratieoptie vanuit de
omgevingsvariabele voor de hostname-tag
die aan al zijn metrieken wordt toegevoegd. Als er geen is ingesteld, probeert deze
deze automatisch te detecteren. Gebruik de systeemomgevingsvariabele
APPSIGNAL_HOSTNAME om de hostname in te stellen als u de gedetecteerde hostname
wilt wijzigen.
StatsD-poort
Deze probe luistert naar de APPSIGNAL_STATSD_PORT-configuratieoptie vanuit de omgevingsvariabele voor de configuratie van niet-standaard StatsD-poorten. Als de omgevingsvariabele niet is ingesteld, is de standaardwaarde 8125. Voor het Puma-hoofdproces is het verplicht om de omgevingsvariabele te gebruiken; het zal de AppSignal-bestandsconfiguratie niet inlezen.
Phased restart
Phased restarts van Puma
herstarten het Puma-hoofdproces niet, wat betekent dat het AppSignal-achtergrondproces
ook niet wordt herstart bij een phased restart. Als u wijzigingen in de
AppSignal-config heeft aangebracht, moet u uw Puma-app daarna volledig herstarten om
de configuratiewijziging van kracht te laten worden.
# After changing the AppSignal config, restart using:
pumactl restart
# instead of: pumactl phased-restart
Magic dashboard
Wanneer AppSignal Puma-metrieken ontvangt, wordt er een Puma magic dashboard aangemaakt, beschikbaar in de dashboardsectie van de AppSignal-app.
Het Puma magic dashboard bevat de volgende grafieken:
| Grafiek | Metrieken | Tags |
|---|
| Connection backlog | puma_connection_backlog | hostname |
| Pool capacity | puma_pool_capacity | hostname |
| Threads | puma_threads | maxrunning |
| Worker info | puma_workers | bootedcountold |
Tags geven u een contextueel overzicht van prestatie-informatie van Active job. AppSignal rapporteert de volgende tags voor Active Job-jobs:
| Naam | Beschrijving |
|---|
booted | Totaal aantal momenteel gestarte workers voor deze server. |
count | Aantal momenteel actieve threads voor deze server. |
hostname | Naam van de host waarvan de metriek is gerapporteerd. |
max | Maximaal aantal geconfigureerde threads voor deze server. |
old | Aantal workers dat op het meetmoment de vorige configuratie/code van de server draait. Puma zal deze uitfaseren naarmate er nieuwe workers worden gestart. |
running | Aantal momenteel actieve threads voor deze server |
Met grafieken kunt u de metrieken van uw applicatie visueel monitoren. U kunt markeringen aan grafieken toevoegen en op elk gegevenspunt klikken om inzicht te krijgen in de staat van uw applicatie op dat moment.
Connection backlog-grafiek
De Connection backlog-grafiek toont het aantal inkomende verbindingen met de server dat in de backlog-wachtrij van de server wacht om bediend te worden.
U kunt de Connection backlog-grafiek gebruiken om te monitoren hoeveel requests wachten om afgehandeld te worden en Puma-bottlenecks op te sporen.
Pool capacity-grafiek
De Pool capacity-grafiek toont het aantal Puma-threads dat beschikbaar is om requests te ontvangen, inclusief Puma-threads die nog gespawned moeten worden.
U kunt de Pool capacity-grafiek gebruiken om de beschikbaarheid van Puma-threads te monitoren en workers te optimaliseren.
Threads-grafiek
De Threads-grafiek toont informatie over de threads die door Puma worden gespawned om web requests te verwerken, geaggregeerd over alle Puma-workers. Om web requests te verwerken, spawn Puma meer threads wanneer nodig. De grafiek toont het aantal actieve threads ten opzichte van het maximaal beschikbare aantal threads.
U kunt de Threads-grafiek gebruiken om de vraag en aanbod van Puma-threads te monitoren en workers te optimaliseren.
Worker info-grafiek
De Worker info-grafiek toont hoeveel Puma-workers er actief zijn en welke versie van uw website ze gebruiken. De count-lijn toont hoeveel workers er in totaal actief zijn, terwijl de booted- en old-lijnen tonen hoeveel workers de nieuwe versie en hoeveel workers de oude versie van uw applicatie gebruiken.
U kunt de Worker info-grafiek gebruiken om de status en prestaties van uw Puma-workers te monitoren en te zien hoeveel workers er op een verouderde configuratie van uw applicatie draaien.