Add community prometheus cookbook

This commit is contained in:
Greg Karekinian
2026-07-03 16:35:26 +02:00
parent ec73dd5b57
commit 4cd6c41254
29 changed files with 1430 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
# frozen_string_literal: true
require 'uri'
module PrometheusCookbook
module Helpers
def archive_name(component, version, url)
basename = ::File.basename(URI.parse(url).path)
basename.sub(/(?:\.tar\.gz|\.tgz|\.tar\.bz2|\.tar\.xz|\.zip)\z/, '')
rescue URI::InvalidURIError
"#{component}-#{version}"
end
def install_dir_parent(install_dir)
::File.dirname(install_dir)
end
def install_dir_name(install_dir)
::File.basename(install_dir)
end
def prometheus_flags(resource)
flag_pairs = if Gem::Version.new(resource.version) < Gem::Version.new('2.0.0-alpha.0')
resource.flags.map { |key, value| "-#{key}=#{value}" unless value == '' }
else
resource.cli_options.map { |key, value| "--#{key}=#{value}" unless value == '' } +
resource.cli_flags.map { |flag| "--#{flag}" unless flag == '' }
end
flag_pairs.compact.join(' ')
end
def prometheus_unit_content(resource)
{
Unit: {
Description: 'Prometheus',
After: 'network.target auditd.service',
},
Service: {
Type: 'simple',
Environment: "GOMAXPROCS=#{node['cpu']['total'] || 1}",
User: resource.user,
Group: resource.group,
ExecStart: "#{resource.binary} #{prometheus_flags(resource)}",
ExecReload: '/bin/kill -HUP $MAINPID',
Restart: 'always',
},
Install: {
WantedBy: 'multi-user.target',
},
}
end
def alertmanager_unit_content(resource)
{
Unit: {
Description: 'Prometheus Alertmanager',
After: 'network.target',
},
Service: {
User: resource.user,
Group: resource.group,
ExecStart: [
resource.binary,
"--log.level=#{resource.log_level}",
"--storage.path=#{resource.storage_path}",
"--config.file=#{resource.config_file}",
"--web.external-url=#{resource.external_url}",
].join(' '),
Restart: 'always',
},
Install: {
WantedBy: 'multi-user.target',
},
}
end
end
end