All Projects → davydovanton → Sidekiq Statistic

davydovanton / Sidekiq Statistic

Licence: mit
See statistic about your workers

Programming Languages

ruby
36898 projects - #4 most used programming language

Labels

Projects that are alternatives of or similar to Sidekiq Statistic

modern-rails-flash-messages
Modern Rails flash messages - Example App
Stars: ✭ 21 (-97.04%)
Mutual labels:  sidekiq
limestone-accounts
Boilerplate Rails 5.2 multitenant SaaS application with webpack and Docker integration. Billing is scoped to accounts.
Stars: ✭ 97 (-86.32%)
Mutual labels:  sidekiq
Goflow
A Golang based high performance, scalable and distributed workflow framework
Stars: ✭ 356 (-49.79%)
Mutual labels:  sidekiq
sidekiq-sequence
Sequential Sidekiq jobs for Rails
Stars: ✭ 38 (-94.64%)
Mutual labels:  sidekiq
sidekiq-merger
Merge Sidekiq jobs
Stars: ✭ 49 (-93.09%)
Mutual labels:  sidekiq
datadog-sidekiq
A Rust app to track Sidekiq enqueued & processed jobs in Datadog
Stars: ✭ 14 (-98.03%)
Mutual labels:  sidekiq
sidekiq alive
Liveness probe for Sidekiq in Kubernetes deployments
Stars: ✭ 142 (-79.97%)
Mutual labels:  sidekiq
Sidekiq Superworker
Directed acyclic graphs of Sidekiq jobs
Stars: ✭ 419 (-40.9%)
Mutual labels:  sidekiq
raygun4ruby
The Ruby & Ruby on Rails provider for Raygun
Stars: ✭ 37 (-94.78%)
Mutual labels:  sidekiq
Api.rss
RSS as RESTful. This service allows you to transform RSS feed into an awesome API.
Stars: ✭ 340 (-52.05%)
Mutual labels:  sidekiq
rails async migrations
Asynchronous support for ActiveRecord::Migration
Stars: ✭ 56 (-92.1%)
Mutual labels:  sidekiq
rocketjob
Ruby's missing background and batch processing system
Stars: ✭ 281 (-60.37%)
Mutual labels:  sidekiq
nokul
The Nokul Project
Stars: ✭ 47 (-93.37%)
Mutual labels:  sidekiq
sidekiq-prometheus
Public repository with Prometheus instrumentation for Sidekiq
Stars: ✭ 56 (-92.1%)
Mutual labels:  sidekiq
Active Job Style Guide
This Background Jobs style guide is a list of best practices working with Ruby background jobs.
Stars: ✭ 355 (-49.93%)
Mutual labels:  sidekiq
sidecloq
Recurring / Periodic / Scheduled / Cron job extension for Sidekiq
Stars: ✭ 81 (-88.58%)
Mutual labels:  sidekiq
rust-sidekiq
Rust Sidekiq Client
Stars: ✭ 24 (-96.61%)
Mutual labels:  sidekiq
Verk
A job processing system that just verks! 🧛‍
Stars: ✭ 666 (-6.06%)
Mutual labels:  sidekiq
Sidekiq Throttled
Concurrency and threshold throttling for Sidekiq.
Stars: ✭ 359 (-49.37%)
Mutual labels:  sidekiq
Rocketjob
Ruby's missing background and batch processing system
Stars: ✭ 258 (-63.61%)
Mutual labels:  sidekiq

Sidekiq statistic

Build Status Code Climate Gitter

Improved display of statistics for your sidekiq workers and jobs.

This gem work only with sidekiq version more than 3.3.4

Screenshots

Also you can check heroku application with rails app with this sidekiq plugin

Index page:

sidekiq-history_index

Worker page with table (per day):

sidekiq-history_worker

Worker page with log:

screenshot 2015-06-10 01 27 50

Installation

Add this line to your application's Gemfile:

gem 'sidekiq-statistic'

And then execute:

$ bundle

Usage

Open Statistic tab on your sidekiq page.

Not rails application

Read sidekiq documentation. After that add require 'sidekiq-statistic' to you config.ru. For example:

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

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

Configuration

Sidekiq statistic gem have log_file and last_log_lines options. log_file option lets you specify a custom path to sidekiq log file. By default this option equal log/sidekiq.log last_log lines option lets you specify a custom count of last logger file lines which will be displayed. By default this option equal 1000.

Sidekiq::Statistic.configure do |config|
  config.log_file = 'test/helpers/logfile.log'
  config.last_log_lines = 10_000
  config.max_timelist_length = 500_000
end

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].