stackeye 0.1.0
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.
- checksums.yaml +7 -0
 - data/.DS_Store +0 -0
 - data/.fasterer.yml +19 -0
 - data/.gitignore +13 -0
 - data/.reek.yml +20 -0
 - data/.rspec +3 -0
 - data/.rubocop.yml +18 -0
 - data/.travis.yml +5 -0
 - data/CHANGELOG.md +11 -0
 - data/CODE_OF_CONDUCT.md +74 -0
 - data/Gemfile +8 -0
 - data/Gemfile.lock +119 -0
 - data/LICENSE.txt +21 -0
 - data/README.md +92 -0
 - data/Rakefile +8 -0
 - data/app.rb +7 -0
 - data/bin/console +15 -0
 - data/bin/setup +9 -0
 - data/examples/web-ui.png +0 -0
 - data/lib/generators/stackeye/install_generator.rb +12 -0
 - data/lib/generators/stackeye/templates/install.rb +5 -0
 - data/lib/stackeye.rb +7 -0
 - data/lib/stackeye/application.rb +32 -0
 - data/lib/stackeye/configuration.rb +31 -0
 - data/lib/stackeye/helpers/base.rb +56 -0
 - data/lib/stackeye/helpers/init.rb +5 -0
 - data/lib/stackeye/metrics/all.rb +25 -0
 - data/lib/stackeye/metrics/base.rb +113 -0
 - data/lib/stackeye/metrics/init.rb +5 -0
 - data/lib/stackeye/metrics/mysql.rb +42 -0
 - data/lib/stackeye/metrics/server.rb +74 -0
 - data/lib/stackeye/public/fonts/feather.eot +0 -0
 - data/lib/stackeye/public/fonts/feather.svg +1050 -0
 - data/lib/stackeye/public/fonts/feather.ttf +0 -0
 - data/lib/stackeye/public/fonts/feather.woff +0 -0
 - data/lib/stackeye/public/images/favicon.ico +0 -0
 - data/lib/stackeye/public/images/stackeye.png +0 -0
 - data/lib/stackeye/public/images/ubuntu.svg +1 -0
 - data/lib/stackeye/public/javascripts/3PL.js +15 -0
 - data/lib/stackeye/public/javascripts/application.js +242 -0
 - data/lib/stackeye/public/stylesheets/3PL.css +5 -0
 - data/lib/stackeye/public/stylesheets/application.css +13 -0
 - data/lib/stackeye/routes/base.rb +21 -0
 - data/lib/stackeye/routes/init.rb +5 -0
 - data/lib/stackeye/routes/metrics.rb +17 -0
 - data/lib/stackeye/tools/cli.rb +27 -0
 - data/lib/stackeye/tools/database.rb +69 -0
 - data/lib/stackeye/tools/init.rb +5 -0
 - data/lib/stackeye/tools/os.rb +48 -0
 - data/lib/stackeye/version.rb +5 -0
 - data/lib/stackeye/views/layout.erb +34 -0
 - data/lib/stackeye/views/metrics/mysql/_queries.erb +73 -0
 - data/lib/stackeye/views/metrics/mysql/index.erb +10 -0
 - data/lib/stackeye/views/metrics/server/_cpu.erb +73 -0
 - data/lib/stackeye/views/metrics/server/_disk.erb +35 -0
 - data/lib/stackeye/views/metrics/server/_memory.erb +73 -0
 - data/lib/stackeye/views/metrics/server/_processes.erb +52 -0
 - data/lib/stackeye/views/metrics/server/index.erb +23 -0
 - data/lib/stackeye/views/shared/_header.erb +20 -0
 - data/lib/stackeye/views/shared/_navbar.erb +57 -0
 - data/lib/stackeye/views/unsupported.erb +13 -0
 - data/stackeye.gemspec +31 -0
 - metadata +218 -0
 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!doctype html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html lang="en">
         
     | 
| 
      
 3 
     | 
    
         
            +
              <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <!-- Metatags -->
         
     | 
| 
      
 5 
     | 
    
         
            +
                <meta charset="utf-8">
         
     | 
| 
      
 6 
     | 
    
         
            +
                <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
         
     | 
| 
      
 7 
     | 
    
         
            +
                <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <meta http-equiv="cleartype" content="on">
         
     | 
| 
      
 9 
     | 
    
         
            +
                <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
         
     | 
| 
      
 10 
     | 
    
         
            +
                <link rel="shortcut icon" href="<%= base_path %>/images/favicon.ico" type="image/x-icon">
         
     | 
