From 1f42e693ac107c74714a2c03b7b9465b27bd0058 Mon Sep 17 00:00:00 2001 From: Greg Karekinian Date: Fri, 3 Jul 2026 17:47:13 +0200 Subject: [PATCH] WIP Initial kosmos_prometheus wrapper cookbook --- nodes/prometheus-1.json | 13 +- roles/prometheus_server.rb | 12 ++ site-cookbooks/kosmos_prometheus/.gitignore | 25 ++++ site-cookbooks/kosmos_prometheus/CHANGELOG.md | 7 ++ site-cookbooks/kosmos_prometheus/LICENSE | 20 +++ site-cookbooks/kosmos_prometheus/README.md | 4 + .../kosmos_prometheus/attributes/default.rb | 5 + site-cookbooks/kosmos_prometheus/chefignore | 115 ++++++++++++++++++ site-cookbooks/kosmos_prometheus/metadata.rb | 21 ++++ .../kosmos_prometheus/recipes/alertmanager.rb | 21 ++++ .../kosmos_prometheus/recipes/server.rb | 41 +++++++ 11 files changed, 280 insertions(+), 4 deletions(-) create mode 100644 roles/prometheus_server.rb create mode 100644 site-cookbooks/kosmos_prometheus/.gitignore create mode 100644 site-cookbooks/kosmos_prometheus/CHANGELOG.md create mode 100644 site-cookbooks/kosmos_prometheus/LICENSE create mode 100644 site-cookbooks/kosmos_prometheus/README.md create mode 100644 site-cookbooks/kosmos_prometheus/attributes/default.rb create mode 100644 site-cookbooks/kosmos_prometheus/chefignore create mode 100644 site-cookbooks/kosmos_prometheus/metadata.rb create mode 100644 site-cookbooks/kosmos_prometheus/recipes/alertmanager.rb create mode 100644 site-cookbooks/kosmos_prometheus/recipes/server.rb diff --git a/nodes/prometheus-1.json b/nodes/prometheus-1.json index 29e6cfe..63084e5 100644 --- a/nodes/prometheus-1.json +++ b/nodes/prometheus-1.json @@ -9,17 +9,20 @@ "automatic": { "fqdn": "prometheus-1", "os": "linux", - "os_version": "6.8.0-106-generic", + "os_version": "6.8.0-134-generic", "hostname": "prometheus-1", "ipaddress": "192.168.122.166", "roles": [ "base", - "kvm_guest" + "kvm_guest", + "prometheus_server" ], "recipes": [ "kosmos-base", "kosmos-base::default", "kosmos_kvm::guest", + "kosmos_prometheus::server", + "kosmos_prometheus::alertmanager", "apt::default", "timezone_iii::default", "timezone_iii::debian", @@ -32,7 +35,8 @@ "postfix::_common", "postfix::_attributes", "postfix::sasl_auth", - "hostname::default" + "hostname::default", + "firewall::default" ], "platform": "ubuntu", "platform_version": "24.04", @@ -51,6 +55,7 @@ }, "run_list": [ "role[base]", - "role[kvm_guest]" + "role[kvm_guest]", + "role[prometheus_server]" ] } diff --git a/roles/prometheus_server.rb b/roles/prometheus_server.rb new file mode 100644 index 0000000..dc0bfea --- /dev/null +++ b/roles/prometheus_server.rb @@ -0,0 +1,12 @@ +name "prometheus_server" + +default_run_list = [ + "kosmos_prometheus::server", + "kosmos_prometheus::alertmanager" +] + +env_run_lists( + "_default" => default_run_list, + "development" => default_run_list, + "production" => default_run_list +) diff --git a/site-cookbooks/kosmos_prometheus/.gitignore b/site-cookbooks/kosmos_prometheus/.gitignore new file mode 100644 index 0000000..f1e57b8 --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/.gitignore @@ -0,0 +1,25 @@ +.vagrant +*~ +*# +.#* +\#*# +.*.sw[a-z] +*.un~ + +# Bundler +Gemfile.lock +gems.locked +bin/* +.bundle/* + +# test kitchen +.kitchen/ +kitchen.local.yml + +# Chef Infra +Berksfile.lock +.zero-knife.rb +Policyfile.lock.json + +.idea/ + diff --git a/site-cookbooks/kosmos_prometheus/CHANGELOG.md b/site-cookbooks/kosmos_prometheus/CHANGELOG.md new file mode 100644 index 0000000..2aa0619 --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/CHANGELOG.md @@ -0,0 +1,7 @@ +# kosmos_prometheus CHANGELOG + +This file is used to list changes made in each version of the kosmos_prometheus cookbook. + +## 0.1.0 + +Initial release. diff --git a/site-cookbooks/kosmos_prometheus/LICENSE b/site-cookbooks/kosmos_prometheus/LICENSE new file mode 100644 index 0000000..f3b5d1c --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2019 Kosmos Developers + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/site-cookbooks/kosmos_prometheus/README.md b/site-cookbooks/kosmos_prometheus/README.md new file mode 100644 index 0000000..5c56b8e --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/README.md @@ -0,0 +1,4 @@ +# kosmos_prometheus + +TODO: Enter the cookbook description here. + diff --git a/site-cookbooks/kosmos_prometheus/attributes/default.rb b/site-cookbooks/kosmos_prometheus/attributes/default.rb new file mode 100644 index 0000000..7e5005b --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/attributes/default.rb @@ -0,0 +1,5 @@ +node.default["prometheus"]["version"] = "3.13.0" +node.default["prometheus"]["checksum"] = "744d93324cc024d82089921737bd797474d7f1e5dbbfd1c6b387bad258538cb9" + +node.default["prometheus"]["alertmanager"]["version"] = "0.33.0" +node.default["prometheus"]["alertmanager"]["checksum"] = "8ce11c42e8a6dfbbf93a59c0b193cb1329210b36d0c7ef3df7b745608675a1d1" diff --git a/site-cookbooks/kosmos_prometheus/chefignore b/site-cookbooks/kosmos_prometheus/chefignore new file mode 100644 index 0000000..cc170ea --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/chefignore @@ -0,0 +1,115 @@ +# Put files/directories that should be ignored in this file when uploading +# to a Chef Infra Server or Supermarket. +# Lines that start with '# ' are comments. + +# OS generated files # +###################### +.DS_Store +ehthumbs.db +Icon? +nohup.out +Thumbs.db +.envrc + +# EDITORS # +########### +.#* +.project +.settings +*_flymake +*_flymake.* +*.bak +*.sw[a-z] +*.tmproj +*~ +\#* +REVISION +TAGS* +tmtags +.vscode +.editorconfig + +## COMPILED ## +############## +*.class +*.com +*.dll +*.exe +*.o +*.pyc +*.so +*/rdoc/ +a.out +mkmf.log + +# Testing # +########### +.circleci/* +.codeclimate.yml +.delivery/* +.foodcritic +.kitchen* +.mdlrc +.overcommit.yml +.rspec +.rubocop.yml +.travis.yml +.watchr +.yamllint +azure-pipelines.yml +Dangerfile +examples/* +features/* +Guardfile +kitchen.yml* +mlc_config.json +Procfile +Rakefile +spec/* +test/* + +# SCM # +####### +.git +.gitattributes +.gitconfig +.github/* +.gitignore +.gitkeep +.gitmodules +.svn +*/.bzr/* +*/.git +*/.hg/* +*/.svn/* + +# Berkshelf # +############# +Berksfile +Berksfile.lock +cookbooks/* +tmp + +# Bundler # +########### +vendor/* +Gemfile +Gemfile.lock + +# Policyfile # +############## +Policyfile.rb +Policyfile.lock.json + +# Documentation # +############# +CODE_OF_CONDUCT* +CONTRIBUTING* +documentation/* +TESTING* +UPGRADING* + +# Vagrant # +########### +.vagrant +Vagrantfile diff --git a/site-cookbooks/kosmos_prometheus/metadata.rb b/site-cookbooks/kosmos_prometheus/metadata.rb new file mode 100644 index 0000000..2c04d3b --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/metadata.rb @@ -0,0 +1,21 @@ +name 'kosmos_prometheus' +maintainer 'Kosmos Developers' +maintainer_email 'mail@kosmos.org' +license 'MIT' +description 'Installs/Configures prometheus' +version '0.1.0' +chef_version '>= 16.0' + +depends "prometheus" + +# The `issues_url` points to the location where issues for this cookbook are +# tracked. A `View Issues` link will be displayed on this cookbook's page when +# uploaded to a Supermarket. +# +# issues_url 'https://github.com//kosmos_prometheus/issues' + +# The `source_url` points to the development repository for this cookbook. A +# `View Source` link will be displayed on this cookbook's page when uploaded to +# a Supermarket. +# +# source_url 'https://github.com//kosmos_prometheus' diff --git a/site-cookbooks/kosmos_prometheus/recipes/alertmanager.rb b/site-cookbooks/kosmos_prometheus/recipes/alertmanager.rb new file mode 100644 index 0000000..1984732 --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/recipes/alertmanager.rb @@ -0,0 +1,21 @@ +# +# Cookbook:: kosmos_prometheus +# Recipe:: alertmanager +# + +include_recipe "firewall" + +prometheus_alertmanager_install "alertmanager" do + version node["prometheus"]["alertmanager"]["version"] + checksum node["prometheus"]["alertmanager"]["checksum"] +end + +prometheus_alertmanager_config "alertmanager" +prometheus_alertmanager_service "alertmanager" + +firewall_rule "prometheus alertmanager" do + port 9093 + 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 new file mode 100644 index 0000000..6cea020 --- /dev/null +++ b/site-cookbooks/kosmos_prometheus/recipes/server.rb @@ -0,0 +1,41 @@ +# +# Cookbook:: kosmos_prometheus +# Recipe:: server +# + +include_recipe "firewall" + +prometheus_install "prometheus" do + version node["prometheus"]["version"] + checksum node["prometheus"]["checksum"] +end + +prometheus_config "prometheus" do + # scrape_interval "60s" + # evaluation_interval "60s" +end + +prometheus_job "prometheus" do + target "localhost:9090" +end + +prometheus_service "prometheus" do + cli_options({ + "config.file" => "/opt/prometheus/prometheus.yml", + "log.level" => "info", + "query.max-concurrency" => 20, + "query.lookback-delta" => "5m", + "query.timeout" => "2m", + "storage.tsdb.path" => "/var/lib/prometheus", + "storage.tsdb.retention.time" => "15d", + "web.listen-address" => ":9090", + "web.telemetry-path" => "" + }) +end + +firewall_rule "prometheus web" do + port 9090 + source "10.1.1.0/24" + protocol :tcp + command :allow +end