X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/a2fcf073ea11dab5073424d9099420f933bf99d5..bcc7d3796af2aa1bb18b17c1321f20ed5b17b964:/cookbooks/prometheus/recipes/server.rb diff --git a/cookbooks/prometheus/recipes/server.rb b/cookbooks/prometheus/recipes/server.rb index 297070b33..6a1219ca0 100644 --- a/cookbooks/prometheus/recipes/server.rb +++ b/cookbooks/prometheus/recipes/server.rb @@ -17,14 +17,36 @@ # limitations under the License. # +include_recipe "apache" +include_recipe "apt" +include_recipe "networking" + +passwords = data_bag_item("prometheus", "passwords") +tokens = data_bag_item("prometheus", "tokens") + +prometheus_exporter "fastly" do + port 8080 + listen_switch "endpoint" + listen_type "url" + environment "FASTLY_API_TOKEN" => tokens["fastly"] +end + package "prometheus" -clients = search(:node, "recipes:prometheus\\:\\:default").sort_by(&:name) +jobs = {} + +search(:node, "recipes:prometheus\\:\\:default").sort_by(&:name).each do |client| + if client[:prometheus][:mode] == "wireguard" + node.default[:networking][:wireguard][:peers] << { + :public_key => client[:networking][:wireguard][:public_key], + :allowed_ips => client[:networking][:wireguard][:address], + :endpoint => "#{client.name}:51820" + } + end -prometheus_jobs = clients.each_with_object({}) do |client, jobs| client[:prometheus][:exporters].each do |name, address| jobs[name] ||= [] - jobs[name] << address + jobs[name] << { :address => address, :name => client.name } end end @@ -33,10 +55,37 @@ template "/etc/prometheus/prometheus.yml" do owner "root" group "root" mode "644" - variables :jobs => prometheus_jobs + variables :jobs => jobs end service "prometheus" do action [:enable, :start] subscribes :reload, "template[/etc/prometheus/prometheus.yml]" end + +package "grafana-enterprise" + +template "/etc/grafana/grafana.ini" do + source "grafana.ini.erb" + owner "root" + group "grafana" + mode "640" + variables :passwords => passwords +end + +service "grafana-server" do + action [:enable, :start] + subscribes :restart, "template[/etc/grafana/grafana.ini]" +end + +apache_module "alias" +apache_module "proxy_http" + +ssl_certificate "prometheus.openstreetmap.org" do + domains ["prometheus.openstreetmap.org", "prometheus.osm.org"] + notifies :reload, "service[apache2]" +end + +apache_site "prometheus.openstreetmap.org" do + template "apache.erb" +end