Naar hoofdinhoud gaan
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:
GrafiekMetriekenTags
Connection backlogpuma_connection_backloghostname
Pool capacitypuma_pool_capacityhostname
Threadspuma_threads
  • max
  • running
  • Worker infopuma_workers
  • booted
  • count
  • old
  • Tags geven u een contextueel overzicht van prestatie-informatie van Active job. AppSignal rapporteert de volgende tags voor Active Job-jobs:
    NaamBeschrijving
    bootedTotaal aantal momenteel gestarte workers voor deze server.
    countAantal momenteel actieve threads voor deze server.
    hostnameNaam van de host waarvan de metriek is gerapporteerd.
    maxMaximaal aantal geconfigureerde threads voor deze server.
    oldAantal workers dat op het meetmoment de vorige configuratie/code van de server draait. Puma zal deze uitfaseren naarmate er nieuwe workers worden gestart.
    runningAantal 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. Example Puma magic dashboard

    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.