Filippo Giunchedi has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/310557

Change subject: [WIP] prometheus: add varnish_exporter
......................................................................

[WIP] prometheus: add varnish_exporter

Change-Id: I325ccc028da833da917514885cfa6bca998cc533
---
A modules/prometheus/manifests/varnish_exporter.pp
A 
modules/prometheus/templates/initscripts/prometheus-varnish-expor...@.systemd.erb
A modules/role/manifests/prometheus/varnish_exporter.pp
3 files changed, 74 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/57/310557/1

diff --git a/modules/prometheus/manifests/varnish_exporter.pp 
b/modules/prometheus/manifests/varnish_exporter.pp
new file mode 100644
index 0000000..39d31e7
--- /dev/null
+++ b/modules/prometheus/manifests/varnish_exporter.pp
@@ -0,0 +1,29 @@
+# Prometheus Varnish metrics exporter.
+
+# === Parameters
+#
+# [*$instance*]
+#  The varnish instance to use, passed to varnishstat -n
+#
+# [*$listen_address*]
+#  The host:port tuple to listen on, host can be omitted.
+
+class prometheus::varnish_exporter (
+    $instance  = $::hostname,
+    $listen_address = ':9131',
+) {
+    require_package('prometheus-varnish-exporter')
+
+    exec { 'mask_default_varnish_exporter':
+        command => '/bin/systemctl mask prometheus-varnish-exporter.service',
+        creates => '/etc/systemd/system/prometheus-varnish-exporter.service',
+    }
+
+    base::service_unit { "prometheus-varnish-exporter@${instance}":
+        ensure        => present,
+        refresh       => true,
+        systemd       => true,
+        template_name => 'prometheus-varnish-exporter@',
+        require       => Package['prometheus-varnish-exporter'],
+    }
+}
diff --git 
a/modules/prometheus/templates/initscripts/prometheus-varnish-expor...@.systemd.erb
 
b/modules/prometheus/templates/initscripts/prometheus-varnish-expor...@.systemd.erb
new file mode 100644
index 0000000..cc3ca2c
--- /dev/null
+++ 
b/modules/prometheus/templates/initscripts/prometheus-varnish-expor...@.systemd.erb
@@ -0,0 +1,11 @@
+[Unit]
+Description=Prometheus exporter for Varnish (instance %i)
+Documentation=https://prometheus.io/docs/introduction/overview/
+
+[Service]
+Restart=always
+User=prometheus
+ExecStart=/usr/bin/prometheus-varnish-exporter -raw -n <%= @instance %> 
-web.listen-address <%= @listen_address %>
+
+[Install]
+WantedBy=multi-user.target
diff --git a/modules/role/manifests/prometheus/varnish_exporter.pp 
b/modules/role/manifests/prometheus/varnish_exporter.pp
new file mode 100644
index 0000000..c900858
--- /dev/null
+++ b/modules/role/manifests/prometheus/varnish_exporter.pp
@@ -0,0 +1,34 @@
+# == Class: role::prometheus::varnish_exporter
+#
+# The role sets up one exporter per instance:
+#   default on tcp/9131
+#   frontend on tcp/9331 (ie. default + 200)
+
+class role::prometheus::varnish_exporter {
+    if $::realm == 'labs' {
+        $ferm_srange = '$LABS_NETWORKS'
+    } else {
+        $prometheus_nodes = hiera('prometheus_nodes')
+        $prometheus_ferm_nodes = join($prometheus_nodes, ' ')
+        $ferm_srange = "@resolve((${prometheus_ferm_nodes}))"
+    }
+
+    class { '::prometheus::varnish_exporter': }
+
+    ferm::service { 'prometheus-varnish-exporter':
+        proto  => 'tcp',
+        port   => '9131',
+        srange => $ferm_srange,
+    }
+
+    class { '::prometheus::varnish_exporter':
+        instance       => 'frontend',
+        listen_address => ':9331',
+    }
+
+    ferm::service { 'prometheus-varnish-exporter-frontend':
+        proto  => 'tcp',
+        port   => '9331',
+        srange => $ferm_srange,
+    }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/310557
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I325ccc028da833da917514885cfa6bca998cc533
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Filippo Giunchedi <fgiunch...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to