nagios_webbed_log 0.3.1 → 0.4.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0
data/lib/nagios_logger.rb CHANGED
@@ -1,16 +1,5 @@
1
1
  #coding: UTF-8
2
2
  module NagiosLogger
3
- =begin
4
- CPU on remaccess Рабочий сервер
5
- CPU on ra Тестовый сервер
6
- HTTP УРМ
7
- HTTP-work СОД
8
- HTTP-lesson Тестовый СОД
9
- Соответствие уровней оповещений в логе выводимым в таблице:
10
-
11
- CRITICAL Ошибка
12
- WARNING Предупреждение
13
- =end
14
3
  SERVICE_LUT = {
15
4
  "CPU on ra" => "Тестовый сервер",
16
5
  "CPU on remaccess" => "Рабочий сервер",
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'sinatra/base'
3
+ require 'csv'
3
4
  require File.expand_path(File.join(File.dirname(__FILE__), 'nagios_logger'))
4
5
  include NagiosLogger
5
6
  class NagiosWebbedLog < Sinatra::Base
@@ -7,6 +8,12 @@ class NagiosWebbedLog < Sinatra::Base
7
8
  # This can display a nice status message.
8
9
  #
9
10
  get "/:year/:month/:day.csv" do
11
+ get_params
12
+ load_dates
13
+ @events = load_events
14
+ response.headers['content_type'] = "application/csv"
15
+ attachment("failures-#{@year}-#{@month}-#{@day}.csv")
16
+ response.write to_csv(@events)
10
17
  end
11
18
 
12
19
  get "/:year/:month/:day" do
@@ -79,4 +86,16 @@ class NagiosWebbedLog < Sinatra::Base
79
86
  @days = @names_list.map{|n| n.split("-") }.map{|n| n[2] }.uniq
80
87
  @months = @names_list.map{|n| n.split("-") }.map{|n| n[1] }.uniq
81
88
  end
89
+ def to_csv(data)
90
+ levs = %w(OK WARNING CRITICAL UNKNOWN)
91
+ out = CSV.generate( {:col_sep => ";"}) do |csv|
92
+ #csv << hdr
93
+ data.each do |evt|
94
+ lvl = evt.map{|it| levs.index(it[:level]) || 3 }.max
95
+ ll = evt.detect{|it| not levs.include?(it[:level]) }
96
+ csv << [evt.first[:stamp].strftime("%Y-%m-%d"), evt.first[:stamp].strftime("%H:%M:%S"), evt.last[:stamp] - evt.first[:stamp], evt.first[:service], NagiosLogger::LEVEL_LUT[levs[lvl]]]
97
+ end
98
+ end
99
+ out.force_encoding('UTF-8').encode('Windows-1251')
100
+ end
82
101
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "nagios_webbed_log"
8
- s.version = "0.3.1"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["afa"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nagios_webbed_log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -341,7 +341,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
341
341
  version: '0'
342
342
  segments:
343
343
  - 0
344
- hash: 776197757
344
+ hash: 513454063
345
345
  required_rubygems_version: !ruby/object:Gem::Requirement
346
346
  none: false
347
347
  requirements: