Improved display of statistics for your sidekiq workers and jobs.
This gem work only with sidekiq version more than 3.3.4
Also you can check heroku application with rails app with this sidekiq plugin
Add this line to your application's Gemfile:
gem 'sidekiq-statistic'
And then execute:
$ bundle
Open Statistic tab on your sidekiq page.
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'
Sidekiq::Web.instance_eval { @middleware.reverse! } # Last added, First Run
run Sidekiq::Web
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.configuration do |config|
config.log_file = 'test/helpers/logfile.log'
config.last_log_lines = 10_000
end
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
}
},
...
]
}
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
}
},
...
]
}
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 statisticyyyy-mm-dd:WorkerName:passed
- count of passed jobs for Worker name on yyyy-mm-ddyyyy-mm-dd:WorkerName:failed
- count of failed jobs for Worker name on yyyy-mm-ddyyyy-mm-dd:WorkerName:failed
- count of failed jobs for Worker name on yyyy-mm-ddyyyy-mm-dd:WorkerName:last_job_status
- string with status (passed
orfailed
) for last jobyyyy-mm-dd:WorkerName:last_time
- date of lact job performingyyyy-mm-dd:WorkerName:queue
- name of job queue (defauld
by default)
For time information you should push the runtime value to yyyy-mm-dd:WorkerName:timeslist
redis list.
Big image 'how it works'
![how-it-works](https://cloud.githubusercontent.com/assets/1147484/8802272/fc0a1302-2fc8-11e5-86a5-817409259338.png)- Fork it ( https://github.com/davydovanton/sidekiq-statistic/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request