prometheus-config-builder 0.0.38 → 0.0.40

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 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: