riemann-dash 0.0.3 → 0.0.4
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.
- data/lib/riemann/dash.rb +8 -7
 - data/lib/riemann/dash/helper/renderer.rb +25 -17
 - data/lib/riemann/dash/version.rb +1 -1
 - data/lib/riemann/dash/views/index.erubis +2 -2
 - metadata +42 -17
 
    
        data/lib/riemann/dash.rb
    CHANGED
    
    | 
         @@ -1,3 +1,4 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
       1 
2 
     | 
    
         
             
            require 'riemann/client'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'sinatra/base'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
         @@ -12,17 +13,17 @@ module Riemann 
     | 
|
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
                def self.config
         
     | 
| 
       14 
15 
     | 
    
         
             
                  @config ||= {
         
     | 
| 
       15 
     | 
    
         
            -
                    client 
     | 
| 
       16 
     | 
    
         
            -
                    age_scale 
     | 
| 
       17 
     | 
    
         
            -
                    state_order 
     | 
| 
      
 16 
     | 
    
         
            +
                    :client =>  {},
         
     | 
| 
      
 17 
     | 
    
         
            +
                    :age_scale => 60 * 30,
         
     | 
| 
      
 18 
     | 
    
         
            +
                    :state_order => {
         
     | 
| 
       18 
19 
     | 
    
         
             
                      'critical' => 3,
         
     | 
| 
       19 
20 
     | 
    
         
             
                      'warning' => 2,
         
     | 
| 
       20 
21 
     | 
    
         
             
                      'ok' => 1
         
     | 
| 
       21 
22 
     | 
    
         
             
                    },
         
     | 
| 
       22 
     | 
    
         
            -
                    strftime 
     | 
| 
       23 
     | 
    
         
            -
                    controllers 
     | 
| 
       24 
     | 
    
         
            -
                    helpers 
     | 
| 
       25 
     | 
    
         
            -
                    views 
     | 
| 
      
 23 
     | 
    
         
            +
                    :strftime => '%H:%M:%S',
         
     | 
| 
      
 24 
     | 
    
         
            +
                    :controllers => [File.join(File.dirname(__FILE__), 'dash', 'controller')],
         
     | 
| 
      
 25 
     | 
    
         
            +
                    :helpers => [File.join(File.dirname(__FILE__), 'dash', 'helper')],
         
     | 
| 
      
 26 
     | 
    
         
            +
                    :views => File.join(File.dirname(__FILE__), 'dash', 'views')
         
     | 
| 
       26 
27 
     | 
    
         
             
                  }
         
     | 
| 
       27 
28 
     | 
    
         
             
                end
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
         @@ -47,7 +47,7 @@ module Riemann 
     | 
|
| 
       47 
47 
     | 
    
         
             
                    table(
         
     | 
| 
       48 
48 
     | 
    
         
             
                      *Event.partition(states, :host).map do |host, states|
         
     | 
| 
       49 
49 
     | 
    
         
             
                        tr(
         
     | 
| 
       50 
     | 
    
         
            -
                          th(host, class 
     | 
| 
      
 50 
     | 
    
         
            +
                          th(host, :class => 'host'),
         
     | 
| 
       51 
51 
     | 
    
         
             
                          *Event.sort(states, :service).map do |state|
         
     | 
| 
       52 
52 
     | 
    
         
             
                            state_short state
         
     | 
| 
       53 
53 
     | 
    
         
             
                          end
         
     | 
| 
         @@ -59,7 +59,7 @@ module Riemann 
     | 
|
| 
       59 
59 
     | 
    
         
             
                  # Renders a state as the given HTML tag with a % width corresponding to
         
     | 
| 
       60 
60 
     | 
    
         
             
                  # metric / max.
         
     | 
| 
       61 
61 
     | 
    
         
             
                  def state_bar(s, opts = {})
         
     | 
| 
       62 
     | 
    
         
            -
                    opts = {tag 
     | 
| 
      
 62 
     | 
    
         
            +
                    opts = {:tag => 'div', :max => 1}.merge opts
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                    return '' unless s
         
     | 
| 
       65 
65 
     | 
    
         
             
                    x = s.metric
         
     | 
| 
         @@ -71,21 +71,30 @@ module Riemann 
     | 
|
| 
       71 
71 
     | 
    
         
             
                    when Integer
         
     | 
| 
       72 
72 
     | 
    
         
             
                      x.to_s
         
     | 
| 
       73 
73 
     | 
    
         
             
                    else
         
     | 
| 
       74 
     | 
    
         
            -
                      '?'
         
     | 
| 
      
 74 
     | 
    
         
            +
                      s.state || '?'
         
     | 
| 
       75 
75 
     | 
    
         
             
                    end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                    # Size
         
     | 
| 
       78 
     | 
    
         
            -
                    size =  
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
                    size = case x
         
     | 
| 
      
 79 
     | 
    
         
            +
                           when 0
         
     | 
| 
      
 80 
     | 
    
         
            +
                             0
         
     | 
| 
      
 81 
     | 
    
         
            +
                           when nil
         
     | 
| 
      
 82 
     | 
    
         
            +
                             100
         
     | 
| 
      
 83 
     | 
    
         
            +
                           else
         
     | 
| 
      
 84 
     | 
    
         
            +
                             begin
         
     | 
| 
      
 85 
     | 
    
         
            +
                               x * 100 / opts[:max]
         
     | 
| 
      
 86 
     | 
    
         
            +
                             rescue ZeroDivisionError
         
     | 
| 
      
 87 
     | 
    
         
            +
                               0
         
     | 
| 
      
 88 
     | 
    
         
            +
                             end
         
     | 
| 
      
 89 
     | 
    
         
            +
                           end
         
     | 
| 
       83 
90 
     | 
    
         
             
                    size = "%.2f" % size
         
     | 
| 
       84 
91 
     | 
    
         | 
| 
      
 92 
     | 
    
         
            +
                    time = Time.at(s.time).strftime(Dash.config[:strftime])
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
       85 
94 
     | 
    
         
             
                    tag opts[:tag], h(text), 
         
     | 
| 
       86 
95 
     | 
    
         
             
                      :class => "state #{s.state}", 
         
     | 
| 
       87 
     | 
    
         
            -
                      style 
     | 
| 
       88 
     | 
    
         
            -
                      title 
     | 
| 
      
 96 
     | 
    
         
            +
                      :style => "opacity: #{age_fraction s.time}; width: #{size}%", 
         
     | 
| 
      
 97 
     | 
    
         
            +
                      :title => "#{s.state}\n#{s.description}\n\n(at #{time})"
         
     | 
| 
       89 
98 
     | 
    
         
             
                  end
         
     | 
| 
       90 
99 
     | 
    
         | 
| 
       91 
100 
     | 
    
         
             
                  # Renders a set of states in a chart. Each row is a given host, each
         
     | 
| 
         @@ -179,12 +188,11 @@ module Riemann 
     | 
|
| 
       179 
188 
     | 
    
         
             
                            *hosts.map do |host|
         
     | 
| 
       180 
189 
     | 
    
         
             
                              s = by[[host, service]]
         
     | 
| 
       181 
190 
     | 
    
         
             
                              td(
         
     | 
| 
       182 
     | 
    
         
            -
                                s ? state_bar(s, max 
     | 
| 
      
 191 
     | 
    
         
            +
                                s ? state_bar(s, :max => maxima[service]) : nil
         
     | 
| 
       183 
192 
     | 
    
         
             
                              )
         
     | 
| 
       184 
193 
     | 
    
         
             
                            end
         
     | 
| 
       185 
194 
     | 
    
         
             
                          )
         
     | 
| 
       186 
     | 
    
         
            -
                        end 
     | 
| 
       187 
     | 
    
         
            -
                        :class => 'chart'
         
     | 
| 
      
 195 
     | 
    
         
            +
                        end << {:class => 'chart'} # ruby 1.8.7 this is your fault
         
     | 
| 
       188 
196 
     | 
    
         
             
                      )
         
     | 
| 
       189 
197 
     | 
    
         
             
                    else
         
     | 
| 
       190 
198 
     | 
    
         
             
                      h2(title) +
         
     | 
| 
         @@ -201,18 +209,18 @@ module Riemann 
     | 
|
| 
       201 
209 
     | 
    
         
             
                            *services.map do |service|
         
     | 
| 
       202 
210 
     | 
    
         
             
                              s = by[[host, service]]
         
     | 
| 
       203 
211 
     | 
    
         
             
                              td(
         
     | 
| 
       204 
     | 
    
         
            -
                                s ? state_bar(s, max 
     | 
| 
      
 212 
     | 
    
         
            +
                                s ? state_bar(s, :max => maxima[service]) : nil
         
     | 
| 
       205 
213 
     | 
    
         
             
                              )
         
     | 
| 
       206 
214 
     | 
    
         
             
                            end
         
     | 
| 
       207 
215 
     | 
    
         
             
                          )
         
     | 
| 
       208 
     | 
    
         
            -
                        end 
     | 
| 
       209 
     | 
    
         
            -
                        :class => 'chart'
         
     | 
| 
      
 216 
     | 
    
         
            +
                        end <<
         
     | 
| 
      
 217 
     | 
    
         
            +
                        {:class => 'chart'}
         
     | 
| 
       210 
218 
     | 
    
         
             
                      )
         
     | 
| 
       211 
219 
     | 
    
         
             
                    end
         
     | 
| 
       212 
220 
     | 
    
         
             
                  end
         
     | 
| 
       213 
221 
     | 
    
         | 
| 
       214 
222 
     | 
    
         
             
                  # Renders a state as a short tag.
         
     | 
| 
       215 
     | 
    
         
            -
                  def state_short(s, opts={tag 
     | 
| 
      
 223 
     | 
    
         
            +
                  def state_short(s, opts={:tag => 'li'})
         
     | 
| 
       216 
224 
     | 
    
         
             
                    if s
         
     | 
| 
       217 
225 
     | 
    
         
             
                      "<#{opts[:tag]} class=\"state #{s.state}\" style=\"opacity: #{age_fraction s.time}\" title=\"#{h s.description}\">#{h s.host} #{h s.service}</#{opts[:tag]}>"
         
     | 
| 
       218 
226 
     | 
    
         
             
                    else
         
     | 
    
        data/lib/riemann/dash/version.rb
    CHANGED
    
    
| 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            <div class="box"><%= state_list query('state != "ok"') %></div>
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            <div class="box">
         
     | 
| 
       5 
     | 
    
         
            -
            <%= state_chart query('service = "cpu" or service = "memory" or service =~ "disk%" or service = "load"'), title 
     | 
| 
      
 5 
     | 
    
         
            +
            <%= state_chart query('service = "cpu" or service = "memory" or service =~ "disk%" or service = "load"'), :title => "Health" %>
         
     | 
| 
       6 
6 
     | 
    
         
             
            </div>
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            <div class="box"><%= state_chart query('true'), title 
     | 
| 
      
 8 
     | 
    
         
            +
            <div class="box"><%= state_chart query('true'), :title => "Everything" %></div>
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: riemann-dash
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.4
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-04-17 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: riemann-client
         
     | 
| 
       16 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -21,10 +21,15 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: 0.0.3
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: 0.0.3
         
     | 
| 
       25 
30 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
31 
     | 
    
         
             
              name: erubis
         
     | 
| 
       27 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 32 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       28 
33 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
34 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
35 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,10 +37,15 @@ dependencies: 
     | 
|
| 
       32 
37 
     | 
    
         
             
                    version: 2.7.0
         
     | 
| 
       33 
38 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
39 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 40 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: 2.7.0
         
     | 
| 
       36 
46 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
47 
     | 
    
         
             
              name: sinatra
         
     | 
| 
       38 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 48 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       39 
49 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
50 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
51 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -43,10 +53,15 @@ dependencies: 
     | 
|
| 
       43 
53 
     | 
    
         
             
                    version: 1.3.2
         
     | 
| 
       44 
54 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       45 
55 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 57 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: 1.3.2
         
     | 
| 
       47 
62 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
63 
     | 
    
         
             
              name: sass
         
     | 
| 
       49 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 64 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       50 
65 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
66 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
67 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -54,10 +69,15 @@ dependencies: 
     | 
|
| 
       54 
69 
     | 
    
         
             
                    version: 3.1.14
         
     | 
| 
       55 
70 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       56 
71 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 72 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 75 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 77 
     | 
    
         
            +
                    version: 3.1.14
         
     | 
| 
       58 
78 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
79 
     | 
    
         
             
              name: thin
         
     | 
| 
       60 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 80 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       61 
81 
     | 
    
         
             
                none: false
         
     | 
| 
       62 
82 
     | 
    
         
             
                requirements:
         
     | 
| 
       63 
83 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -65,7 +85,12 @@ dependencies: 
     | 
|
| 
       65 
85 
     | 
    
         
             
                    version: 1.3.1
         
     | 
| 
       66 
86 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       67 
87 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 88 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 89 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 90 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 91 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 92 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 93 
     | 
    
         
            +
                    version: 1.3.1
         
     | 
| 
       69 
94 
     | 
    
         
             
            description: 
         
     | 
| 
       70 
95 
     | 
    
         
             
            email: aphyr@aphyr.com
         
     | 
| 
       71 
96 
     | 
    
         
             
            executables:
         
     | 
| 
         @@ -75,13 +100,13 @@ extra_rdoc_files: [] 
     | 
|
| 
       75 
100 
     | 
    
         
             
            files:
         
     | 
| 
       76 
101 
     | 
    
         
             
            - lib/riemann/dash.rb
         
     | 
| 
       77 
102 
     | 
    
         
             
            - lib/riemann/dash/version.rb
         
     | 
| 
       78 
     | 
    
         
            -
            - lib/riemann/dash/ 
     | 
| 
       79 
     | 
    
         
            -
            - lib/riemann/dash/ 
     | 
| 
      
 103 
     | 
    
         
            +
            - lib/riemann/dash/controller/css.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - lib/riemann/dash/controller/index.rb
         
     | 
| 
       80 
105 
     | 
    
         
             
            - lib/riemann/dash/views/layout.erubis
         
     | 
| 
      
 106 
     | 
    
         
            +
            - lib/riemann/dash/views/index.erubis
         
     | 
| 
       81 
107 
     | 
    
         
             
            - lib/riemann/dash/views/css.scss
         
     | 
| 
       82 
     | 
    
         
            -
            - lib/riemann/dash/controller/index.rb
         
     | 
| 
       83 
     | 
    
         
            -
            - lib/riemann/dash/controller/css.rb
         
     | 
| 
       84 
108 
     | 
    
         
             
            - lib/riemann/dash/helper/renderer.rb
         
     | 
| 
      
 109 
     | 
    
         
            +
            - lib/riemann/dash/rack/static.rb
         
     | 
| 
       85 
110 
     | 
    
         
             
            - bin/riemann-dash
         
     | 
| 
       86 
111 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       87 
112 
     | 
    
         
             
            - README.markdown
         
     | 
| 
         @@ -105,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       105 
130 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       106 
131 
     | 
    
         
             
            requirements: []
         
     | 
| 
       107 
132 
     | 
    
         
             
            rubyforge_project: riemann-dash
         
     | 
| 
       108 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 133 
     | 
    
         
            +
            rubygems_version: 1.8.22
         
     | 
| 
       109 
134 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       110 
135 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       111 
136 
     | 
    
         
             
            summary: HTTP dashboard for the distributed event system Riemann.
         
     |