prometheus-config-builder 0.0.39 → 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: 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: