98 lines
2.2 KiB
Ruby
98 lines
2.2 KiB
Ruby
#
|
|
# Cookbook:: kosmos_prometheus
|
|
# Recipe:: alertmanager
|
|
#
|
|
|
|
include_recipe "firewall"
|
|
|
|
version = node["kosmos_prometheus"]["alertmanager"]["version"]
|
|
checksum = node["kosmos_prometheus"]["alertmanager"]["checksum"]
|
|
tarball = "#{Chef::Config[:file_cache_path]}/alertmanager-#{version}.linux-amd64.tar.gz"
|
|
binary_url = "https://github.com/prometheus/alertmanager/releases/download/v#{version}/alertmanager-#{version}.linux-amd64.tar.gz"
|
|
|
|
group "alertmanager"
|
|
|
|
user "alertmanager" do
|
|
gid "alertmanager"
|
|
system true
|
|
shell "/bin/false"
|
|
home "/nonexistent"
|
|
end
|
|
|
|
directory "/var/lib/alertmanager" do
|
|
owner "alertmanager"
|
|
group "alertmanager"
|
|
mode "0755"
|
|
recursive true
|
|
end
|
|
|
|
directory "/etc/prometheus" do
|
|
owner "root"
|
|
group "root"
|
|
mode "0755"
|
|
recursive true
|
|
end
|
|
|
|
package %w(tar bzip2)
|
|
|
|
remote_file tarball do
|
|
source binary_url
|
|
checksum checksum
|
|
action :create
|
|
notifies :run, "execute[install_alertmanager]", :immediately
|
|
end
|
|
|
|
execute "install_alertmanager" do
|
|
command "tar -xzf #{tarball} -C /usr/local/bin --strip-components=1 alertmanager-#{version}.linux-amd64/alertmanager"
|
|
action :nothing
|
|
notifies :restart, "service[alertmanager]", :delayed
|
|
end
|
|
|
|
file "/usr/local/bin/alertmanager" do
|
|
owner "root"
|
|
group "root"
|
|
mode "0755"
|
|
notifies :restart, "service[alertmanager]", :delayed
|
|
end
|
|
|
|
template "/etc/prometheus/alertmanager.yml" do
|
|
source "alertmanager.yml.erb"
|
|
owner "root"
|
|
group "alertmanager"
|
|
mode "0644"
|
|
notifies :restart, "service[alertmanager]", :delayed
|
|
end
|
|
|
|
systemd_unit "alertmanager.service" do
|
|
content({
|
|
Unit: {
|
|
Description: "Prometheus Alertmanager",
|
|
After: "network.target",
|
|
},
|
|
Service: {
|
|
Type: "simple",
|
|
User: "alertmanager",
|
|
Group: "alertmanager",
|
|
ExecStart: "/usr/local/bin/alertmanager --config.file=/etc/prometheus/alertmanager.yml --storage.path=/var/lib/alertmanager --web.listen-address=:9093",
|
|
Restart: "on-failure",
|
|
RestartSec: "5",
|
|
},
|
|
Install: {
|
|
WantedBy: "multi-user.target",
|
|
},
|
|
})
|
|
triggers_reload true
|
|
action :create
|
|
end
|
|
|
|
service "alertmanager" do
|
|
action [:enable, :start]
|
|
end
|
|
|
|
firewall_rule "prometheus alertmanager" do
|
|
port 9093
|
|
source "10.1.1.0/24"
|
|
protocol :tcp
|
|
command :allow
|
|
end
|