barkdog 0.1.2 → 0.1.3.beta
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.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/barkdog.gemspec +1 -0
- data/lib/barkdog.rb +2 -0
- data/lib/barkdog/dsl/context.rb +14 -1
- data/lib/barkdog/dsl/context/monitor.rb +5 -2
- data/lib/barkdog/dsl/context/monitor/options.rb +4 -1
- data/lib/barkdog/template_helper.rb +18 -0
- data/lib/barkdog/version.rb +1 -1
- data/spec/barkdog_spec.rb +48 -2
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc077f2b8f5cfeab22bd61716f4e5d8c190807df
|
4
|
+
data.tar.gz: e28e0d51e3b0ef5c189fdbd86821aa3dd230ad3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57764456db101f7d17803181905527515f31063fc49fbf9527ab7f2e1d807c1cbf29f02f3b7085b1f6c6a7893157fec6a5a75c5ca5aa4a7d84d6ec93de5251be
|
7
|
+
data.tar.gz: 52f0766f525a6dc04d5821b36de2a945c594b079b2418b65f57ab79f6d3a50736b468b1d569c19c57253aa6ab9e5898d1ff3ac96f1d8f773e0fb5ff1155b5dc3
|
data/README.md
CHANGED
@@ -65,3 +65,23 @@ monitor "Check load avg", :type=>"metric alert" do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
```
|
68
|
+
|
69
|
+
### Use template
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
template "cpu template" do
|
73
|
+
query "avg(last_5m):avg:#{context.target}.load_avg.1m{host:i-XXXXXXXX} > 1"
|
74
|
+
message context.message
|
75
|
+
options do
|
76
|
+
notify_no_data true
|
77
|
+
no_data_timeframe 2
|
78
|
+
notify_audit true
|
79
|
+
silenced({})
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
monitor "Check load avg", :type=>"metric alert" do
|
84
|
+
context.message = "@winebarrel@example.net"
|
85
|
+
include_template "cpu template", :target => "ddstat"
|
86
|
+
end
|
87
|
+
```
|
data/barkdog.gemspec
CHANGED
data/lib/barkdog.rb
CHANGED
@@ -3,12 +3,14 @@ require 'logger'
|
|
3
3
|
require 'singleton'
|
4
4
|
require 'term/ansicolor'
|
5
5
|
require 'diffy'
|
6
|
+
require 'hashie'
|
6
7
|
|
7
8
|
module Barkdog; end
|
8
9
|
|
9
10
|
require 'barkdog/ext/string_ext'
|
10
11
|
require 'barkdog/constants'
|
11
12
|
require 'barkdog/logger'
|
13
|
+
require 'barkdog/template_helper'
|
12
14
|
require 'barkdog/client'
|
13
15
|
require 'barkdog/driver'
|
14
16
|
require 'barkdog/dsl'
|
data/lib/barkdog/dsl/context.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
class Barkdog::DSL::Context
|
2
|
+
include Barkdog::TemplateHelper
|
3
|
+
|
2
4
|
def self.eval(dsl, path, options = {})
|
3
5
|
self.new(path, options) {
|
4
6
|
eval(dsl, binding, path)
|
@@ -11,11 +13,22 @@ class Barkdog::DSL::Context
|
|
11
13
|
@path = path
|
12
14
|
@options = options
|
13
15
|
@result = {}
|
16
|
+
|
17
|
+
@context = Hashie::Mash.new(
|
18
|
+
:path => path,
|
19
|
+
:options => options,
|
20
|
+
:templates => {}
|
21
|
+
)
|
22
|
+
|
14
23
|
instance_eval(&block)
|
15
24
|
end
|
16
25
|
|
17
26
|
private
|
18
27
|
|
28
|
+
def template(name, &block)
|
29
|
+
@context.templates[name.to_s] = block
|
30
|
+
end
|
31
|
+
|
19
32
|
def require(file)
|
20
33
|
barkfile = (file =~ %r|\A/|) ? file : File.expand_path(File.join(File.dirname(@path), file))
|
21
34
|
|
@@ -42,7 +55,7 @@ class Barkdog::DSL::Context
|
|
42
55
|
end
|
43
56
|
|
44
57
|
fixed_options = Hash[fixed_options.map {|k, v| [k.to_s, v] }]
|
45
|
-
attrs = Barkdog::DSL::Context::Monitor.new(name, &block).result
|
58
|
+
attrs = Barkdog::DSL::Context::Monitor.new(@context, name, &block).result
|
46
59
|
@result[name] = fixed_options.merge(attrs)
|
47
60
|
end
|
48
61
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
class Barkdog::DSL::Context::Monitor
|
2
|
-
|
2
|
+
include Barkdog::TemplateHelper
|
3
|
+
|
4
|
+
def initialize(context, name, &block)
|
3
5
|
@monitor_name = name
|
6
|
+
@context = context.merge(:monitor_name => name)
|
4
7
|
@result = {}
|
5
8
|
instance_eval(&block)
|
6
9
|
end
|
@@ -18,6 +21,6 @@ class Barkdog::DSL::Context::Monitor
|
|
18
21
|
end
|
19
22
|
|
20
23
|
def options(&block)
|
21
|
-
@result['options'] = Barkdog::DSL::Context::Monitor::Options.new(&block).result
|
24
|
+
@result['options'] = Barkdog::DSL::Context::Monitor::Options.new(@context, &block).result
|
22
25
|
end
|
23
26
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Barkdog::TemplateHelper
|
2
|
+
def include_template(template_name, context = {})
|
3
|
+
tmplt = @context.templates[template_name.to_s]
|
4
|
+
|
5
|
+
unless tmplt
|
6
|
+
raise "Template `#{template_name}` is not defined"
|
7
|
+
end
|
8
|
+
|
9
|
+
context_orig = @context
|
10
|
+
@context = @context.merge(context)
|
11
|
+
instance_eval(&tmplt)
|
12
|
+
@context = context_orig
|
13
|
+
end
|
14
|
+
|
15
|
+
def context
|
16
|
+
@context
|
17
|
+
end
|
18
|
+
end
|
data/lib/barkdog/version.rb
CHANGED
data/spec/barkdog_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
describe Barkdog::Client do
|
2
2
|
subject { barkdog_client.export }
|
3
3
|
|
4
|
-
let(:
|
4
|
+
let(:dsl) do
|
5
5
|
<<-'RUBY'
|
6
6
|
monitor "my metric check", :type=>"metric alert" do
|
7
7
|
query "avg(last_5m):avg:datadog.dogstatsd.packet.count{*} > 1"
|
@@ -31,10 +31,56 @@ end
|
|
31
31
|
RUBY
|
32
32
|
end
|
33
33
|
|
34
|
+
let(:actual_dsl) { dsl }
|
35
|
+
let(:expected_dsl) { dsl }
|
36
|
+
|
34
37
|
before { barkdog { actual_dsl } }
|
35
38
|
|
36
39
|
context 'when create monitors' do
|
37
|
-
it { is_expected.to eq
|
40
|
+
it { is_expected.to eq expected_dsl }
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when use template monitors' do
|
44
|
+
let(:actual_dsl) do
|
45
|
+
<<-'RUBY'
|
46
|
+
template 'my metric check' do
|
47
|
+
query "avg(last_5m):avg:datadog.dogstatsd.packet.count{*} > 1"
|
48
|
+
message "metric check message"
|
49
|
+
options do
|
50
|
+
no_data_timeframe context.no_data_timeframe
|
51
|
+
notify_audit false
|
52
|
+
notify_no_data false
|
53
|
+
silenced({})
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
template "my service check options" do
|
58
|
+
no_data_timeframe 2
|
59
|
+
notify_audit false
|
60
|
+
notify_no_data true
|
61
|
+
period context.period
|
62
|
+
renotify_interval 0
|
63
|
+
silenced({})
|
64
|
+
thresholds "critical"=>1, "ok"=>1, "warning"=>1
|
65
|
+
timeout_h 0
|
66
|
+
end
|
67
|
+
|
68
|
+
monitor "my metric check", :type=>"metric alert" do
|
69
|
+
include_template "my metric check", :no_data_timeframe=>2
|
70
|
+
end
|
71
|
+
|
72
|
+
monitor "my service check", :type=>"service check" do
|
73
|
+
query "\"datadog.agent.up\".over(\"*\").last(2).count_by_status()"
|
74
|
+
message "service check message"
|
75
|
+
options do
|
76
|
+
context.period = 15
|
77
|
+
include_template "my service check options"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
RUBY
|
81
|
+
end
|
82
|
+
|
83
|
+
it { is_expected.to eq expected_dsl }
|
38
84
|
end
|
39
85
|
|
40
86
|
context 'when delete monitors' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: barkdog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Sugawara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dogapi
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: hashie
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,6 +137,7 @@ files:
|
|
123
137
|
- lib/barkdog/exporter.rb
|
124
138
|
- lib/barkdog/ext/string_ext.rb
|
125
139
|
- lib/barkdog/logger.rb
|
140
|
+
- lib/barkdog/template_helper.rb
|
126
141
|
- lib/barkdog/version.rb
|
127
142
|
- spec/barkdog_spec.rb
|
128
143
|
- spec/spec_helper.rb
|
@@ -141,12 +156,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
141
156
|
version: '0'
|
142
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
158
|
requirements:
|
144
|
-
- - '
|
159
|
+
- - '>'
|
145
160
|
- !ruby/object:Gem::Version
|
146
|
-
version:
|
161
|
+
version: 1.3.1
|
147
162
|
requirements: []
|
148
163
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
164
|
+
rubygems_version: 2.4.8
|
150
165
|
signing_key:
|
151
166
|
specification_version: 4
|
152
167
|
summary: Barkdog is a tool to manage Datadog monitors.
|