pingdom-to-graphite 0.0.7 → 0.1.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.
- checksums.yaml +7 -0
- data/Gemfile +1 -2
- data/lib/pingdom-to-graphite.rb +2 -2
- data/lib/pingdom-to-graphite/cli.rb +26 -8
- data/lib/pingdom-to-graphite/data-pull.rb +2 -2
- data/lib/pingdom-to-graphite/data-push.rb +1 -1
- data/lib/pingdom-to-graphite/version.rb +1 -1
- data/pingdom-to-graphite.gemspec +17 -9
- metadata +108 -49
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 966e39e720b02bdf667844172ed41a07f82de216
|
4
|
+
data.tar.gz: b3498c74b85f7fab28306014a7acadd28648e8d8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bb3bd92a0752a335d7f8b4ee3fb15dd3b067e85d792d1ffa5fa63eb2eda9290e195fa3eed819f0e495b920330fa5903720d70acb9f4d2d06b0c69ce472833aa0
|
7
|
+
data.tar.gz: f63971386435283d479dc8e72b5d2e24ec44899b4d9b2a50aa4d480ae0f2e2a8edcd9f729488a092a7603c7e3786327cae91be7d963499c6488ebf7ac3d98589
|
data/Gemfile
CHANGED
data/lib/pingdom-to-graphite.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module PingdomToGraphite
|
2
|
-
|
3
|
-
end
|
2
|
+
|
3
|
+
end
|
@@ -6,6 +6,10 @@ require "thor"
|
|
6
6
|
require "json"
|
7
7
|
require "fileutils"
|
8
8
|
require "logger"
|
9
|
+
require "excon"
|
10
|
+
|
11
|
+
# Handle certificate errors, does make this a little less secure!
|
12
|
+
Excon.defaults[:ssl_verify_peer] = false
|
9
13
|
|
10
14
|
class PingdomToGraphite::CLI < Thor
|
11
15
|
|
@@ -114,8 +118,8 @@ class PingdomToGraphite::CLI < Thor
|
|
114
118
|
def results(check_id)
|
115
119
|
load_config!
|
116
120
|
load_probe_list!
|
117
|
-
start_time = (options.start_time) ? DateTime.parse(options.start_time).to_i :
|
118
|
-
end_time = (options.end_time) ? DateTime.parse(options.end_time).to_i :
|
121
|
+
start_time = (options.start_time) ? DateTime.parse(options.start_time).to_i : Time.now.to_i - 3600
|
122
|
+
end_time = (options.end_time) ? DateTime.parse(options.end_time).to_i : Time.now.to_i
|
119
123
|
if start_time - end_time > 2764800
|
120
124
|
error("Date range must be less then 32 days.")
|
121
125
|
end
|
@@ -227,6 +231,12 @@ class PingdomToGraphite::CLI < Thor
|
|
227
231
|
# Write the state to disk
|
228
232
|
def write_state!
|
229
233
|
state_file = File.expand_path(options.state)
|
234
|
+
|
235
|
+
# If the state dir doesn't exist create it first to prevent errors
|
236
|
+
unless File.directory?(File.dirname(state_file))
|
237
|
+
FileUtils.mkdir_p(File.dirname(state_file), :mode => 0700)
|
238
|
+
end
|
239
|
+
|
230
240
|
File.open(state_file,"w",0600) do |f|
|
231
241
|
f.write(JSON.generate(@state))
|
232
242
|
end
|
@@ -288,14 +298,22 @@ class PingdomToGraphite::CLI < Thor
|
|
288
298
|
# Pull the data
|
289
299
|
rec_count = 0
|
290
300
|
result_list = Array.new
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
301
|
+
begin
|
302
|
+
datapull.full_results(check_id, latest_ts, earlist_ts, limit).each do |result|
|
303
|
+
result_list += parse_result(check_id, result)
|
304
|
+
latest_stored = result.time if latest_stored.nil? || result.time > latest_stored
|
305
|
+
earliest_stored = result.time if earliest_stored.nil? || result.time < earliest_stored
|
306
|
+
rec_count += 1
|
307
|
+
end
|
308
|
+
rescue Pingdom::Error => e
|
309
|
+
error("Caught error from Pingdom: #{e}")
|
296
310
|
end
|
297
311
|
# Push to graphite
|
298
|
-
|
312
|
+
begin
|
313
|
+
datapush.to_graphite(result_list) unless result_list.empty?
|
314
|
+
rescue Exception => e
|
315
|
+
error("Failed to push to graphite: #{e}")
|
316
|
+
end
|
299
317
|
# Store the state
|
300
318
|
@state[check_id] = Hash.new
|
301
319
|
@state[check_id]["latest_ts"] = latest_stored
|
data/pingdom-to-graphite.gemspec
CHANGED
@@ -7,11 +7,12 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = PingdomToGraphite::VERSION
|
8
8
|
s.authors = ["Lew Goettner"]
|
9
9
|
s.email = ["lew@goettner.net"]
|
10
|
+
s.license = "MIT"
|
10
11
|
s.homepage = "https://github.com/lewg/pingdom-to-graphite"
|
11
12
|
s.summary = %q{A command line tool for pulling stats from pingdom and shipping them to graphite.}
|
12
|
-
s.description = %q{A tool for copying metrics from Pingdom to graphite. Pingdom, although
|
13
|
-
allowing access to effectively all your metrics through the API, does have some limits
|
14
|
-
in place to prevent abuse. This tool tries to be mindful of that, although does provide a
|
13
|
+
s.description = %q{A tool for copying metrics from Pingdom to graphite. Pingdom, although
|
14
|
+
allowing access to effectively all your metrics through the API, does have some limits
|
15
|
+
in place to prevent abuse. This tool tries to be mindful of that, although does provide a
|
15
16
|
"backfill" option if you care to burn up your daily api limit in one fell swoop.}
|
16
17
|
|
17
18
|
s.files = `git ls-files`.split("\n")
|
@@ -19,10 +20,17 @@ Gem::Specification.new do |s|
|
|
19
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
21
|
s.require_paths = ["lib"]
|
21
22
|
|
22
|
-
s.add_runtime_dependency "bundler", "~> 1.
|
23
|
-
s.add_runtime_dependency "thor", "~> 0.
|
24
|
-
s.add_runtime_dependency "
|
25
|
-
s.add_runtime_dependency "
|
26
|
-
s.add_runtime_dependency "
|
23
|
+
s.add_runtime_dependency "bundler", "~> 1.7"
|
24
|
+
s.add_runtime_dependency "thor", "~> 0.19"
|
25
|
+
s.add_runtime_dependency "json", "~> 1.8"
|
26
|
+
s.add_runtime_dependency "graphite-metric", "~> 0.3"
|
27
|
+
s.add_runtime_dependency "activesupport", "~> 3.0"
|
28
|
+
s.add_runtime_dependency "i18n", "~> 0.5" # ActiveSupport dependency"
|
29
|
+
s.add_runtime_dependency "pingdom-ruby", "~> 1.0.4"
|
30
|
+
# for pingdom-ruby (not built into their gemspec)
|
31
|
+
s.add_runtime_dependency "faraday", "~> 0.5.7"
|
32
|
+
s.add_runtime_dependency "excon", "~> 0.41"
|
33
|
+
s.add_runtime_dependency "yajl-ruby", '~> 1.2.1'
|
27
34
|
|
28
|
-
|
35
|
+
|
36
|
+
end
|
metadata
CHANGED
@@ -1,101 +1,160 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pingdom-to-graphite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Lew Goettner
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-11-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '1.
|
19
|
+
version: '1.7'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '1.
|
26
|
+
version: '1.7'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: thor
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0.
|
33
|
+
version: '0.19'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0.
|
40
|
+
version: '0.19'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
42
|
+
name: json
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
47
|
+
version: '1.8'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
54
|
+
version: '1.8'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
56
|
+
name: graphite-metric
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
61
|
+
version: '0.3'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
68
|
+
version: '0.3'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
70
|
+
name: activesupport
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: i18n
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.5'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.5'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pingdom-ruby
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.0.4
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.0.4
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: faraday
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.5.7
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.5.7
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: excon
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.41'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.41'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: yajl-ruby
|
80
141
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
142
|
requirements:
|
83
|
-
- - ~>
|
143
|
+
- - "~>"
|
84
144
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
145
|
+
version: 1.2.1
|
86
146
|
type: :runtime
|
87
147
|
prerelease: false
|
88
148
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
149
|
requirements:
|
91
|
-
- - ~>
|
150
|
+
- - "~>"
|
92
151
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
94
|
-
description:
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
152
|
+
version: 1.2.1
|
153
|
+
description: |-
|
154
|
+
A tool for copying metrics from Pingdom to graphite. Pingdom, although
|
155
|
+
allowing access to effectively all your metrics through the API, does have some limits
|
156
|
+
in place to prevent abuse. This tool tries to be mindful of that, although does provide a
|
157
|
+
"backfill" option if you care to burn up your daily api limit in one fell swoop.
|
99
158
|
email:
|
100
159
|
- lew@goettner.net
|
101
160
|
executables:
|
@@ -103,7 +162,7 @@ executables:
|
|
103
162
|
extensions: []
|
104
163
|
extra_rdoc_files: []
|
105
164
|
files:
|
106
|
-
- .gitignore
|
165
|
+
- ".gitignore"
|
107
166
|
- Gemfile
|
108
167
|
- README.md
|
109
168
|
- Rakefile
|
@@ -118,27 +177,27 @@ files:
|
|
118
177
|
- lib/pingdom-to-graphite/version.rb
|
119
178
|
- pingdom-to-graphite.gemspec
|
120
179
|
homepage: https://github.com/lewg/pingdom-to-graphite
|
121
|
-
licenses:
|
180
|
+
licenses:
|
181
|
+
- MIT
|
182
|
+
metadata: {}
|
122
183
|
post_install_message:
|
123
184
|
rdoc_options: []
|
124
185
|
require_paths:
|
125
186
|
- lib
|
126
187
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
188
|
requirements:
|
129
|
-
- -
|
189
|
+
- - ">="
|
130
190
|
- !ruby/object:Gem::Version
|
131
191
|
version: '0'
|
132
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
193
|
requirements:
|
135
|
-
- -
|
194
|
+
- - ">="
|
136
195
|
- !ruby/object:Gem::Version
|
137
196
|
version: '0'
|
138
197
|
requirements: []
|
139
198
|
rubyforge_project:
|
140
|
-
rubygems_version:
|
199
|
+
rubygems_version: 2.2.2
|
141
200
|
signing_key:
|
142
|
-
specification_version:
|
201
|
+
specification_version: 4
|
143
202
|
summary: A command line tool for pulling stats from pingdom and shipping them to graphite.
|
144
203
|
test_files: []
|