从Sidekiq monitor readme,您可以使用以下方法保护当前rails服务器上的sidekiq Web仪表板路由(例如在端口3000上运行localhost):
在http://localhost:3000上进行经过身份验证的sidekiq信息中心路线的典型方法
# config/routes.rb
authenticate :user, lambda { |u| u.admin? } do
mount Sidekiq::Web => '/sidekiq'
end
我想使用另一个Rails应用程序来访问Sidekiq仪表板(而不是运行Sidekiq的Rails应用程序):
是否可以执行以下操作:
应用1 - 在http://localhost:3000 rails服务器中:(Sidekiq正在运行并收集数据的服务器)
# config/routes.rb
mount Sidekiq::Web => 'http://localhost:5000/sidekiq'
应用2 - 在http://localhost:5000 rails服务器(单独的服务器,我想捕获Sidekiq数据,并仍然保护对谁可以看到仪表板的访问权限)
# config/routes.rb
authenticate :user, lambda { |u| u.admin? } do
get '/sidekiq'
end
我认为这不是基于我对如何安装Rails引擎和Sidekiq仪表板的理解。我的另一个想法是,如果我想将端口3000上的服务器(Sidekiq统计数据正在运行并收集数据)传递给另一台服务器,我可以使用Sidekiq的API。
编辑:
是否也可以从App 2监控多个Rails应用程序? (localhost:5000服务器)
答案 0 :(得分:3)
您可以在应用2中保留挂载(假设您在该应用中认证):
function disableButtons() {
var $pages = $('.page li');
if($pages.eq(0).hasClass('active')) {
$('#prev').prop('disabled',true);
$('#next').prop('disabled',false);
} else if ($pages.eq($pages.size()-1).hasClass('active')) {
$('#next').prop('disabled',true);
$('#prev').prop('disabled',false);
} else {
// Make sure buttons get enabled
$('#prev').prop('disabled',false);
$('#next').prop('disabled',false);
}
}
并将# config/routes.rb
authenticate :user, lambda { |u| u.admin? } do
mount Sidekiq::Web => '/sidekiq'
end
环境变量指向目标应用的redis网址。 (此机制在您的运行时环境中有很大差异。)您还需要确保所有防火墙都允许此流量通过等。
安装确保监控界面在App 2中可用,并将其指向App 1中的Redis实例,以确保访问正确的统计信息。
答案 1 :(得分:-3)