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.
@@ -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: []