Naar hoofdinhoud gaan
Sidekiq is een eenvoudige en efficiënte background processor voor Ruby. Het is ook de processor die wij gebruiken om jobs in AppSignal te verwerken. Wanneer AppSignal Sidekiq-metrieken detecteert, maakt het een Magic Dashboard aan, waardoor u kerncijfers visueel kunt monitoren.

Sidekiq-monitoring voor Ruby on Rails-apps

De AppSignal Ruby-gem voegt automatisch een listener in de middleware-stack van de Sidekiq-server in als de Sidekiq-module aanwezig is wanneer u Rails gebruikt. Er zijn geen verdere acties nodig. De Sidekiq-integratie is compatibel met Active Job.

Sidekiq-monitoring voor Ruby-apps

Het toevoegen van deze configuratie is alleen nodig wanneer Sidekiq AppSignal niet automatisch laadt via het framework van de app, zoals Rails. Voeg dit snippet toe aan uw Sidekiq-configuratie met de juiste omgeving en naam:
require 'appsignal'

Sidekiq.configure_server do |config|
  config.on(:startup) do
    # Start AppSignal
    Appsignal.start
  end

  config.on(:shutdown) do
    # Stop the agent
    Appsignal.stop('Sidekiq shutdown')
  end
end

Performance-monitoring

Zodra AppSignal begint met het rapporteren van Sidekiq-metrieken, geeft AppSignal u prestatie-inzichten via:

Event-tijdlijn

perform_job.sidekiq-events worden weergegeven in de event-tijdlijn op de performance-incidentdetailpagina: Example event timeline

Foutopsporing

Volg excepties die optreden bij het uitvoeren van Sidekiq-jobs. Wanneer Sidekiq een probleem tegenkomt vóór of nadat een job is verwerkt, zoals het parsen van JSON uit Redis, zal het een fout opwerpen. Deze fout wordt gerapporteerd onder de actie SidekiqInternal in de background-namespace, omdat de jobcontext onbekend is op het moment dat de fout optreedt. Example sidekiq error

Fouten rapporteren bij job-discard

Stel de configuratieoptie sidekiq_report_errors in op discard om alleen fouten te rapporteren wanneer een job wordt verworpen. Wanneer een job wordt verworpen, zijn alle pogingen van de job uitgeput en wordt de job niet langer opnieuw geprobeerd. Lees de Sidekiq-documentatie voor meer informatie over Sidekiq-exceptieafhandeling en mislukte job-pogingen.
Bij gebruik van Sidekiq met het retry-systeem van Active Job, configureert u dit om fouten alleen bij discard te rapporteren, zodat fouten niet meerdere keren worden gerapporteerd.Nadat de Active Job-pogingen zijn uitgeput, neemt het Sidekiq-retry-systeem het over. Schakel het Sidekiq-retry-systeem uit als dit ongewenst gedrag is.

Incident-groepering

Jobnamen worden automatisch gedetecteerd op basis van de naam van de Sidekiq-workerklasse en voorzien van de methodenaam perform, wat resulteert in iets als: MyWorker#perform. Example performance incident grouping

Sample-prestaties

Met sample-overzichten kunt u de prestaties van Sidekiq snel beoordelen en prestatieproblemen opsporen zonder diep in de details te hoeven duiken. Example Sidekiq performance sample

Magic dashboard

