require 'sinatra' require 'socket' require 'json' module USubscribers def self.uwsgi_get_stats(server) parts = server.split(':') if parts.length > 1 s = TCPSocket.open(parts[0], parts[1]) else s = UNIXSocket.open(server) end return JSON.parse(s.read()) end end template = < <%=@title%> <% for server in @servers.keys %>

SubscriptionServer: <%=server%>


<% for pool in @servers[server] %>

<%=pool['key']%> (<%=pool['hits']%> hits)

<% for node in pool['nodes'] %> <% end %>
nodeloadrequests last check fail count
<%=node['name']%><%=node['load']%><%=node['requests']%> <%=Time.at(node['last_check']).strftime("%d-%m-%Y %H:%M:%S")%> <%=node['failcnt']%>
<% end %>
<% end %> eof get '/' do @servers = {} for server in ENV['U_SERVERS'].split(',') stats = USubscribers::uwsgi_get_stats(server) if stats @servers[server] = stats['subscriptions'] end end @title = 'uWSGI subscriptions viewer' erb template end run Sinatra::Application