prometheus-config-builder 0.0.38 → 0.0.40

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6c663a09275931574414b4ced5eb6f34f1e8d73e4deefabbfd13234d6b02a92
4
- data.tar.gz: 9d64b391e59eb2319042afe174001ca63605cae9c33e7b54dd865dfb1f9f68bc
3
+ metadata.gz: db9d70c9130bb149fa99797f998e4b828da28cbc15fba570cdd5d8730d59548b
4
+ data.tar.gz: 6e9bc7caeee2dd2bc3f5f389094c55473c6c2c4df67652a10d1663035d8a2b1d
5
5
  SHA512:
6
- metadata.gz: 924e57d5e492a4ccc16d8e8ea9b7deaa7d0cde878f70635fe568b1253dbce8e199c131160a4681aed62f4982304c3a539584b3c3734f9d812aa26b5742ad1900
7
- data.tar.gz: fba70064e2dea0298c58f0d4e700ca9c822b7028438f018da7abf118368c507c93f22a2256c4cacb114373f2958a67da30897d7922289fa260f95d58bb8e8095
6
+ metadata.gz: ed72434fddba4e8b45dd5053d46b019658942f995acdd12c0e9b6d5c7e3bbf8e0e2bc3e97c5dd1e7913d9e05005a2c468057dfdce68b3e4c50c89562b39becb8
7
+ data.tar.gz: c699d9be7b7a777f24453297368d5225380e6c499b5e32102a243afca2eac8bc395fe1f41d3202237f071c6a3d8d10b421ff82b558e99e084dbb5566c2a57b27
data/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Making changes.
2
+
3
+ The `master` banch lives in git.supercell.com/services/prometheus-config-builder and is mirrored as read-only branch to github.com/supercell/prometheus-config-builder
4
+
5
+ The releases must be done by juho.arenius as the public gem is under his account.
6
+
1
7
 
2
8
  ## Description
3
9
 
@@ -7,6 +7,7 @@ require 'optparse'
7
7
  require 'pp'
8
8
  require 'yaml'
9
9
  require 'json'
10
+ require 'httparty'
10
11
  require 'prometheus_exporter'
11
12
  require 'prometheus_exporter/client'
12
13
  require 'prometheus_exporter/server'
@@ -48,10 +49,12 @@ op = OptionParser.new do |o|
48
49
  o.on('--pgrep=[string]', 'pgrep -f [string] for finding Prometheus process for SIGHUP') do |str|
49
50
  config[:pgrep] = str
50
51
  end
52
+ o.on('--reload-url=[string]', 'Prometheus config reload endpoint') do |str|
53
+ config[:reload_url] = str
54
+ end
51
55
  o.on('--addlog=[FILE]', 'addlog -f [FILE] Log additionally to this file') do |str|
52
56
  config[:addlog] = str
53
57
  end
54
-
55
58
  end
56
59
  op.parse!
57
60
 
@@ -61,6 +64,7 @@ end
61
64
 
62
65
  abort "You need to set --prometheus-src" if !config[:prometheus_src]
63
66
  abort "You need to set --dst-dir" if !config[:dst_dir]
67
+ abort "You need to set either --pgrep or --reload-url, not both" if config[:pgrep] && config[:reload_url]
64
68
 
65
69
  if config[:addlog]
66
70
  filelog = File.open(config[:addlog], 'w')
@@ -134,8 +138,25 @@ loop do
134
138
  rescue Exception => e
135
139
  log.warn("Unable to send SIGHUP signal to Prometheus: #{e}")
136
140
  puts e.backtrace
141
+ error_count.increment
137
142
  end
138
143
 
144
+ begin
145
+ if something_changed && config[:reload_url] != nil
146
+ log.info("Sending reload request to Prometheus at #{config[:reload_url]}")
147
+ response = HTTParty.post(config[:reload_url])
148
+
149
+ if response.code != 200
150
+ log.warn("Prometheus returned #{response.code} when reloading config. Response body: #{response.body}")
151
+ error_count.increment
152
+ end
153
+ end
154
+ rescue HTTParty::Error => e
155
+ log.warn("Unable to send reload request to Prometheus: #{e}")
156
+ puts e.backtrace
157
+ error_count.increment
158
+ end
159
+
139
160
  log.info("Sleeping for #{config[:every]} second and starting then again.")
140
161
  if log.level == Logger::INFO
141
162
  log.info("Setting log level to WARN for the rest of the program execution. Use -v to overwrite this.")
@@ -53,7 +53,7 @@ module PrometheusConfigBuilder
53
53
  if match = e.message.match(/mapping values are not allowed in this context at line ([0-9]+)/i)
54
54
  linenumber = match.captures[0]
55
55
  logger.error("This error is most often because your intentation is at the wrong level. Check the file #{file[:filename]} around line #{linenumber}")
56
- end
56
+ end
57
57
  raise e
58
58
  end
59
59
 
@@ -72,6 +72,11 @@ module PrometheusConfigBuilder
72
72
  def get_scrape_configs(dst_prefix)
73
73
  configs = []
74
74
 
75
+ if !@data.key?('scrape_configs')
76
+ logger.debug("File #{dst_prefix} does not contain any scrape configs.")
77
+ return []
78
+ end
79
+
75
80
  @data['scrape_configs'].each do |config|
76
81
  case config["type"]
77
82
  when "passthrough"
@@ -210,8 +215,11 @@ module PrometheusConfigBuilder
210
215
  labels[:runbook_url] = file.runbook_url if file.runbook_url
211
216
  begin
212
217
  configs = file.get_scrape_configs(scrape_files_dir + "/" + File.basename(file.basename, ".*"))
213
- data["scrape_configs"].push(*configs)
214
- $config_file_status.observe(1, labels)
218
+ if configs.length > 0
219
+ puts "Generated data for file #{scrape_files_dir + "/" + File.basename(file.basename, ".*")}"
220
+ data["scrape_configs"].push(*configs)
221
+ $config_file_status.observe(1, labels)
222
+ end
215
223
  rescue Exception => e
216
224
  logger.error("Unable to get scrape configs correctly from file #{file.source}. Error: #{e}")
217
225
  $config_file_status.observe(0, labels)
@@ -176,7 +176,7 @@ module PrometheusConfigBuilder
176
176
  ip = task.containers[0].network_interfaces[0].private_ipv_4_address
177
177
  else
178
178
  logger.warn("WARNING: Unable to obtain ipv4 address from task #{task}")
179
- return
179
+ next
180
180
  end
181
181
 
182
182
  if metrics_port
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'prometheus-config-builder'
6
- s.version = '0.0.38'
6
+ s.version = '0.0.40'
7
7
  s.date = Time.now
8
8
 
9
9
  s.summary = %q{Template based config generation}
@@ -16,11 +16,13 @@ Gem::Specification.new do |s|
16
16
  s.required_ruby_version = '>= 2.0.0'
17
17
 
18
18
  s.add_dependency 'aws-sdk', '~> 3'
19
+ s.add_dependency 'httparty', '~> 0.17.3'
19
20
  s.add_dependency 'prometheus_exporter', '>= 0.4.13'
20
21
 
21
22
  s.add_development_dependency 'rubygems-tasks', '~> 0.2'
22
23
  s.add_development_dependency 'minitest', '~> 5.4'
23
24
  s.add_development_dependency 'minitest-reporters'
24
25
  s.add_development_dependency 'rake', '~> 12.3.3'
26
+ s.add_development_dependency 'yard', '~> 0.9.5'
25
27
 
26
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus-config-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.38
4
+ version: 0.0.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juho Mäkinen juho.makinen@gmail.com
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-01 00:00:00.000000000 Z
11
+ date: 2023-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.17.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.17.3
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: prometheus_exporter
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,8 +108,22 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: 12.3.3
97
- description:
98
- email:
111
+ - !ruby/object:Gem::Dependency
112
+ name: yard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.9.5
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.9.5
125
+ description:
126
+ email:
99
127
  executables:
100
128
  - prometheus-config-builder
101
129
  extensions: []
@@ -118,10 +146,10 @@ files:
118
146
  - test/data/test1.yaml
119
147
  - test/data/test2.yaml
120
148
  - test/test_helper.rb
121
- homepage:
149
+ homepage:
122
150
  licenses: []
123
151
  metadata: {}
124
- post_install_message:
152
+ post_install_message:
125
153
  rdoc_options: []
126
154
  require_paths:
127
155
  - lib
@@ -136,8 +164,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
164
  - !ruby/object:Gem::Version
137
165
  version: '0'
138
166
  requirements: []
139
- rubygems_version: 3.3.26
140
- signing_key:
167
+ rubygems_version: 3.0.3.1
168
+ signing_key:
141
169
  specification_version: 4
142
170
  summary: Template based config generation
143
171
  test_files: