Skip to content

Pro Web UI

Mike Perham edited this page Sep 27, 2023 · 15 revisions

See the Monitoring page for basics on setting up Sidekiq"s Web UI. To activate the Sidekiq Pro web features, you must require it in your config/routes.rb:

require "sidekiq/pro/web"

Your::Application.routes.draw do
  mount Sidekiq::Web => "/sidekiq"
end

Sharding

Sidekiq Pro can monitor multiple Sidekiq shards in a single web process. You must create a different connection pool for each shard and mount a different copy of the Web UI for each shard:

require "sidekiq-pro"
require "sidekiq/pro/web"

# Sidekiq Pro 4.x and 5.x
POOL1 = ConnectionPool.new { Redis.new(:url => "redis://localhost:6379/0") }
POOL2 = ConnectionPool.new { Redis.new(:url => "redis://localhost:6378/0") }

# Sidekiq Pro 7.x
POOL1 = Sidekiq::RedisConnection.create(url: "redis://localhost:6379/1")
POOL2 = Sidekiq::RedisConnection.create(url: "redis://localhost:6379/2")

mount Sidekiq::Web => "/sidekiq" # default
mount Sidekiq::Pro::Web.with(redis_pool: POOL1), at: "/sidekiq1", as: "sidekiq1" # shard1
mount Sidekiq::Pro::Web.with(redis_pool: POOL2), at: "/sidekiq2", as: "sidekiq2" # shard2

Rack example, in app.ru, then run with bundle exec rackup app.ru:

require "sidekiq-pro"
require "sidekiq/pro/web"
require "securerandom"
require "rack/urlmap"
require "pry"

# 4.x and 5.x
POOL1 = ConnectionPool.new(size: 5, timeout: 5) { Redis.new(url: "redis://redis_2:6379/0") }
POOL2 = ConnectionPool.new(size: 5, timeout: 5) { Redis.new(url: "redis://redis_3:6379/0") }

# 7.x
POOL1 = Sidekiq::RedisConnection.create(url: "redis://redis_2:6379/0")
POOL2 = Sidekiq::RedisConnection.create(url: "redis://redis_3:6379/0")

use Rack::Session::Cookie, secret: SecureRandom.hex(32), same_site: true, max_age: 86_400
run Rack::URLMap.new(
  "/sidekiq" => Sidekiq::Web,
  "/sidekiq1" => Sidekiq::Pro::Web.with(redis_pool: POOL1),
  "/sidekiq2" => Sidekiq::Pro::Web.with(redis_pool: POOL2),
)
Clone this wiki locally