From 7396af5ca42d96732959c61170fd09823927c765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Sat, 4 Jul 2026 13:30:52 +0200 Subject: [PATCH] WIP Add node exporter --- roles/prometheus_server.rb | 3 +- .../kosmos_prometheus/attributes/default.rb | 3 + .../recipes/node_exporter.rb | 85 +++++++++++++++++++ .../kosmos_prometheus/recipes/server.rb | 4 + 4 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 site-cookbooks/kosmos_prometheus/recipes/node_exporter.rb diff --git a/roles/prometheus_server.rb b/roles/prometheus_server.rb index dc0bfea..a91fc15 100644 --- a/roles/prometheus_server.rb +++ b/roles/prometheus_server.rb @@ -2,7 +2,8 @@ name "prometheus_server" default_run_list = [ "kosmos_prometheus::server", - "kosmos_prometheus::alertmanager" + "kosmos_prometheus::alertmanager", + "kosmos_prometheus::node_exporter" ] env_run_lists( diff --git a/site-cookbooks/kosmos_prometheus/attributes/default.rb b/site-cookbooks/kosmos_prometheus/attributes/default.rb index 7e5005b..89714ac 100644 --- a/site-cookbooks/kosmos_prometheus/attributes/default.rb +++ b/site-cookbooks/kosmos_prometheus/attributes/default.rb @@ -3,3 +3,6 @@ node.default["prometheus"]["checksum"] = "744d93324cc024d82089921737bd797474d7f1 node.default["prometheus"]["alertmanager"]["version"] = "0.33.0" node.default["prometheus"]["alertmanager"]["checksum"] = "8ce11c42e8a6dfbbf93a59c0b193cb1329210b36d0c7ef3df7b745608675a1d1" + +node.default["prometheus"]["node_exporter"]["version"] = "1.11.1" +node.default["prometheus"]["node_exporter"]["checksum"] = "9f5ea48e5bc7b656f8a91a32e7d7deb89f70f73dabd0d974418aca15f37d6810" diff --git a/site-cookbooks/kosmos_prometheus/recipes/node_exporter.rb b/site-cookbooks/kosmos_prometheus/recipes/node_exporter.rb new file mode 100644 index 0000000..7e6a9dc --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/recipes/node_exporter.rb @@ -0,0 +1,85 @@ +# +# Cookbook:: kosmos_prometheus +# Recipe:: node_exporter +# + +include_recipe "firewall" + +version = node["prometheus"]["node_exporter"]["version"] +checksum = node["prometheus"]["node_exporter"]["checksum"] +tarball = "#{Chef::Config[:file_cache_path]}/node_exporter-#{version}.linux-amd64.tar.gz" +binary_url = "https://github.com/prometheus/node_exporter/releases/download/v#{version}/node_exporter-#{version}.linux-amd64.tar.gz" + +group "node_exporter" + +user "node_exporter" do + gid "node_exporter" + system true + shell "/bin/false" + home "/nonexistent" +end + +directory "/var/lib/node_exporter/textfile" do + owner "node_exporter" + group "node_exporter" + mode "0755" + recursive true +end + +package %w(tar bzip2) + +remote_file tarball do + source binary_url + checksum checksum + action :create + notifies :run, "execute[install_node_exporter]", :immediately +end + +execute "install_node_exporter" do + command "tar -xzf #{tarball} -C /usr/local/bin --strip-components=1 node_exporter-#{version}.linux-amd64/node_exporter" + action :nothing + notifies :restart, "service[node_exporter]", :delayed +end + +file "/usr/local/bin/node_exporter" do + owner "root" + group "root" + mode "0755" + notifies :restart, "service[node_exporter]", :delayed +end + +systemd_unit "node_exporter.service" do + content({ + Unit: { + Description: "Prometheus node exporter", + Documentation: ["https://github.com/prometheus/node_exporter"], + }, + Service: { + Type: "simple", + User: "node_exporter", + Group: "node_exporter", + ExecStart: "/usr/local/bin/node_exporter --web.listen-address=:9100 --collector.textfile.directory=/var/lib/node_exporter/textfile", + Restart: "on-failure", + RestartSec: "5", + NoNewPrivileges: "yes", + ProtectSystem: "full", + ProtectHome: "yes", + }, + Install: { + WantedBy: "multi-user.target", + }, + }) + triggers_reload true + action :create +end + +service "node_exporter" do + action [:enable, :start] +end + +firewall_rule "node_exporter" do + port 9100 + source "10.1.1.0/24" + protocol :tcp + command :allow +end diff --git a/site-cookbooks/kosmos_prometheus/recipes/server.rb b/site-cookbooks/kosmos_prometheus/recipes/server.rb index d770ee5..16867c2 100644 --- a/site-cookbooks/kosmos_prometheus/recipes/server.rb +++ b/site-cookbooks/kosmos_prometheus/recipes/server.rb @@ -19,6 +19,10 @@ prometheus_job "prometheus" do target "localhost:9090" end +prometheus_job "node" do + target "localhost:9100" +end + prometheus_service "prometheus" do cli_options({ "config.file" => "/opt/prometheus/prometheus.yml",