nagios_analyzer 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +3 -1
- data/README.textile +3 -1
- data/Rakefile +7 -0
- data/lib/nagios_analyzer/section.rb +1 -1
- data/lib/nagios_analyzer/status.rb +4 -4
- data/lib/nagios_analyzer/version.rb +1 -1
- data/spec/section_spec.rb +25 -24
- metadata +37 -48
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nagios_analyzer (0.0.
|
4
|
+
nagios_analyzer (0.0.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
9
|
diff-lcs (1.1.2)
|
10
|
+
rake (0.8.7)
|
10
11
|
rspec (2.4.0)
|
11
12
|
rspec-core (~> 2.4.0)
|
12
13
|
rspec-expectations (~> 2.4.0)
|
@@ -21,4 +22,5 @@ PLATFORMS
|
|
21
22
|
|
22
23
|
DEPENDENCIES
|
23
24
|
nagios_analyzer!
|
25
|
+
rake
|
24
26
|
rspec
|
data/README.textile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
h1. nagios_analyzer
|
2
2
|
|
3
|
+
"!https://secure.travis-ci.org/jbbarth/nagios_analyzer.png!":http://travis-ci.org/jbbarth/nagios_analyzer
|
4
|
+
|
3
5
|
h2. Description
|
4
6
|
|
5
7
|
nagios_analyzer gem allows you to parse a status.dat file produced by nagios or shinken.
|
@@ -43,7 +45,7 @@ pp status.items.first[:current_state]
|
|
43
45
|
status = NagiosAnalyzer::Status.new("/path/to/status.dat", :include_ok => true)
|
44
46
|
|
45
47
|
# define a personal scope (applied to section string, so look at your status.dat!)
|
46
|
-
|
48
|
+
not_acknowledged = lambda{|section| section.include?("problem_has_been_acknowledged=0") }
|
47
49
|
status = NagiosAnalyzer::Status.new("/path/to/status.dat", :scope => not_acknowledged)
|
48
50
|
|
49
51
|
# add more scopes
|
data/Rakefile
CHANGED
@@ -36,13 +36,13 @@ module NagiosAnalyzer
|
|
36
36
|
|
37
37
|
def host_items
|
38
38
|
@host_items ||= sections.map do |s|
|
39
|
-
Section.new(s) if s
|
39
|
+
Section.new(s) if s =~ /^hoststatus/ && in_scope?(s)
|
40
40
|
end.compact
|
41
41
|
end
|
42
42
|
|
43
43
|
def service_items
|
44
44
|
@service_items ||= sections.map do |s|
|
45
|
-
Section.new(s) if s
|
45
|
+
Section.new(s) if s =~ /^servicestatus/ && in_scope?(s)
|
46
46
|
end.compact
|
47
47
|
end
|
48
48
|
|
@@ -52,13 +52,13 @@ module NagiosAnalyzer
|
|
52
52
|
|
53
53
|
def host_problems
|
54
54
|
@host_problems ||= sections.map do |s|
|
55
|
-
Section.new(s) if s
|
55
|
+
Section.new(s) if s =~ /^hoststatus/ && in_scope?(s) && problem?(s)
|
56
56
|
end.compact
|
57
57
|
end
|
58
58
|
|
59
59
|
def service_problems
|
60
60
|
@service_problems ||= sections.map do |s|
|
61
|
-
Section.new(s) if s
|
61
|
+
Section.new(s) if s =~ /^servicestatus/ && in_scope?(s) && problem?(s)
|
62
62
|
end.compact
|
63
63
|
end
|
64
64
|
|
data/spec/section_spec.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
require File.expand_path('../spec_helper',__FILE__)
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
#alias NagiosAnalyzer to NA for convenience
|
4
|
+
NA = NagiosAnalyzer
|
5
5
|
|
6
|
+
describe NA::Section do
|
6
7
|
before(:each) do
|
7
8
|
file = File.expand_path('../data/status.dat',__FILE__)
|
8
|
-
status = Status.new(file)
|
9
|
+
status = NA::Status.new(file)
|
9
10
|
@section = status.service_items.first
|
10
11
|
end
|
11
12
|
|
12
13
|
it "returns a hash with keys only" do
|
13
|
-
@section.should be_a(Section)
|
14
|
+
@section.should be_a(NA::Section)
|
14
15
|
@section.keys.map(&:class).uniq.should == [Symbol]
|
15
16
|
end
|
16
17
|
|
@@ -26,46 +27,46 @@ describe NagiosAnalyzer::Section do
|
|
26
27
|
|
27
28
|
it "provides a :status key to know the status" do
|
28
29
|
@section[:status].should == "WARNING"
|
29
|
-
Section.new("servicestatus {\ncurrent_state=0\n}")[:status].should == "OK"
|
30
|
-
Section.new("servicestatus {\ncurrent_state=2\n}")[:status].should == "CRITICAL"
|
31
|
-
Section.new("servicestatus {\ncurrent_state=3\n}")[:status].should == "UNKNOWN"
|
32
|
-
Section.new("hoststatus {\ncurrent_state=0\n}")[:status].should == "OK"
|
33
|
-
Section.new("hoststatus {\ncurrent_state=42\n}")[:status].should == "CRITICAL"
|
30
|
+
NA::Section.new("servicestatus {\ncurrent_state=0\n}")[:status].should == "OK"
|
31
|
+
NA::Section.new("servicestatus {\ncurrent_state=2\n}")[:status].should == "CRITICAL"
|
32
|
+
NA::Section.new("servicestatus {\ncurrent_state=3\n}")[:status].should == "UNKNOWN"
|
33
|
+
NA::Section.new("hoststatus {\ncurrent_state=0\n}")[:status].should == "OK"
|
34
|
+
NA::Section.new("hoststatus {\ncurrent_state=42\n}")[:status].should == "CRITICAL"
|
34
35
|
end
|
35
36
|
|
36
37
|
context "#sort" do
|
37
38
|
it "places servicestatus'es after hoststatus'es" do
|
38
|
-
a = Section.new("servicestatus {\ncurrent_state=0\n}")
|
39
|
-
b = Section.new("hoststatus {\ncurrent_state=0\n}")
|
39
|
+
a = NA::Section.new("servicestatus {\ncurrent_state=0\n}")
|
40
|
+
b = NA::Section.new("hoststatus {\ncurrent_state=0\n}")
|
40
41
|
[a,b].sort.should == [b,a]
|
41
42
|
end
|
42
43
|
|
43
44
|
it "places critical before unknown before warning before pending before dependent before ok" do
|
44
|
-
host = Section.new("hoststatus {\ncurrent_state=0\n}")
|
45
|
-
critical = Section.new("servicestatus {\ncurrent_state=2\n}")
|
46
|
-
unknown = Section.new("servicestatus {\ncurrent_state=3\n}")
|
47
|
-
warning = Section.new("servicestatus {\ncurrent_state=1\n}")
|
48
|
-
dependent = Section.new("servicestatus {\ncurrent_state=4\n}")
|
49
|
-
ok = Section.new("servicestatus {\ncurrent_state=0\n}")
|
45
|
+
host = NA::Section.new("hoststatus {\ncurrent_state=0\n}")
|
46
|
+
critical = NA::Section.new("servicestatus {\ncurrent_state=2\n}")
|
47
|
+
unknown = NA::Section.new("servicestatus {\ncurrent_state=3\n}")
|
48
|
+
warning = NA::Section.new("servicestatus {\ncurrent_state=1\n}")
|
49
|
+
dependent = NA::Section.new("servicestatus {\ncurrent_state=4\n}")
|
50
|
+
ok = NA::Section.new("servicestatus {\ncurrent_state=0\n}")
|
50
51
|
[ok, unknown, dependent, critical, host, warning].sort.should == [host, critical, unknown, warning, dependent, ok]
|
51
52
|
end
|
52
53
|
|
53
54
|
it "sorts by host_name" do
|
54
|
-
a = Section.new("hoststatus {\ncurrent_state=0\nhost_name=a\n}")
|
55
|
-
b = Section.new("hoststatus {\ncurrent_state=0\nhost_name=b\n}")
|
55
|
+
a = NA::Section.new("hoststatus {\ncurrent_state=0\nhost_name=a\n}")
|
56
|
+
b = NA::Section.new("hoststatus {\ncurrent_state=0\nhost_name=b\n}")
|
56
57
|
[b,a].sort.should == [a,b]
|
57
58
|
end
|
58
59
|
|
59
60
|
it "sorts by service_description" do
|
60
|
-
a = Section.new("hoststatus {\ncurrent_state=0\n}")
|
61
|
-
b = Section.new("servicestatus {\ncurrent_state=0\nservice_description=b\n}")
|
62
|
-
c = Section.new("servicestatus {\ncurrent_state=0\nservice_description=c\n}")
|
61
|
+
a = NA::Section.new("hoststatus {\ncurrent_state=0\n}")
|
62
|
+
b = NA::Section.new("servicestatus {\ncurrent_state=0\nservice_description=b\n}")
|
63
|
+
c = NA::Section.new("servicestatus {\ncurrent_state=0\nservice_description=c\n}")
|
63
64
|
[c,b,a].sort.should == [a,b,c]
|
64
65
|
end
|
65
66
|
|
66
67
|
it "has no problem even with missing fields (hostname don't have service_description)" do
|
67
|
-
a = Section.new("hoststatus {\ncurrent_state=0\n}")
|
68
|
-
b = Section.new("hoststatus {\ncurrent_state=0\n}")
|
68
|
+
a = NA::Section.new("hoststatus {\ncurrent_state=0\n}")
|
69
|
+
b = NA::Section.new("hoststatus {\ncurrent_state=0\n}")
|
69
70
|
[a,b].sort.should == [a,b]
|
70
71
|
end
|
71
72
|
end
|
metadata
CHANGED
@@ -1,46 +1,38 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: nagios_analyzer
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
version: 0.0.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Jean-Baptiste Barth
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-22 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rspec
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &75650760 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
31
22
|
type: :development
|
32
|
-
|
33
|
-
|
34
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *75650760
|
25
|
+
description: Helps you parse a status.dat file produced by nagios or shinken. It aims
|
26
|
+
at being performant for big status.dat files. Take a look at nagios_parser too if
|
27
|
+
you want, looks very cool too !
|
28
|
+
email:
|
35
29
|
- jeanbaptiste.barth@gmail.com
|
36
30
|
executables: []
|
37
|
-
|
38
31
|
extensions: []
|
39
|
-
|
40
32
|
extra_rdoc_files: []
|
41
|
-
|
42
|
-
files:
|
33
|
+
files:
|
43
34
|
- .gitignore
|
35
|
+
- .travis.yml
|
44
36
|
- Gemfile
|
45
37
|
- Gemfile.lock
|
46
38
|
- README.textile
|
@@ -54,37 +46,34 @@ files:
|
|
54
46
|
- spec/section_spec.rb
|
55
47
|
- spec/spec_helper.rb
|
56
48
|
- spec/status_spec.rb
|
57
|
-
has_rdoc: true
|
58
49
|
homepage: http://github.com/jbbarth/nagios_analyzer
|
59
50
|
licenses: []
|
60
|
-
|
61
51
|
post_install_message:
|
62
52
|
rdoc_options: []
|
63
|
-
|
64
|
-
require_paths:
|
53
|
+
require_paths:
|
65
54
|
- lib
|
66
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
67
56
|
none: false
|
68
|
-
requirements:
|
69
|
-
- -
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
segments:
|
72
62
|
- 0
|
73
|
-
|
74
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
hash: 91061875
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
65
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
segments:
|
80
71
|
- 0
|
81
|
-
|
72
|
+
hash: 91061875
|
82
73
|
requirements: []
|
83
|
-
|
84
74
|
rubyforge_project: nagios_analyzer
|
85
|
-
rubygems_version: 1.
|
75
|
+
rubygems_version: 1.8.10
|
86
76
|
signing_key:
|
87
77
|
specification_version: 3
|
88
78
|
summary: Parses a nagios/shinken status.dat file
|
89
79
|
test_files: []
|
90
|
-
|