nutcracker-web 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
-