| 
      
 11 
     | 
    
         
            +
                <% if refreshing? %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  <meta http-equiv="refresh" content="60">
         
     | 
| 
      
 13 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 14 
     | 
    
         
            +
                <title>Stackeye</title>
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                <!-- Stylesheets -->
         
     | 
| 
      
 17 
     | 
    
         
            +
                <link rel="stylesheet" href="<%= base_path %>/stylesheets/3PL.css">
         
     | 
| 
      
 18 
     | 
    
         
            +
                <link rel="stylesheet" href="<%= base_path %>/stylesheets/application.css">
         
     | 
| 
      
 19 
     | 
    
         
            +
              </head>
         
     | 
| 
      
 20 
     | 
    
         
            +
              <body>
         
     | 
| 
      
 21 
     | 
    
         
            +
                <!-- Components -->
         
     | 
| 
      
 22 
     | 
    
         
            +
                <%= erb(:"shared/_navbar") %>
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                <div class="main-content">
         
     | 
| 
      
 25 
     | 
    
         
            +
                  <div class="container-fluid">
         
     | 
| 
      
 26 
     | 
    
         
            +
                    <%= yield %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 28 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                <!-- Javascripts -->
         
     | 
| 
      
 31 
     | 
    
         
            +
                <script src="<%= base_path %>/javascripts/3PL.js"></script>
         
     | 
| 
      
 32 
     | 
    
         
            +
                <script src="<%= base_path %>/javascripts/application.js"></script>
         
     | 
| 
      
 33 
     | 
    
         
            +
              </body>
         
     | 
| 
      
 34 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div class="card">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="card-header">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div class="row align-items-center">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <div class="col">
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <h4 class="card-header-title">
         
     | 
| 
      
 6 
     | 
    
         
            +
                      Queries
         
     | 
| 
      
 7 
     | 
    
         
            +
                    </h4>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <div class="col-auto">
         
     | 
| 
      
 10 
     | 
    
         
            +
                    <ul class="nav nav-tabs nav-tabs-sm card-header-tabs">
         
     | 
| 
      
 11 
     | 
    
         
            +
                      <% { velocity: { label: "Velocity", suffix: "/sec" }, slow_queries: { label: "Slow" } }.each_with_index do |(metric, opts), i| %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                        <li class="nav-item"
         
     | 
| 
      
 13 
     | 
    
         
            +
                            data-toggle="chart"
         
     | 
| 
      
 14 
     | 
    
         
            +
                            data-type="time"
         
     | 
| 
      
 15 
     | 
    
         
            +
                            data-target="queries_chart"
         
     | 
| 
      
 16 
     | 
    
         
            +
                            data-metrics="<%= @metrics.pluck(metric.to_s) %>"
         
     | 
| 
      
 17 
     | 
    
         
            +
                            data-mean="<%= @metrics.mean(metric.to_s).round(1) %>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                            data-timestamps="<%= @metrics.pluck('timestamp') %>"
         
     | 
| 
      
 19 
     | 
    
         
            +
                            data-suffix="<%= opts[:suffix] %>"
         
     | 
| 
      
 20 
     | 
    
         
            +
                            data-expand="#card_<%= metric %>"
         
     | 
| 
      
 21 
     | 
    
         
            +
                            data-contract=".card-contract-queries">
         
     | 
| 
      
 22 
     | 
    
         
            +
                          <a class="nav-link <%= :active if i.zero? %>" href="#" data-toggle="tab">
         
     | 
| 
      
 23 
     | 
    
         
            +
                            <%= opts[:label] %>
         
     | 
| 
      
 24 
     | 
    
         
            +
                          </a>
         
     | 
| 
      
 25 
     | 
    
         
            +
                        </li>
         
     | 
| 
      
 26 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                    </ul>
         
     | 
| 
      
 28 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 29 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 30 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 31 
     | 
    
         
            +
              <div class="card-body">
         
     | 
| 
      
 32 
     | 
    
         
            +
                <div class="chart">
         
     | 
| 
      
 33 
     | 
    
         
            +
                  <canvas id="queries_chart"
         
     | 
| 
      
 34 
     | 
    
         
            +
                          class="chart-canvas chartjs-render-monitor"
         
     | 
| 
      
 35 
     | 
    
         
            +
                          width="1816"
         
     | 
| 
      
 36 
     | 
    
         
            +
                          height="600"
         
     | 
| 
      
 37 
     | 
    
         
            +
                          style="display: block; height: 300px; width: 908px;">
         
     | 
| 
      
 38 
     | 
    
         
            +
                  </canvas>
         
     | 
| 
      
 39 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 40 
     | 
    
         
            +
                <div class="chart-legend">
         
     | 
| 
      
 41 
     | 
    
         
            +
                  <% { primary: "Metric", dark: "Average" }.each do |color, label| %>
         
     | 
| 
      
 42 
     | 
    
         
            +
                    <span class="chart-legend-item">
         
     | 
| 
      
 43 
     | 
    
         
            +
                      <i class="chart-legend-indicator bg-<%= color %>"></i>
         
     | 
| 
      
 44 
     | 
    
         
            +
                      <%= label %>
         
     | 
| 
      
 45 
     | 
    
         
            +
                    </span>
         
     | 
| 
      
 46 
     | 
    
         
            +
                  <% end %>
         
     | 
| 
      
 47 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 48 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 49 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            <% %w[velocity slow_queries].each_with_index do |metric, i| %>
         
     | 
| 
      
 52 
     | 
    
         
            +
              <div class="row <%= 'd-none' unless i.zero? %> card-contract-queries" id="card_<%= metric %>">
         
     | 
| 
      
 53 
     | 
    
         
            +
                <% %w[mean median mode range].each do |action| %>
         
     | 
| 
      
 54 
     | 
    
         
            +
                  <div class="col-12 col-lg-6 col-xl">
         
     | 
| 
      
 55 
     | 
    
         
            +
                    <div class="card">
         
     | 
| 
      
 56 
     | 
    
         
            +
                      <div class="card-body">
         
     | 
| 
      
 57 
     | 
    
         
            +
                        <div class="row align-items-center">
         
     | 
| 
      
 58 
     | 
    
         
            +
                          <div class="col">
         
     | 
| 
      
 59 
     | 
    
         
            +
                            <h6 class="card-title text-uppercase text-muted mb-2">
         
     | 
| 
      
 60 
     | 
    
         
            +
                              <%= titleize(metric) %>
         
     | 
| 
      
 61 
     | 
    
         
            +
                              <%= titleize(action) %>
         
     | 
| 
      
 62 
     | 
    
         
            +
                            </h6>
         
     | 
| 
      
 63 
     | 
    
         
            +
                            <span class="h2 mb-0">
         
     | 
| 
      
 64 
     | 
    
         
            +
                              <%= @metrics.send(action, metric).round(1) %><%= '/sec' if i.zero? %>
         
     | 
| 
      
 65 
     | 
    
         
            +
                            </span>
         
     | 
| 
      
 66 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 67 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 68 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 69 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 70 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 71 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 72 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 73 
     | 
    
         
            +
            <% end %>
         
     | 
| 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div class="card">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="card-header">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div class="row align-items-center">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <div class="col">
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <h4 class="card-header-title">
         
     | 
| 
      
 6 
     | 
    
         
            +
                      CPU
         
     | 
| 
      
 7 
     | 
    
         
            +
                    </h4>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <div class="col-auto">
         
     | 
| 
      
 10 
     | 
    
         
            +
                    <ul class="nav nav-tabs nav-tabs-sm card-header-tabs">
         
     | 
| 
      
 11 
     | 
    
         
            +
                      <% { cpu_load_1m: { label: "CPU load 1m" }, cpu_utilization: { label: "CPU utilization", suffix: "%" } }.each_with_index do |(metric, opts), i| %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                        <li class="nav-item"
         
     | 
| 
      
 13 
     | 
    
         
            +
                            data-toggle="chart"
         
     | 
| 
      
 14 
     | 
    
         
            +
                            data-type="time"
         
     | 
| 
      
 15 
     | 
    
         
            +
                            data-target="cpu_chart"
         
     | 
| 
      
 16 
     | 
    
         
            +
                            data-metrics="<%= @metrics.pluck(metric.to_s) %>"
         
     | 
| 
      
 17 
     | 
    
         
            +
                            data-mean="<%= @metrics.mean(metric.to_s).round(1) %>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                            data-timestamps="<%= @metrics.pluck('timestamp') %>"
         
     | 
| 
      
 19 
     | 
    
         
            +
                            data-suffix="<%= opts[:suffix] %>"
         
     | 
| 
      
 20 
     | 
    
         
            +
                            data-expand="#card_<%= metric %>"
         
     | 
| 
      
 21 
     | 
    
         
            +
                            data-contract=".card-contract-cpu">
         
     | 
| 
      
 22 
     | 
    
         
            +
                          <a class="nav-link <%= :active if i.zero? %>" href="#" data-toggle="tab">
         
     | 
| 
      
 23 
     | 
    
         
            +
                            <%= opts[:label] %>
         
     | 
| 
      
 24 
     | 
    
         
            +
                          </a>
         
     | 
| 
      
 25 
     | 
    
         
            +
                        </li>
         
     | 
| 
      
 26 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                    </ul>
         
     | 
| 
      
 28 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 29 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 30 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 31 
     | 
    
         
            +
              <div class="card-body">
         
     | 
| 
      
 32 
     | 
    
         
            +
                <div class="chart">
         
     | 
| 
      
 33 
     | 
    
         
            +
                  <canvas id="cpu_chart"
         
     | 
| 
      
 34 
     | 
    
         
            +
                          class="chart-canvas chartjs-render-monitor"
         
     | 
| 
      
 35 
     | 
    
         
            +
                          width="1816"
         
     | 
| 
      
 36 
     | 
    
         
            +
                          height="600"
         
     | 
| 
      
 37 
     | 
    
         
            +
                          style="display: block; height: 300px; width: 908px;">
         
     | 
| 
      
 38 
     | 
    
         
            +
                  </canvas>
         
     | 
| 
      
 39 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 40 
     | 
    
         
            +
                <div class="chart-legend">
         
     | 
| 
      
 41 
     | 
    
         
            +
                  <% { primary: "Metric", dark: "Average" }.each do |color, label| %>
         
     | 
| 
      
 42 
     | 
    
         
            +
                    <span class="chart-legend-item">
         
     | 
| 
      
 43 
     | 
    
         
            +
                      <i class="chart-legend-indicator bg-<%= color %>"></i>
         
     | 
| 
      
 44 
     | 
    
         
            +
                      <%= label %>
         
     | 
| 
      
 45 
     | 
    
         
            +
                    </span>
         
     | 
| 
      
 46 
     | 
    
         
            +
                  <% end %>
         
     | 
| 
      
 47 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 48 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 49 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            <% %w[cpu_load_1m cpu_utilization].each_with_index do |metric, i| %>
         
     | 
| 
      
 52 
     | 
    
         
            +
              <div class="row <%= 'd-none' unless i.zero? %> card-contract-cpu" id="card_<%= metric %>">
         
     | 
| 
      
 53 
     | 
    
         
            +
                <% %w[mean median mode range].each do |action| %>
         
     | 
| 
      
 54 
     | 
    
         
            +
                  <div class="col-12 col-lg-6 col-xl">
         
     | 
| 
      
 55 
     | 
    
         
            +
                    <div class="card">
         
     | 
| 
      
 56 
     | 
    
         
            +
                      <div class="card-body">
         
     | 
| 
      
 57 
     | 
    
         
            +
                        <div class="row align-items-center">
         
     | 
| 
      
 58 
     | 
    
         
            +
                          <div class="col">
         
     | 
| 
      
 59 
     | 
    
         
            +
                            <h6 class="card-title text-uppercase text-muted mb-2">
         
     | 
| 
      
 60 
     | 
    
         
            +
                              <%= titleize(metric) %>
         
     | 
| 
      
 61 
     | 
    
         
            +
                              <%= titleize(action) %>
         
     | 
| 
      
 62 
     | 
    
         
            +
                            </h6>
         
     | 
| 
      
 63 
     | 
    
         
            +
                            <span class="h2 mb-0">
         
     | 
| 
      
 64 
     | 
    
         
            +
                              <%= @metrics.send(action, metric).round(1) %><%= '%' unless i.zero? %>
         
     | 
| 
      
 65 
     | 
    
         
            +
                            </span>
         
     | 
| 
      
 66 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 67 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 68 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 69 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 70 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 71 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 72 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 73 
     | 
    
         
            +
            <% end %>
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div class="card">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="card-header">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div class="row align-items-center">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <div class="col">
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <h4 class="card-header-title">
         
     | 
| 
      
 6 
     | 
    
         
            +
                      Disk
         
     | 
| 
      
 7 
     | 
    
         
            +
                    </h4>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 9 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 10 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 11 
     | 
    
         
            +
              <div class="card-body">
         
     | 
| 
      
 12 
     | 
    
         
            +
                <div class="chart chart-appended">
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <canvas id="disk-chart"
         
     | 
| 
      
 14 
     | 
    
         
            +
                          class="chart-canvas chartjs-render-monitor"
         
     | 
| 
      
 15 
     | 
    
         
            +
                          data-toggle="chart"
         
     | 
| 
      
 16 
     | 
    
         
            +
                          data-target="disk-chart"
         
     | 
| 
      
 17 
     | 
    
         
            +
                          data-type="doughnut"
         
     | 
| 
      
 18 
     | 
    
         
            +
                          data-labels='["Free", "Used"]'
         
     | 
