prometheus-alertmanager
]
-promscale_version = "0.1.4"
+promscale_version = "0.2.0"
-database_cluster = node[:timescaledb][:cluster]
+database_cluster = "#{node[:timescaledb][:database_version]}/main"
postgresql_user "prometheus" do
cluster database_cluster
on_unit_inactive_sec 1800
end
+service "promscale-maintenance.timer" do
+ action [:enable, :start]
+end
+
+search(:node, "roles:gateway") do |gateway|
+ allowed_ips = gateway.interfaces(:role => :internal).map do |interface|
+ "#{interface[:network]}/#{interface[:prefix]}"
+ end
+
+ node.default[:networking][:wireguard][:peers] << {
+ :public_key => gateway[:networking][:wireguard][:public_key],
+ :allowed_ips => allowed_ips,
+ :endpoint => "#{gateway.name}:51820"
+ }
+end
+
jobs = {}
search(:node, "recipes:prometheus\\:\\:default").sort_by(&:name).each do |client|
end
end
+certificates = search(:node, "letsencrypt:certificates").each_with_object({}) do |n, c|
+ n[:letsencrypt][:certificates].each do |name, details|
+ c[name] ||= details.merge(:nodes => [])
+
+ c[name][:nodes] << {
+ :name => n[:fqdn],
+ :address => n.external_ipaddress || n.internal_ipaddress
+ }
+ end
+end
+
+template "/etc/prometheus/ssl.yml" do
+ source "ssl.yml.erb"
+ owner "root"
+ group "root"
+ mode "644"
+ variables :certificates => certificates
+end
+
+prometheus_exporter "ssl" do
+ address "127.0.0.1"
+ port 9219
+ options "--config.file=/etc/prometheus/ssl.yml"
+ register_target false
+end
+
template "/etc/default/prometheus" do
source "default.prometheus.erb"
owner "root"
owner "root"
group "root"
mode "644"
- variables :jobs => jobs
+ variables :jobs => jobs, :certificates => certificates
end
template "/etc/prometheus/alert_rules.yml" do