nagios_analyzer 0.0.2 → 0.0.3
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/.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
|
-
|