| 
      
 19 
     | 
    
         
            +
                          data-metrics="[<%= @metrics.pluck('disk_free').first %>, <%= @metrics.pluck('disk_used').first %>]"
         
     | 
| 
      
 20 
     | 
    
         
            +
                          data-suffix="GB"
         
     | 
| 
      
 21 
     | 
    
         
            +
                          width="506"
         
     | 
| 
      
 22 
     | 
    
         
            +
                          height="482"
         
     | 
| 
      
 23 
     | 
    
         
            +
                          style="display: block; height: 241px; width: 253px;">
         
     | 
| 
      
 24 
     | 
    
         
            +
                  </canvas>
         
     | 
| 
      
 25 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 26 
     | 
    
         
            +
                <div class="chart-legend">
         
     | 
| 
      
 27 
     | 
    
         
            +
                  <% { primary: "Free", dark: "Used" }.each do |color, label| %>
         
     | 
| 
      
 28 
     | 
    
         
            +
                    <span class="chart-legend-item">
         
     | 
| 
      
 29 
     | 
    
         
            +
                      <i class="chart-legend-indicator bg-<%= color %>"></i>
         
     | 
| 
      
 30 
     | 
    
         
            +
                      <%= label %>
         
     | 
| 
      
 31 
     | 
    
         
            +
                    </span>
         
     | 
| 
      
 32 
     | 
    
         
            +
                  <% end %>
         
     | 
| 
      
 33 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 34 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 35 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div class="card">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="card-header">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div class="row align-items-center">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <div class="col">
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <h4 class="card-header-title">
         
     | 
| 
      
 6 
     | 
    
         
            +
                      Memory
         
     | 
| 
      
 7 
     | 
    
         
            +
                    </h4>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <div class="col-auto">
         
     | 
| 
      
 10 
     | 
    
         
            +
                    <ul class="nav nav-tabs nav-tabs-sm card-header-tabs">
         
     | 
| 
      
 11 
     | 
    
         
            +
                      <% { memory_used: { label: "Memory used", suffix: "GB" }, swap_used: { label: "Swap used", suffix: "GB" } }.each_with_index do |(metric, opts), i| %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                        <li class="nav-item"
         
     | 
| 
      
 13 
     | 
    
         
            +
                            data-toggle="chart"
         
     | 
| 
      
 14 
     | 
    
         
            +
                            data-type="time"
         
     | 
| 
      
 15 
     | 
    
         
            +
                            data-target="memory_chart"
         
     | 
| 
      
 16 
     | 
    
         
            +
                            data-metrics="<%= @metrics.pluck(metric.to_s) %>"
         
     | 
| 
      
 17 
     | 
    
         
            +
                            data-mean="<%= @metrics.mean(metric.to_s).round(1) %>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                            data-timestamps="<%= @metrics.pluck('timestamp') %>"
         
     | 
| 
      
 19 
     | 
    
         
            +
                            data-suffix="<%= opts[:suffix] %>"
         
     | 
| 
      
 20 
     | 
    
         
            +
                            data-expand="#card_<%= metric %>"
         
     | 
| 
      
 21 
     | 
    
         
            +
                            data-contract=".card-contract-memory">
         
     | 
| 
      
 22 
     | 
    
         
            +
                          <a class="nav-link <%= :active if i.zero? %>" href="#" data-toggle="tab">
         
     | 
| 
      
 23 
     | 
    
         
            +
                            <%= opts[:label] %>
         
     | 
| 
      
 24 
     | 
    
         
            +
                          </a>
         
     | 
| 
      
 25 
     | 
    
         
            +
                        </li>
         
     | 
| 
      
 26 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                    </ul>
         
     | 
| 
      
 28 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 29 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 30 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 31 
     | 
    
         
            +
              <div class="card-body">
         
     | 
| 
      
 32 
     | 
    
         
            +
                <div class="chart">
         
     | 
| 
      
 33 
     | 
    
         
            +
                  <canvas id="memory_chart"
         
     | 
| 
      
 34 
     | 
    
         
            +
                          class="chart-canvas chartjs-render-monitor"
         
     | 
| 
      
 35 
     | 
    
         
            +
                          width="1816"
         
     | 
| 
      
 36 
     | 
    
         
            +
                          height="600"
         
     | 
| 
      
 37 
     | 
    
         
            +
                          style="display: block; height: 300px; width: 908px;">
         
     | 
| 
      
 38 
     | 
    
         
            +
                  </canvas>
         
     | 
| 
      
 39 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 40 
     | 
    
         
            +
                <div class="chart-legend">
         
     | 
| 
      
 41 
     | 
    
         
            +
                  <% { primary: "Metric", dark: "Average" }.each do |color, label| %>
         
     | 
| 
      
 42 
     | 
    
         
            +
                    <span class="chart-legend-item">
         
     | 
| 
      
 43 
     | 
    
         
            +
                      <i class="chart-legend-indicator bg-<%= color %>"></i>
         
     | 
| 
      
 44 
     | 
    
         
            +
                      <%= label %>
         
     | 
| 
      
 45 
     | 
    
         
            +
                    </span>
         
     | 
| 
      
 46 
     | 
    
         
            +
                  <% end %>
         
     | 
| 
      
 47 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 48 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 49 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            <% %w[memory_used swap_used].each_with_index do |metric, i| %>
         
     | 
| 
      
 52 
     | 
    
         
            +
              <div class="row <%= 'd-none' unless i.zero? %> card-contract-memory" id="card_<%= metric %>">
         
     | 
| 
      
 53 
     | 
    
         
            +
                <% %w[mean median mode range].each do |action| %>
         
     | 
| 
      
 54 
     | 
    
         
            +
                  <div class="col-12 col-lg-6 col-xl">
         
     | 
| 
      
 55 
     | 
    
         
            +
                    <div class="card">
         
     | 
| 
      
 56 
     | 
    
         
            +
                      <div class="card-body">
         
     | 
| 
      
 57 
     | 
    
         
            +
                        <div class="row align-items-center">
         
     | 
| 
      
 58 
     | 
    
         
            +
                          <div class="col">
         
     | 
| 
      
 59 
     | 
    
         
            +
                            <h6 class="card-title text-uppercase text-muted mb-2">
         
     | 
| 
      
 60 
     | 
    
         
            +
                              <%= titleize(metric) %>
         
     | 
| 
      
 61 
     | 
    
         
            +
                              <%= titleize(action) %>
         
     | 
| 
      
 62 
     | 
    
         
            +
                            </h6>
         
     | 
| 
      
 63 
     | 
    
         
            +
                            <span class="h2 mb-0">
         
     | 
| 
      
 64 
     | 
    
         
            +
                              <%= @metrics.send(action, metric).round(1) %>GB
         
     | 
| 
      
 65 
     | 
    
         
            +
                            </span>
         
     | 
| 
      
 66 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 67 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 68 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 69 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 70 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 71 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 72 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 73 
     | 
    
         
            +
            <% end %>
         
     | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div class="card">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="card-header">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div class="row align-items-center">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <div class="col">
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <h4 class="card-header-title">
         
     | 
| 
      
 6 
     | 
    
         
            +
                      Top 10 processes
         
     | 
| 
      
 7 
     | 
    
         
            +
                    </h4>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <div class="col-auto">
         
     | 
| 
      
 10 
     | 
    
         
            +
                    <ul class="nav nav-tabs nav-tabs-sm card-header-tabs">
         
     | 
| 
      
 11 
     | 
    
         
            +
                      <% { cpu_processes: "CPU", memory_processes: "Memory" }.each_with_index do |(metric, label), i| %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                        <li class="nav-item"
         
     | 
| 
      
 13 
     | 
    
         
            +
                            data-expand="#card_<%= metric %>"
         
     | 
| 
      
 14 
     | 
    
         
            +
                            data-contract=".card-contract-process">
         
     | 
| 
      
 15 
     | 
    
         
            +
                          <a class="nav-link <%= :active if i.zero? %>" href="#" data-toggle="tab">
         
     | 
| 
      
 16 
     | 
    
         
            +
                            <%= label %>
         
     | 
| 
      
 17 
     | 
    
         
            +
                          </a>
         
     | 
| 
      
 18 
     | 
    
         
            +
                        </li>
         
     | 
| 
      
 19 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 20 
     | 
    
         
            +
                    </ul>
         
     | 
| 
      
 21 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 22 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 23 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 24 
     | 
    
         
            +
              <div class="table-responsive mb-0">
         
     | 
| 
      
 25 
     | 
    
         
            +
                <table class="table table-sm table-nowrap card-table">
         
     | 
| 
      
 26 
     | 
    
         
            +
                  <thead>
         
     | 
| 
      
 27 
     | 
    
         
            +
                    <tr>
         
     | 
| 
      
 28 
     | 
    
         
            +
                      <% %w[USER UID COMMAND PID %CPU %MEM].each do |header| %>
         
     | 
| 
      
 29 
     | 
    
         
            +
                        <th class="text-muted">
         
     | 