Wanneer AppSignal Sidekiq-metrieken ontvangt, wordt er een Sidekiq magic dashboard aangemaakt, beschikbaar in de dashboardsectie van de AppSignal-app. Het Sidekiq magic dashboard bevat de volgende grafieken:
GrafiekMetriekenTags
Connection countsidekiq_connection_counthostname
Duration per workertransaction_duration
  • action
  • namespace
  • Job status per queuesidekiq_queue_job_count
  • status
  • queue
  • Overall job statussidekiq_job_count
  • status
  • hostname
  • Queue latencysidekiq_queue_latency
  • hostname
  • queue
  • Queue lengthsidekiq_queue_length
  • hostname
  • queue
  • Redis memory usage
  • sidekiq_memory_usage
  • sidekiq_memory_usage_rss
  • hostname
    Throughput per workertransaction_duration
  • action
  • namespace
  • Worker/processes count
  • sidekiq_worker_count
  • sidekiq_process_count
  • hostname
    Tags geven u een contextueel overzicht van Sidekiq-prestatie-informatie. AppSignal rapporteert de volgende tags voor Sidekiq-jobs:
    NaamBeschrijving
    actionDe naam van de actie waarvan de metriek is gerapporteerd (bijv. YourWorker#perform).
    hostnameDe naam van de host waarvan de metriek is gerapporteerd.
    namespaceDe naam van de namespace waarvan de metriek is gerapporteerd.
    queueBenoemde wachtrij waarin jobs worden verwerkt, bijv. default of mailer.
    statusStatus van elke job, ofwel processed of failed.
    Jobs die failed zijn, worden ook als processed meegeteld.
    Elke tag wordt op de grafiek weergegeven met een gekleurde lijn: Example Sidekiq dashboard

    Connection count-grafiek

    De Connection count-grafiek toont het aantal Sidekiq-verbindingen per host. U kunt de Connection count-grafiek gebruiken om Sidekiq-verbindingen per host te monitoren, verbindingstrends en bottlenecks op te sporen en bronnen te optimaliseren.

    Duration per worker-grafiek

    De Duration per worker-grafiek toont hoe lang het duurde voordat jobs werden uitgevoerd, gegroepeerd op namespace en actie. U kunt de Duration per worker-grafiek gebruiken om de prestaties van workers per actie en namespace te monitoren, waardoor u een helikopterview van Sidekiq-prestaties krijgt en snel pieken in de duur kunt identificeren en onderzoeken.

    Job status per queue-grafiek

    De grafiek job-status per queue met een prioriteit toont het aantal jobs dat is uitgevoerd, gegroepeerd op hun resulterende status, per wachtrij waarin ze in de wachtrij zijn geplaatst. U kunt de Job status per queue-grafiek gebruiken om job-foutaantallen en -prestaties op basis van wachtrij te monitoren, bottlenecks te identificeren en uw background jobs te optimaliseren voor schaalbaarheid.

    Overall job status-grafiek

    De grafiek overall job status toont het aantal verwachte Sidekiq-jobs per status en namespace. U kunt de Overall job status-grafiek gebruiken om mislukte jobs te monitoren en de verdeling van jobs over namespaces te volgen.

    Queue latency-grafiek

    De Queue latency-grafiek toont de latency die de wachtrij ondervond op het meetmoment. Sidekiq berekent dit door het tijdstip waarop de laatste job in de wachtrij werd geplaatst af te trekken van het meetmoment. Deze waarde wordt gerapporteerd in milliseconden. U kunt de Queue latency-grafiek gebruiken om vertragingen bij het verwerken van jobs op te sporen, congestie in de wachtrij te detecteren en te begrijpen hoe snel background jobs starten.

    Queue length-grafiek

    De Queue length-grafiek toont de lengte van Sidekiq-wachtrijen per wachtrij en namespace. U kunt de Queue length-grafiek gebruiken om de prestaties van de wachtrij te monitoren en Sidekiq-bottlenecks op te sporen en op te lossen.

    Redis memory usage-grafiek

    De Redis memory usage-grafiek toont:
    • Het Virtual Memory Size-geheugengebruik van Redis (sidekiq_memory_usage_rss)
    • Het Resident Set Size-geheugengebruik van Redis (sidekiq_memory_usage_rss)
    U kunt de Redis memory usage-grafiek gebruiken om het geheugengebruik van Sidekiq te monitoren, het resourcebeheer te verbeteren en geheugenintensieve jobs te optimaliseren.

    Throughput per worker-grafiek

    De Throughput per worker-grafiek toont het aantal jobs dat is uitgevoerd, gegroepeerd op hostname. U kunt deze grafiek gebruiken om de prestaties van workers te monitoren, gegroepeerd op de klasse die de job definieert.

    Worker/processes count-grafiek

    De Worker/processes count-grafiek toont het aantal Sidekiq-workers en uitgevoerde processen. U kunt de Worker/processes count-grafiek gebruiken om de werkverdeling te beheren, de toewijzing van bronnen te optimaliseren en prestatieproblemen te identificeren.

    Hostname-configuratie

    AppSignal probeert de hostname van het Redis-exemplaar dat uw Sidekiq-exemplaar gebruikt om zijn wachtrijen op te slaan, te detecteren. Als de detectie niet nauwkeurig is, is het mogelijk om de hostname-configuratie aan te passen door de standaard Sidekiq-probe te overschrijven. Eerst moet u de standaard Sidekiq-probe overschrijven door een nieuwe probe met dezelfde naam (:sidekiq) te registreren. Deze probe heeft een configuratie-hash nodig, inclusief de :hostname-sleutel, met de nieuwe hostname-waarde. Door de :hostname-configuratieoptie te specificeren in de Sidekiq minutely-probe, worden de metrieken getagd met de opgegeven hostname-waarde. De waarde van de :hostname-configuratieoptie wordt niet gebruikt om een Redis- of Sidekiq-verbinding tot stand te brengen. Bijvoorbeeld:
    # config/initializers/appsignal.rb or a file that's loaded on boot
    
    # Ruby gem 2.11.0 and newer
    Appsignal::Minutely.probes.register(
      :sidekiq, # Use the same key as the default Sidekiq probe to override it
      Appsignal::Probes::SidekiqProbe.new(:hostname => "my_sidekiq_hostname")
    )
    
    # Ruby gem 2.10.x and older
    Appsignal::Minutely.probes.register(
      :sidekiq, # Use the same key as the default Sidekiq probe to override it
      Appsignal::Hooks::SidekiqProbe.new(:hostname => "my_sidekiq_hostname")
    )
    
    In versie 2.11.0 van de Ruby-gem is de constante SidekiqProbe verplaatst naar zijn eigen module. Bij het aanroepen van de constante wordt een waarschuwing afgedrukt en gelogd. Werk bij naar de nieuwe constantenaam Appsignal::Probes::SidekiqProbe om de waarschuwing te verwijderen.