nagios_webbed_log 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: