From d546ac57e81915b66c36c587c6a26d066107a848 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Thu, 20 Nov 2025 19:59:30 +1100 Subject: [PATCH] feat: add vmcluster static targets - add ability to list static targets for vmagent to scrape - add vyos router to be scraped --- hieradata/roles/infra/metrics/vmagent.yaml | 10 ++++++++ modules/vmcluster/manifests/vmagent.pp | 1 + .../templates/vmagent.scrape.yaml.erb | 25 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/hieradata/roles/infra/metrics/vmagent.yaml b/hieradata/roles/infra/metrics/vmagent.yaml index 5db56e6..1245ad5 100644 --- a/hieradata/roles/infra/metrics/vmagent.yaml +++ b/hieradata/roles/infra/metrics/vmagent.yaml @@ -3,6 +3,16 @@ hiera_include: - vmcluster::vmagent vmcluster::vmagent::enable: true +vmcluster::vmagent::static_targets: + vyos_node: + targets: + - '198.18.21.160:9100' + scrape_interval: '15s' + metrics_path: '/metrics' + scheme: 'http' + labels: + instance: 'syrtvm0001.main.unkin.net' + job: 'vyos_node' vmcluster::vmagent::options: tls: 'true' tlsCertFile: '/etc/pki/tls/vault/certificate.crt' diff --git a/modules/vmcluster/manifests/vmagent.pp b/modules/vmcluster/manifests/vmagent.pp index 3a02703..9cac0a0 100644 --- a/modules/vmcluster/manifests/vmagent.pp +++ b/modules/vmcluster/manifests/vmagent.pp @@ -10,6 +10,7 @@ class vmcluster::vmagent ( Stdlib::Absolutepath $vars_file = '/etc/default/vmagent', String $consul_node_token = $facts['consul_node_token'], Hash[String, Variant[String, Array[String]]] $options = {}, + Hash[String, Hash] $static_targets = {}, ) { # if enabled, manage this service diff --git a/modules/vmcluster/templates/vmagent.scrape.yaml.erb b/modules/vmcluster/templates/vmagent.scrape.yaml.erb index 4bbf8c1..e229a2c 100644 --- a/modules/vmcluster/templates/vmagent.scrape.yaml.erb +++ b/modules/vmcluster/templates/vmagent.scrape.yaml.erb @@ -35,3 +35,28 @@ scrape_configs: - source_labels: [__meta_consul_tag_metrics_job] target_label: job action: replace + +<% if @static_targets -%> +<% @static_targets.each do |job_name, config| -%> + - job_name: '<%= job_name %>' + static_configs: +<% config['targets'].each do |target| -%> + - targets: ['<%= target %>'] +<% if config['labels'] -%> + labels: +<% config['labels'].each do |label_name, label_value| -%> + <%= label_name %>: '<%= label_value %>' +<% end -%> +<% end -%> +<% end -%> +<% if config['scrape_interval'] -%> + scrape_interval: <%= config['scrape_interval'] %> +<% end -%> +<% if config['metrics_path'] -%> + metrics_path: <%= config['metrics_path'] %> +<% end -%> +<% if config['scheme'] -%> + scheme: <%= config['scheme'] %> +<% end -%> +<% end -%> +<% end -%>