| 
      
 30 
     | 
    
         
            +
                          <%= header %>
         
     | 
| 
      
 31 
     | 
    
         
            +
                        </th>
         
     | 
| 
      
 32 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 33 
     | 
    
         
            +
                    </tr>
         
     | 
| 
      
 34 
     | 
    
         
            +
                  </thead>
         
     | 
| 
      
 35 
     | 
    
         
            +
                  <% %w[cpu_processes memory_processes].each_with_index do |metric, i| %>
         
     | 
| 
      
 36 
     | 
    
         
            +
                    <tbody class="<%= 'd-none' unless i.zero? %> card-contract-process" id="card_<%= metric %>">
         
     | 
| 
      
 37 
     | 
    
         
            +
                      <% processes = @metrics.pluck(metric).first %>
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                      <% unless processes.nil? %>
         
     | 
| 
      
 40 
     | 
    
         
            +
                        <% processes.each do |process| %>
         
     | 
| 
      
 41 
     | 
    
         
            +
                          <tr>
         
     | 
| 
      
 42 
     | 
    
         
            +
                            <% process.each do |cell| %>
         
     | 
| 
      
 43 
     | 
    
         
            +
                              <td><%= cell %></td>
         
     | 
| 
      
 44 
     | 
    
         
            +
                            <% end %>
         
     | 
| 
      
 45 
     | 
    
         
            +
                          </tr>
         
     | 
| 
      
 46 
     | 
    
         
            +
                        <% end %>
         
     | 
| 
      
 47 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 48 
     | 
    
         
            +
                    </tbody>
         
     | 
| 
      
 49 
     | 
    
         
            +
                  <% end %>
         
     | 
| 
      
 50 
     | 
    
         
            +
                </table>
         
     | 
| 
      
 51 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 52 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="col-12 col-xl-12">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <%= erb(:"shared/_header") %>
         
     | 
| 
      
 4 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 5 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 6 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 7 
     | 
    
         
            +
              <div class="col-12 col-xl-12">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <%= erb(:"metrics/server/_cpu") %>
         
     | 
| 
      
 9 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 10 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 11 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 12 
     | 
    
         
            +
              <div class="col-12 col-xl-12">
         
     | 
| 
      
 13 
     | 
    
         
            +
                <%= erb(:"metrics/server/_memory") %>
         
     | 
| 
      
 14 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 15 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 16 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 17 
     | 
    
         
            +
              <div class="col-12 col-xl-4">
         
     | 
| 
      
 18 
     | 
    
         
            +
                <%= erb(:"metrics/server/_disk") %>
         
     | 
| 
      
 19 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 20 
     | 
    
         
            +
              <div class="col-12 col-xl-8">
         
     | 
| 
      
 21 
     | 
    
         
            +
                <%= erb(:"metrics/server/_processes") %>
         
     | 
| 
      
 22 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 23 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div class="header">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="header-body">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div class="row align-items-end">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <div class="col">
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <h6 class="header-pretitle">
         
     | 
| 
      
 6 
     | 
    
         
            +
                      Metrics
         
     | 
| 
      
 7 
     | 
    
         
            +
                    </h6>
         
     | 
| 
      
 8 
     | 
    
         
            +
                    <h1 class="header-title">
         
     | 
| 
      
 9 
     | 
    
         
            +
                      <%= @title %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                    </h1>
         
     | 
| 
      
 11 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  <div class="col-auto">
         
     | 
| 
      
 13 
     | 
    
         
            +
                    <a href="<%= base_path %>/refresh" class="btn <%= refreshing? ? 'btn-outline-danger' : 'btn-success' %>">
         
     | 
| 
      
 14 
     | 
    
         
            +
                      <span class="fe fe-rotate-cw"></span>
         
     | 
| 
      
 15 
     | 
    
         
            +
                      Auto-Refresh
         
     | 
| 
      
 16 
     | 
    
         
            +
                    </a>
         
     | 
| 
      
 17 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 18 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 19 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 20 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <nav class="navbar navbar-vertical fixed-left navbar-expand-md navbar-light bg-white">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="container-fluid">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#sidebarCollapse" aria-controls="sidebarCollapse" aria-expanded="false" aria-label="Toggle navigation">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <span class="navbar-toggler-icon"></span>
         
     | 
| 
      
 5 
     | 
    
         
            +
                </button>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <a class="navbar-brand" href="<%= base_path %>/server">
         
     | 
| 
      
 7 
     | 
    
         
            +
                  <img src="<%= base_path %>/images/stackeye.png" class="navbar-brand-img mx-auto" alt="Stackeye">
         
     | 
