Sidekiq

Supported OS Linux Mac OS Windows

Présentation

Cette intégration permet de surveiller Sidekiq via Dogstatsd. Les métriques sont recueillies par le client dogstatsd-ruby de Datadog.

Remarque : seuls les utilisateurs de Sidekiq Pro (>= 3.6) ou Enterprise (>= 1.1.0) peuvent recueillir des métriques.

Configuration

Installation

L’intégration Sidekiq est incluse avec le package de l’Agent Datadog. Vous n’avez donc rien d’autre à installer sur votre serveur.

Configuration

  1. Installez la gem dogstatsd-ruby :

     gem install dogstatsd-ruby
    
  2. Pour activer la collecte de métriques de Sidekiq Pro, ajoutez le code suivant à votre initialiseur. Pour un déploiement conteneurisé, remplacez localhost par l’adresse du conteneur de votre Agent.

         require 'datadog/statsd' # gem 'dogstatsd-ruby'
    
         Sidekiq::Pro.dogstatsd = ->{ Datadog::Statsd.new('localhost', 8125, namespace:'sidekiq') }
    
         Sidekiq.configure_server do |config|
           config.server_middleware do |chain|
             require 'sidekiq/middleware/server/statsd'
             chain.add Sidekiq::Middleware::Server::Statsd
           end
         end
    

    Si vous utilisez Sidekiq Enterprise et que vous souhaitez recueillir des métriques historiques, ajoutez également cette ligne :

           Sidekiq.configure_server do |config|
             # history is captured every 30 seconds by default
             config.retain_history(30)
           end
    

    Consultez la documentation sur Sidekiq Pro et Enterprise pour en savoir plus, ainsi que la documentation Dogstatsd Ruby (en anglais) pour découvrir d’autres options de configuration.

  3. Modifiez le fichier de configuration principal de l’Agent Datadog datadog.yaml pour y ajouter les paramètres suivants :

    # dogstatsd_mapper_cache_size: 1000  # default to 1000
    dogstatsd_mapper_profiles:
      - name: sidekiq
        prefix: "sidekiq."
        mappings:
          - match: 'sidekiq\.sidekiq\.(.*)'
            match_type: "regex"
            name: "sidekiq.$1"
          - match: 'sidekiq\.jobs\.(.*)\.perform'
            name: "sidekiq.jobs.perform"
            match_type: "regex"
            tags:
              worker: "$1"
          - match: 'sidekiq\.jobs\.(.*)\.(count|success|failure)'
            name: "sidekiq.jobs.worker.$2"
            match_type: "regex"
            tags:
              worker: "$1"
    
  4. Redémarrez l’Agent.

Données collectées

Métriques

sidekiq.batches.complete
(count)
Count of when a batch is completed
sidekiq.batches.created
(count)
Count of when a batch is created
sidekiq.batches.success
(count)
Count of when a batch is successful
sidekiq.busy
(count)
Total Busy Size (Enterprise only)
Shown as job
sidekiq.dead
(count)
Total Dead Size (Enterprise only)
Shown as job
sidekiq.enqueued
(count)
Total size of all known queues (Enterprise only)
Shown as job
sidekiq.failed
(count)
Number of job executions which raised an error (Enterprise only)
Shown as job
sidekiq.jobs.count
(count)
Total count of Sidekiq jobs
Shown as job
sidekiq.jobs.expired
(count)
Count of when a job is expired
Shown as job
sidekiq.jobs.failure
(count)
Total count of failed Sidekiq jobs
Shown as job
sidekiq.jobs.perform.95percentile
(gauge)
95th percentile of amount of time spent in a worker
Shown as millisecond
sidekiq.jobs.perform.avg
(gauge)
Average amount of time spent in a worker
Shown as millisecond
sidekiq.jobs.perform.count
(gauge)
Count of the amount of time spent in a worker
Shown as millisecond
sidekiq.jobs.perform.max
(gauge)
Max amount of time spent in a worker
Shown as millisecond
sidekiq.jobs.perform.median
(gauge)
Median amount of time spent in a worker
Shown as millisecond
sidekiq.jobs.recovered.fetch
(count)
Count of when a job is recovered by super_fetch after process crash
Shown as job
sidekiq.jobs.recovered.push
(count)
Count of when a job is recovered by reliable_push after network outage
Shown as job
sidekiq.jobs.success
(count)
Total count of successful Sidekiq jobs
Shown as job
sidekiq.jobs.worker.count
(count)
Count of Sidekiq jobs
Shown as job
sidekiq.jobs.worker.failure
(count)
Count of failed Sidekiq jobs
Shown as job
sidekiq.jobs.worker.success
(count)
Count of successful Sidekiq jobs
Shown as job
sidekiq.processed
(count)
Number of job executions completed (success or failure) (Enterprise only)
Shown as job
sidekiq.retries
(count)
Total retries size (Enterprise only)
Shown as job
sidekiq.scheduled
(count)
Total Scheduled Size (Enterprise only)
Shown as job

L’intégration Sidekiq permet également la collecte de métriques custom. Consultez la documentation de Sidekiq (en anglais) pour trouver des idées de métriques custom.

Collecte de logs

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans le fichier datadog.yaml avec :

      logs_enabled: true
    
  2. Ajoutez ce bloc de configuration à votre fichier sidekiq.d/conf.yaml pour commencer à recueillir vos logs Sidekiq :

      logs:
        - type: file
          path:  /var/log/sidekiq.log
          source: sidekiq
          service: <SERVICE>
    

    Modifiez les valeurs des paramètres path et service et configurez-les pour votre environnement. Si vous ne parvenez pas à trouver vos logs, consultez la documentation de Sidekiq sur le fonctionnement des logs (en anglais).

  3. Redémarrez l’Agent.

Checks de service

Sidekiq n’inclut aucun check de service.

Événements

Sidekiq n’inclut aucun événement.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.