0.31
No release in over 3 years
Low commit activity in last 3 years
See history about your workers (GSoC project)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 5.0.7, ~> 5.0
~> 0
~> 0

Runtime

>= 3.3.4, ~> 3.3
 Project Readme

Sidekiq::Statistic

Build Status Code Climate Gitter

Improved display of statistics for your Sidekiq workers and jobs.

Screenshots

Index page:

sidekiq-history_index

Worker page with table (per day):

sidekiq-history_worker

Installation

Add this line to your application's Gemfile:

gem 'sidekiq-statistic'

And then execute:

$ bundle

Usage

Using Rails

Read Sidekiq documentation to configure Sidekiq Web UI in your routes.rb.

When Sidekiq Web UI is active you're going be able to see the option Statistic on the menu.

Using a standalone application

Read Sidekiq documentation to configure Sidekiq in your Rack server.

Next add require 'sidekiq-statistic' to your config.ru.

# config.ru
require 'sidekiq/web'
require 'sidekiq-statistic'

use Rack::Session::Cookie, secret: 'some unique secret string here'
run Sidekiq::Web

Configuration

The Statistic configuration is an initializer that GEM uses to configure itself. The option max_timelist_length is used to avoid memory leak, in practice, whenever the cache size reaches that number, the GEM is going to remove 25% of the key values, avoiding inflating memory.

Sidekiq::Statistic.configure do |config|
  config.max_timelist_length = 250_000
end

Supported Sidekiq versions

Statistic support the following Sidekiq versions:

  • Sidekiq 6.
  • Sidekiq 5.
  • Sidekiq 4.
  • Sidekiq 3.5.

JSON API

/api/statistic.json

Returns statistic for each worker.

Params:

  • dateFrom - Date start (format: yyyy-mm-dd)
  • dateTo - Date end (format: yyyy-mm-dd)

Example:

$ curl http://example.com/sidekiq/api/statistic.json?dateFrom=2015-07-30&dateTo=2015-07-31

# =>
  {
    "workers": [
      {
        "name": "Worker",
        "last_job_status": "passed",
        "number_of_calls": {
          "success": 1,
          "failure": 0,
          "total": 1
        },
        "runtime": {
          "last": "2015-07-31 10:42:13 UTC",
          "max": 4.002,
          "min": 4.002,
          "average": 4.002,
          "total": 4.002
        }
      },

      ...
    ]
  }

/api/statistic/:worker_name.json

Returns worker statistic for each day in range.

Params:

  • dateFrom - Date start (format: yyyy-mm-dd)
  • dateTo - Date end (format: yyyy-mm-dd)

Example:

$ curl http://example.com/sidekiq/api/statistic/Worker.json?dateFrom=2015-07-30&dateTo=2015-07-31

# =>
{
  "days": [
    {
      "date": "2015-07-31",
      "failure": 0,
      "success": 1,
      "total": 1,
      "last_job_status": "passed",
      "runtime": {
        "last": null,
        "max": 0,
        "min": 0,
        "average": 0,
        "total": 0
      }
    },

    ...
  ]
}

Update statistic inside middleware

You can update your worker statistic inside middleware. For this you should to update sidekiq:statistic redis hash. This hash has the following structure:

  • sidekiq:statistic - redis hash with all statistic
    • yyyy-mm-dd:WorkerName:passed - count of passed jobs for Worker name on yyyy-mm-dd
    • yyyy-mm-dd:WorkerName:failed - count of failed jobs for Worker name on yyyy-mm-dd
    • yyyy-mm-dd:WorkerName:last_job_status - string with status (passed or failed) for last job
    • yyyy-mm-dd:WorkerName:last_time - date of last job performing
    • yyyy-mm-dd:WorkerName:queue - name of job queue (default by default)

For time information you should push the runtime value to yyyy-mm-dd:WorkerName:timeslist redis list.

How it works

Big image 'how it works'

how-it-works

Contributing

  1. Fork it ( https://github.com/davydovanton/sidekiq-statistic/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request