| 
      
 8 
     | 
    
         
            +
                </a>
         
     | 
| 
      
 9 
     | 
    
         
            +
                <div class="navbar-user d-md-none">
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <!-- Nothing -->
         
     | 
| 
      
 11 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 12 
     | 
    
         
            +
                <div class="navbar-collapse collapse" id="sidebarCollapse" style="">
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <hr class="my-3 d-none d-sm-block">
         
     | 
| 
      
 14 
     | 
    
         
            +
                  <h6 class="navbar-heading text-muted">
         
     | 
| 
      
 15 
     | 
    
         
            +
                    Metrics
         
     | 
| 
      
 16 
     | 
    
         
            +
                  </h6>
         
     | 
| 
      
 17 
     | 
    
         
            +
                  <ul class="navbar-nav">
         
     | 
| 
      
 18 
     | 
    
         
            +
                    <% Stackeye.configuration.metrics.each do |metric| %>
         
     | 
| 
      
 19 
     | 
    
         
            +
                      <li class="nav-item">
         
     | 
| 
      
 20 
     | 
    
         
            +
                        <a class='nav-link <%= :active if page?("/#{metric}") %>'
         
     | 
| 
      
 21 
     | 
    
         
            +
                           href="<%= base_path %>/<%= metric %>">
         
     | 
| 
      
 22 
     | 
    
         
            +
                          <i class="fe fe-<%= metric_icon_decorator(metric) %>"></i>
         
     | 
| 
      
 23 
     | 
    
         
            +
                          <%= metric_name_decorator(metric) %>
         
     | 
| 
      
 24 
     | 
    
         
            +
                        </a>
         
     | 
| 
      
 25 
     | 
    
         
            +
                      </li>
         
     | 
| 
      
 26 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                  </ul>
         
     | 
| 
      
 28 
     | 
    
         
            +
                  <hr class="my-3">
         
     | 
| 
      
 29 
     | 
    
         
            +
                  <h6 class="navbar-heading text-muted">
         
     | 
| 
      
 30 
     | 
    
         
            +
                    Documentation
         
     | 
| 
      
 31 
     | 
    
         
            +
                  </h6>
         
     | 
| 
      
 32 
     | 
    
         
            +
                  <ul class="navbar-nav mb-md-3">
         
     | 
| 
      
 33 
     | 
    
         
            +
                    <li class="nav-item">
         
     | 
| 
      
 34 
     | 
    
         
            +
                      <a class="nav-link" target="_blank" href="https://github.com/drexed/stackeye">
         
     | 
| 
      
 35 
     | 
    
         
            +
                        <i class="fe fe-clipboard"></i>
         
     | 
| 
      
 36 
     | 
    
         
            +
                        Getting started
         
     | 
| 
      
 37 
     | 
    
         
            +
                      </a>
         
     | 
| 
      
 38 
     | 
    
         
            +
                    </li>
         
     | 
| 
      
 39 
     | 
    
         
            +
                    <li class="nav-item">
         
     | 
| 
      
 40 
     | 
    
         
            +
                      <a class="nav-link" target="_blank" href="https://github.com/drexed/stackeye/blob/master/CHANGELOG.md">
         
     | 
| 
      
 41 
     | 
    
         
            +
                        <i class="fe fe-git-branch"></i>
         
     | 
| 
      
 42 
     | 
    
         
            +
                        Changelog
         
     | 
| 
      
 43 
     | 
    
         
            +
                        <span class="badge badge-primary ml-auto">
         
     | 
| 
      
 44 
     | 
    
         
            +
                          v<%= Stackeye::VERSION %>
         
     | 
| 
      
 45 
     | 
    
         
            +
                        </span>
         
     | 
| 
      
 46 
     | 
    
         
            +
                      </a>
         
     | 
| 
      
 47 
     | 
    
         
            +
                    </li>
         
     | 
| 
      
 48 
     | 
    
         
            +
                  </ul>
         
     | 
| 
      
 49 
     | 
    
         
            +
                  <hr class="my-3">
         
     | 
| 
      
 50 
     | 
    
         
            +
                  <h6 class="navbar-heading text-muted text-center">
         
     | 
| 
      
 51 
     | 
    
         
            +
                    Built with
         
     | 
| 
      
 52 
     | 
    
         
            +
                    <i class="fe fe-heart text-danger"></i>
         
     | 
| 
      
 53 
     | 
    
         
            +
                    by Drexed
         
     | 
| 
      
 54 
     | 
    
         
            +
                  </h6>
         
     | 
| 
      
 55 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 56 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 57 
     | 
    
         
            +
            </nav>
         
     |