pingdom-to-graphite 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -1,4 +1,3 @@
1
- # A sample Gemfile
2
1
  source "https://rubygems.org"
3
2
 
4
3
  gemspec
@@ -8,4 +7,4 @@ group :development do
8
7
  gem "aruba"
9
8
  gem "cucumber"
10
9
  gem "ronn"
11
- end
10
+ end
@@ -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 : 1.hour.ago.to_i
118
- end_time = (options.end_time) ? DateTime.parse(options.end_time).to_i : DateTime.now.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
- datapull.full_results(check_id, latest_ts, earlist_ts, limit).each do |result|
292
- result_list += parse_result(check_id, result)
293
- latest_stored = result.time if latest_stored.nil? || result.time > latest_stored
294
- earliest_stored = result.time if earliest_stored.nil? || result.time < earliest_stored
295
- rec_count += 1
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
- datapush.to_graphite(result_list) unless result_list.empty?
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
@@ -1,5 +1,5 @@
1
1
  require "pingdom-to-graphite"
2
- require "pingdom-client"
2
+ require "pingdom-ruby"
3
3
 
4
4
  require "logger"
5
5
 
@@ -94,4 +94,4 @@ class PingdomToGraphite::DataPull
94
94
  end
95
95
 
96
96
 
97
- end
97
+ end
@@ -17,4 +17,4 @@ class PingdomToGraphite::DataPush
17
17
  graphite.close
18
18
  end
19
19
 
20
- end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module PingdomToGraphite
2
- VERSION = "0.0.7"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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.2"
23
- s.add_runtime_dependency "thor", "~> 0.17"
24
- s.add_runtime_dependency "pingdom-client", "~> 0.0.6.alpha"
25
- s.add_runtime_dependency "json", "~> 1.7"
26
- s.add_runtime_dependency "graphite-metric", "~> 0.3.0"
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
- end
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.7
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: 2013-10-23 00:00:00.000000000 Z
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.2'
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.2'
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.17'
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.17'
40
+ version: '0.19'
46
41
  - !ruby/object:Gem::Dependency
47
- name: pingdom-client
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: 0.0.6.alpha
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: 0.0.6.alpha
54
+ version: '1.8'
62
55
  - !ruby/object:Gem::Dependency
63
- name: json
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: '1.7'
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: '1.7'
68
+ version: '0.3'
78
69
  - !ruby/object:Gem::Dependency
79
- name: graphite-metric
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: 0.3.0
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: 0.3.0
94
- description: ! "A tool for copying metrics from Pingdom to graphite. Pingdom, although
95
- \n allowing access to effectively all your metrics through the API, does have
96
- some limits \n in place to prevent abuse. This tool tries to be mindful of that,
97
- although does provide a \n \"backfill\" option if you care to burn up your daily
98
- api limit in one fell swoop."
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: 1.8.23
199
+ rubygems_version: 2.2.2
141
200
  signing_key:
142
- specification_version: 3
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: []