nutcracker-web 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +4 -13
  4. data/Rakefile +33 -7
  5. data/lib/nutcracker/web.rb +6 -6
  6. data/lib/nutcracker/web/app.rb +10 -8
  7. data/lib/nutcracker/web/version.rb +1 -1
  8. data/{assets/stylesheets/bootstrap.css → public/assets/application.css} +1136 -0
  9. data/public/assets/application.js +263 -0
  10. metadata +59 -32
  11. data/assets/javascripts/application.js +0 -10
  12. data/assets/javascripts/collections/clusters.js.coffee +0 -4
  13. data/assets/javascripts/collections/nodes.js.coffee +0 -19
  14. data/assets/javascripts/models/cluster.js.coffee +0 -16
  15. data/assets/javascripts/models/node.js.coffee +0 -14
  16. data/assets/javascripts/models/overview.js.coffee +0 -27
  17. data/assets/javascripts/nutcracker.js.coffee +0 -20
  18. data/assets/javascripts/routers/nutcracker_router.js.coffee +0 -29
  19. data/assets/javascripts/utils/region_manager.js.coffee +0 -12
  20. data/assets/javascripts/utils/underscore_ext.js.coffee +0 -6
  21. data/assets/javascripts/vendor/backbone.js +0 -1571
  22. data/assets/javascripts/vendor/bootstrap.js +0 -2276
  23. data/assets/javascripts/vendor/google_chart.js.coffee +0 -124
  24. data/assets/javascripts/vendor/humanize.js +0 -459
  25. data/assets/javascripts/vendor/jquery.js +0 -8842
  26. data/assets/javascripts/vendor/underscore.js +0 -1227
  27. data/assets/javascripts/views/cluster.js.coffee +0 -58
  28. data/assets/javascripts/views/config.js.coffee +0 -6
  29. data/assets/javascripts/views/footer.js.coffee +0 -8
  30. data/assets/javascripts/views/navbar.js.coffee +0 -28
  31. data/assets/javascripts/views/node.js.coffee +0 -54
  32. data/assets/javascripts/views/overview.js.coffee +0 -6
  33. data/assets/stylesheets/application.css +0 -24
  34. data/assets/stylesheets/bootstrap-responsive.css +0 -1109
  35. data/assets/templates/cluster.jst.eco +0 -87
  36. data/assets/templates/config.jst.eco +0 -15
  37. data/assets/templates/footer.jst.eco +0 -1
  38. data/assets/templates/navbar.jst.eco +0 -55
  39. data/assets/templates/node.jst.eco +0 -73
  40. data/assets/templates/overview.jst.eco +0 -32
@@ -1,87 +0,0 @@
1
- <h3 align=center> <%= @model.get("name") %> </h3>
2
-
3
- <ul class="pager fixed">
4
- <%if @prevCluster: %>
5
- <li class="previous nosel"><a class="nextPrevButton" href="<%= @prevCluster?.get("routeURL")%>">&larr; Prev</a></li>
6
- <% else: %>
7
- <li class="previous disabled nosel"><a>&larr; Prev</a></li>
8
- <%end%>
9
-
10
- <%if @nextCluster: %>
11
- <li class="next nosel"><a class="nextPrevButton" href="<%= @nextCluster?.get("routeURL")%>">Next &rarr;</a></li>
12
- <% else: %>
13
- <li class="next disabled nosel"><a>Next &rarr;</a></li>
14
- <%end%>
15
- </li>
16
- </ul>
17
-
18
-
19
- </br>
20
- <table class="table table-striped table-bordered">
21
- <tr>
22
- <th>Client Connections</th>
23
- <th>Client EOF</th>
24
- <th>Client Errors</th>
25
- <th>Forward Errors</th>
26
- <th>Fragments</th>
27
- <th>Server Ejects</th>
28
- </tr>
29
- <tr>
30
- <td><%= @model.get('client_connections')%></td>
31
- <td><%= @model.get('client_eof')%></td>
32
- <td><%= @model.get('client_err')%></td>
33
- <td><%= @model.get('forward_error')%></td>
34
- <td><%= @model.get('fragments')%></td>
35
- <td><%= @model.get('server_ejects')%></td>
36
- </tr>
37
-
38
- </table>
39
-
40
- </br>
41
- <div class="chartsBox">
42
- <div class="row">
43
- <div class="span5">
44
- <div id="chart1" style="padding-left: 23%"></div>
45
- </div>
46
- <div class="span5">
47
- <div id="chart2" style="padding-left: 40%"></div>
48
- </div>
49
- </div>
50
- </div>
51
-
52
-
53
- </br>
54
- <table class="table table-striped table-bordered">
55
- <thead>
56
- <tr>
57
- <th>Host</th>
58
- <th>Used Memory</th>
59
- <th>Free Memory</th>
60
- <th>Used Memory RSS</th>
61
- <th>Max Memory</th>
62
- <th>Fragmentation</th>
63
- </tr>
64
- </thead>
65
- <tbody>
66
- <% for node in @model.get("nodes").models: %>
67
- <tr>
68
- <td><a href="<%=node.get("routeURL")%>"><%=node.get("hostname")%></a></td>
69
- <td><%=humanize.filesize node.get("usedMemory")%></td>
70
- <td><%=humanize.filesize node.get("freeMemory")%></td>
71
- <td><%=humanize.filesize node.get("usedMemoryRss")%></td>
72
- <td><%=humanize.filesize node.get("maxMemory")%></td>
73
- <td><%=node.get("fragmentation")%></td>
74
- </tr>
75
- <% end %>
76
- <tr>
77
- <td>&nbsp;</td>
78
- <td><%=humanize.filesize _(@model.get("nodes").pluck("usedMemory")).sum()%></td>
79
- <td><%=humanize.filesize _(@model.get("nodes").pluck("freeMemory")).sum()%></td>
80
- <td><%=humanize.filesize _(@model.get("nodes").pluck("usedMemoryRss")).sum()%></td>
81
- <td><%=humanize.filesize _(@model.get("nodes").pluck("maxMemory")).sum()%></td>
82
- <td>~<%=humanize.numberFormat(_(@model.get("nodes").pluck("fragmentation")).average(),2)%></td>
83
- </tr>
84
- </tbody>
85
- </table>
86
-
87
-
@@ -1,15 +0,0 @@
1
-
2
- <h3> Clusters </h3>
3
- <br/>
4
- <% for conf in _(@model.get("config")).map( (v,k)->[k,v]): %>
5
- <table class="table table-striped table-bordered">
6
- <tr><th>Name</th><td><%-"<a href=#{Nutcracker.Models.Cluster.routeURL conf[0]}>#{conf[0]}</a>"%></td></tr>
7
- <tr><th>Servers</th><td><%-conf[1].servers.map((s)->"<a href=#{Nutcracker.Models.Node.routeURL(s)}>#{s}</a>").join("<br/>")%></td></tr>
8
- <% for array in _(conf[1]).map((v,k)->[k,v]): %>
9
- <%if not /servers/.test array[0]:%>
10
- <tr><th><%=array[0]%></th><td><%=array[1]%></td></tr>
11
- <% end %>
12
- <% end %>
13
- </table>
14
- </br>
15
- <% end %>
@@ -1 +0,0 @@
1
- Last Update <%=humanize.relativeTime(@model.get('timestamp'))%>
@@ -1,55 +0,0 @@
1
- <div class="navbar">
2
- <div class="navbar-inner">
3
- <div class="container" style="font-size: 17px">
4
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".navbar-responsive-collapse">
5
- <span class="icon-bar"></span>
6
- <span class="icon-bar"></span>
7
- <span class="icon-bar"></span>
8
- </a>
9
- <a class="brand" href="#" style="color: #ffffff;font-size: 25px">Nutcracker</a>
10
- <div class="nav-collapse collapse navbar-responsive-collapse">
11
- <ul class="nav">
12
- <li class="divider-vertical"></li>
13
- <li id="overview" ><a href="#/">Overview</a></li>
14
- <li class="divider-vertical"></li>
15
- <li id="config" ><a href="#/config">Config </a></li>
16
- <li class="divider-vertical"></li>
17
- <li id="clusters" class="dropdown">
18
- <a class="dropdown-toggle" id="drop4" style="padding-top: 12px;" role="button" data-toggle="dropdown" href="#">Clusters <b class="caret"></b></a>
19
- <ul id="menu1" class="dropdown-menu" role="menu" aria-labelledby="drop4">
20
- <li class='divider'></li>
21
- <% for cluster in @model.get("clusters").models: %>
22
- <li role="presentation" style="font-size: 15px">
23
- <a role="menuitem" tabindex="-1" href="<%=cluster.get('routeURL')%>"><%=cluster.get('name')%></a>
24
- </li>
25
- <li class='divider'></li>
26
- <% end %>
27
- </ul>
28
- </li>
29
-
30
- <li class="divider-vertical"></li>
31
- <li id="nodes" class="dropdown">
32
- <a class="dropdown-toggle" id="drop5" style="padding-top: 12px;" role="button" data-toggle="dropdown" href="#">Nodes <b class="caret"></b></a>
33
- <ul id="menu1" class="dropdown-menu" role="menu" aria-labelledby="drop5">
34
- <li class='divider'></li>
35
- <% for node in @model.nodes().models: %>
36
- <li role="presentation" style="font-size: 15px">
37
- <a role="menuitem" tabindex="-1" href="<%=node.get("routeURL")%>"><%=node.get("hostname")%></a>
38
- </li>
39
- <li class='divider'></li>
40
- <% end %>
41
- </ul>
42
- </li>
43
-
44
- <li class="divider-vertical"></li>
45
- </ul>
46
-
47
- <ul class="nav pull-right">
48
- <li class="divider-vertical"></li>
49
- <li class="no-hl"><a>Version <%=@model.get("version")%></a></li>
50
- <li class="divider-vertical"></li>
51
- </ul>
52
- </div><!-- /.nav-collapse -->
53
- </div>
54
- </div><!-- /navbar-inner -->
55
- </div><!-- /navbar -->
@@ -1,73 +0,0 @@
1
- <h3 align=center><%= @model.get("hostname") %></h3>
2
-
3
- <ul class="pager">
4
- <%if @prevNode: %>
5
- <li class="previous nosel"><a class="nextPrevButton" href="<%= @prevNode?.get("routeURL")%>">&larr; Prev</a></li>
6
- <% else: %>
7
- <li class="previous disabled nosel"><a>&larr; Prev</a></li>
8
- <%end%>
9
-
10
- <% for cluster in @model.get("clusters"): %>
11
- <li class="nosel"><a class="nextPrevButton" href="<%= cluster.get('routeURL')%>"><%=cluster.get('name')%></a></li>
12
- <% end %>
13
-
14
- <%if @nextNode: %>
15
- <li class="next nosel"><a class="nextPrevButton" href="<%= @nextNode?.get("routeURL")%>">Next &rarr;</a></li>
16
- <% else: %>
17
- <li class="next disabled nosel"><a>Next &rarr;</a></li>
18
- <%end%>
19
- </li>
20
- </ul>
21
- </br>
22
- <div class="chartsBox">
23
- <div class="row">
24
- <div class="span5">
25
- <div id="chart1" style="padding-left: 26%"></div>
26
- </div>
27
- <div class="span5">
28
- <div id="chart2" style="padding-left: 40%"></div>
29
- </div>
30
- </div>
31
- </div>
32
-
33
- <br/>
34
- <div class="row-fluid">
35
- <div class="span6">
36
- <h4> Cluster <-> Node Stats </h4>
37
- <table class="table table-striped table-bordered">
38
- <tr><th>In-Queue</th><td> <%= @model.get "in_queue" %></td></tr>
39
- <tr><th>In-Queue Memory Size</th><td> <%= humanize.filesize(@model.get "in_queue_bytes") %></td></tr>
40
- <tr><th>Out-Queue</th><td> <%= @model.get "out_queue" %></td></tr>
41
- <tr><th>Out-Queue Memory Size</th><td> <%= humanize.filesize(@model.get "out_queue_bytes") %></td></tr>
42
- <tr><th>Requests</th><td> <%= @model.get "requests" %></td></tr>
43
- <tr><th>Requests Memory Size</th><td> <%= humanize.filesize(@model.get "request_bytes") %></td></tr>
44
- <tr><th>Responses</th><td> <%= @model.get "responses" %></td></tr>
45
- <tr><th>Responses Memory Size</th><td> <%= humanize.filesize(@model.get "response_bytes") %></td></tr>
46
- <tr><th>Server Connections</th><td> <%= @model.get "server_connections" %></td></tr>
47
- <tr><th>Server EOF</th><td> <%= @model.get "server_eof" %></td></tr>
48
- <tr><th>Server Error</th><td> <%= @model.get "server_err" %></td></tr>
49
- <tr><th>Server Timedout</th><td> <%= @model.get "server_timedout" %></td></tr>
50
- </table>
51
- </div>
52
-
53
- <div class="span6">
54
- <h4>Node Stats</h3>
55
- <table class="table table-striped table-bordered">
56
- <tr><th>Hits</th><td> <%= humanize.numberFormat @model.get("info").hits, 0 %></td></tr>
57
- <tr><th>Misses</th><td> <%= humanize.numberFormat @model.get("info").misses, 0 %></td></tr>
58
- <tr><th>Hit Ratio</th><td> <%= humanize.numberFormat @model.get("info").hit_ratio, 2 %></td></tr>
59
- <tr><th>Max Memory</th><td> <%= humanize.filesize @model.get("info").max_memory %></td></tr>
60
- <tr><th>Used Memory</th><td> <%= humanize.filesize @model.get("info").used_memory %></td></tr>
61
- <tr><th>Used Memory RSS</th><td> <%= humanize.filesize @model.get("info").used_memory_rss %></td></tr>
62
- <tr><th>Connections</th><td> <%= @model.get("info").connections %></td></tr>
63
- <tr><th>Keys</th><td> <%= humanize.numberFormat @model.get("info").keys , 0%></td></tr>
64
- <tr><th>Evicted Keys</th><td> <%= humanize.numberFormat @model.get("info").evicted_keys, 0 %></td></tr>
65
- <tr><th>Expired Keys</th><td> <%= humanize.numberFormat @model.get("info").expired_keys, 0 %></td></tr>
66
- <tr><th>Fragmentation</th><td> <%= humanize.numberFormat @model.get("info").fragmentation, 2 %></td></tr>
67
- <tr><th>&nbsp;</th><td> &nbsp;</td></tr>
68
- </table>
69
- </div>
70
-
71
- </div>
72
-
73
-
@@ -1,32 +0,0 @@
1
- <h3> Overview </h3>
2
- <br/>
3
- <table class="table table-striped table-bordered">
4
- <tbody>
5
- <tr><th>Hostname</th><td><%=@model.get("source")%></td></tr>
6
- <tr><th>Service</th><td>Nutcracker Ver. <%=@model.get("version")%></td></tr>
7
- <tr><th>Uptime</th><td><%=humanize.relativeTime(((new Date())-@model.get("uptime")*1000)/1000)%></td></tr>
8
- <tr><th>Server Connections</th><td><%=@model.get("serverConnections")%></td></tr>
9
- <tr><th>Client Connections</th><td><%=@model.get("clientConnections")%></td></tr>
10
-
11
- <tr>
12
- <th>Total Clusters</th>
13
- <td>
14
- <% for cluster in @model.get("clusters").models: %>
15
- <a href="<%=cluster.get("routeURL")%>"><%=cluster.get("name")%></a><br/>
16
- <%end%>
17
- </td>
18
- </tr>
19
-
20
- <tr>
21
- <th>Total Nodes</th>
22
- <td>
23
- <% for node in @model.nodes().models: %>
24
- <a href="<%=node.get('routeURL')%>"><%=node.get('hostname')%></a><br/>
25
- <%end%>
26
- </td>
27
- </tr>
28
-
29
-
30
- </tbody>
31
- </table>
32
-