Class: PrometheusConfigBuilder::ConfigFiles

Inherits:
Object
  • Object
show all
Defined in:
lib/prometheus-config-builder/prometheus-config-builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(prometheus_yaml_filename) ⇒ ConfigFiles

Returns a new instance of ConfigFiles.



131
132
133
134
135
136
# File 'lib/prometheus-config-builder/prometheus-config-builder.rb', line 131

def initialize(prometheus_yaml_filename)
  @files = []
  @prometheus_yaml_filename = prometheus_yaml_filename
  @rules_dir = nil
  @scrape_files_dir = nil
end

Instance Method Details

#add(file) ⇒ Object



138
139
140
# File 'lib/prometheus-config-builder/prometheus-config-builder.rb', line 138

def add(file)
  @files << file
end

#set_rules_dir(rules_dir) ⇒ Object



152
153
154
# File 'lib/prometheus-config-builder/prometheus-config-builder.rb', line 152

def set_rules_dir(rules_dir)
  @rules_dir = rules_dir
end

#set_scrape_files_dir(scrape_files_dir) ⇒ Object



156
157
158
# File 'lib/prometheus-config-builder/prometheus-config-builder.rb', line 156

def set_scrape_files_dir(scrape_files_dir)
  @scrape_files_dir = scrape_files_dir
end

#write_prometheus_yaml(destination, scrape_files_dir) ⇒ Object



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/prometheus-config-builder/prometheus-config-builder.rb', line 160

def write_prometheus_yaml(destination, scrape_files_dir)
  data = YAML.load_file(@prometheus_yaml_filename)

  if !data["scrape_configs"]
    data["scrape_configs"] = []
  end

  FileUtils.mkdir_p(scrape_files_dir) if !File.exist?(scrape_files_dir)

  @files.each do |file|
    configs = file.get_scrape_configs(scrape_files_dir + "/" + File.basename(file.basename, ".*"))
    data["scrape_configs"].push(*configs)
  end

  if !data["rule_files"] or data["rule_files"].class != Array
    data["rule_files"] = []
  end

  if @rules_dir != nil && !data["rule_files"].include?(@rules_dir)
    data["rule_files"] << File.expand_path(@rules_dir) + "/*.yaml"
  end

  File.open(destination, "w") do |file|
    file.write("# AUTOGENERATED FILE, DO NOT MODIFY\n")
    file.write("#\n")
    file.write("# This file was automatically generated by prometheus-config-from-s3 at #{Time.now.utc.iso8601}\n")
    file.write("# based on #{@prometheus_yaml_filename}\n")
    file.write("#\n\n")
    file.write(data.to_yaml)
  end

  return Digest::SHA256.digest data.to_yaml
end

#write_rules(path) ⇒ Object



142
143
144
145
146
147
148
149
150
# File 'lib/prometheus-config-builder/prometheus-config-builder.rb', line 142

def write_rules(path)

  hash = ""
  @files.each do |file|
    hash += file.write_rules(path)
  end

  return hash
end