prometheus-config-builder 0.0.39 → 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: 4afb62d72eff85bf6ad281d611a0d48ae28d5c1b57e17a79ee963319eb3125cc
4
- data.tar.gz: 88fdee96f062cb7ea2eee057608a7f5cef1ebbb8b5bd4e3fd7e234200b54e45d
3
+ metadata.gz: db9d70c9130bb149fa99797f998e4b828da28cbc15fba570cdd5d8730d59548b
4
+ data.tar.gz: 6e9bc7caeee2dd2bc3f5f389094c55473c6c2c4df67652a10d1663035d8a2b1d
5
5
  SHA512:
6
- metadata.gz: a1db288ac0799dc74d9fda64ea237cf3824ddd25191df03103a36f8c52bef400cfc122ade29137098920daf0299efd43a12c36e47897d91ec436aaf30b8e601a
7
- data.tar.gz: e63fecaf600a5280e2a114b093ef92a07932eebf3bf27c9c125b9279cbe950014ae548759b338d9fcc9c1c0b47cc02f3128cb3837ee9f272f4cce387032245bc
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,6 +49,9 @@ 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
@@ -60,6 +64,7 @@ end
60
64
 
61
65
  abort "You need to set --prometheus-src" if !config[:prometheus_src]
62
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]
63
68
 
64
69
  if config[:addlog]
65
70
  filelog = File.open(config[:addlog], 'w')
@@ -133,8 +138,25 @@ loop do
133
138
  rescue Exception => e
134
139
  log.warn("Unable to send SIGHUP signal to Prometheus: #{e}")
135
140
  puts e.backtrace
141
+ error_count.increment
136
142
  end
137
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
+
138
160
  log.info("Sleeping for #{config[:every]} second and starting then again.")
139
161
  if log.level == Logger::INFO
140
162
  log.info("Setting log level to WARN for the rest of the program execution. Use -v to overwrite this.")
@@ -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)
@@ -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.39'
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.39
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-21 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: