我们可以通过its API获取有关sidekiq状态的一些信息。工人没有API方法。
我想知道某个班级正在运行的工人数量。例如,我有一个名为FooStreamer.rb
的类,它使用perform_async
方法执行。我想知道它目前运行的工人数量。
有什么想法吗?
答案 0 :(得分:4)
由Mike(sidekiq的创建者)通过以下提交解决:
https://github.com/mperham/sidekiq/commit/c606dd4fde8cdc795d2c750d211a74bf1b380217
答案 1 :(得分:1)
Sidekiq附带了Sinatra网络界面,您可以通过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
答案 2 :(得分:0)
您可以使用https://github.com/phstc/sidekiq-statsd并使用Graphite检查统计数据。