我们可以通过它的 API获得一些关于 sidekiq 状态的信息。没有适用于工人的 API 方法。
我想知道某个班级正在运行多少工人。例如,我有一个名为的类FooStreamer.rb
,它是用perform_async
方法执行的。我想知道它目前正在运行多少个工人。
有任何想法吗?
我们可以通过它的 API获得一些关于 sidekiq 状态的信息。没有适用于工人的 API 方法。
我想知道某个班级正在运行多少工人。例如,我有一个名为的类FooStreamer.rb
,它是用perform_async
方法执行的。我想知道它目前正在运行多少个工人。
有任何想法吗?
由 Mike(sidekiq 的创建者)通过以下提交解决:
https://github.com/mperham/sidekiq/commit/c606dd4fde8cdc795d2c750d211a74bf1b380217
Sidekiq 带有一个 Sinatra Web 界面,您可以通过 mydomain.com/sidekiq 访问它。您只需要按照这些说明安装它(取决于您使用的是乘客还是独角兽)
https://github.com/mperham/sidekiq/wiki/Monitoring
没有我知道的 API,但您可以轻松地遍历存储 Sidekiq 信息的 Redis 密钥,以计算在特定队列上工作的工作人员数量
workers = redis.smembers("workers")
workers.each do |worker|
tokens = worker.split(":")
machine = tokens[0]
pid = tokens[1].split("-")[0]
key = "worker:" + pid
obj = redis.get(key)
#obj will contain information on what queue this worker is processing
end
您可以使用https://github.com/phstc/sidekiq-statsd并使用 Graphite 检查统计信息。