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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db9d70c9130bb149fa99797f998e4b828da28cbc15fba570cdd5d8730d59548b
|
4
|
+
data.tar.gz: 6e9bc7caeee2dd2bc3f5f389094c55473c6c2c4df67652a10d1663035d8a2b1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
214
|
-
|
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.
|
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.
|
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-
|
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
|
-
|
98
|
-
|
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.
|
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:
|