Eevans has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/378100 )

Change subject: WIP: Disable cassandra-metrics-collector when Prometheus agent 
is enabled
......................................................................

WIP: Disable cassandra-metrics-collector when Prometheus agent is enabled

Moves the `jmx_exporter_enabled` variable up to the cassandra class
where it can be assigned once for a cluster, and then passed into
`cassandra::metrics` to disable the systemd unit.

Bug: T171772
Change-Id: I3ce1a963df3ca89c7a119675820d95c27934aaf9
---
M hieradata/role/common/restbase/dev_cluster.yaml
M hieradata/role/common/restbase/production_ng.yaml
M hieradata/role/common/restbase/test_cluster.yaml
M modules/cassandra/manifests/init.pp
M modules/cassandra/manifests/instance.pp
M modules/cassandra/manifests/metrics.pp
M modules/profile/manifests/cassandra.pp
7 files changed, 22 insertions(+), 29 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/00/378100/1

diff --git a/hieradata/role/common/restbase/dev_cluster.yaml 
b/hieradata/role/common/restbase/dev_cluster.yaml
index 25b274e..98f6e94 100644
--- a/hieradata/role/common/restbase/dev_cluster.yaml
+++ b/hieradata/role/common/restbase/dev_cluster.yaml
@@ -89,7 +89,6 @@
         - /srv/cassandra-a/data_1
         - /srv/cassandra-a/data_2
         - /srv/cassandra-a/data_3
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.64.0.168
       data_file_directories:
@@ -97,33 +96,28 @@
         - /srv/cassandra-b/data_1
         - /srv/cassandra-b/data_2
         - /srv/cassandra-b/data_3
-      jmx_exporter_enabled: true
   "restbase-dev1005.eqiad.wmnet":
     a:
       listen_address: 10.64.16.97
       data_file_directories:
         - /srv/cassandra-a/data_0
         - /srv/cassandra-a/data_1
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.64.16.98
       data_file_directories:
         - /srv/cassandra-b/data_0
         - /srv/cassandra-b/data_1
-      jmx_exporter_enabled: true
   "restbase-dev1006.eqiad.wmnet":
     a:
       listen_address: 10.64.48.168
       data_file_directories:
         - /srv/cassandra-a/data_0
         - /srv/cassandra-a/data_1
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.64.48.169
       data_file_directories:
         - /srv/cassandra-b/data_0
         - /srv/cassandra-b/data_1
-      jmx_exporter_enabled: true
 
 profile::cassandra::settings:
   start_rpc: 'true'
@@ -147,6 +141,7 @@
     internode_encryption: dc
     permissions_validity_in_ms: 600000
     trickle_fsync: false
+    jmx_exporter_enabled: true
 
 service::configuration::log_dir: "/var/log"
 
diff --git a/hieradata/role/common/restbase/production_ng.yaml 
b/hieradata/role/common/restbase/production_ng.yaml
index 7c8c7e2..8ca3f7f 100644
--- a/hieradata/role/common/restbase/production_ng.yaml
+++ b/hieradata/role/common/restbase/production_ng.yaml
@@ -54,7 +54,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-a/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-a/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-a/saved_caches
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.64.32.195
       data_file_directories:
@@ -67,7 +66,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-b/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-b/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-b/saved_caches
-      jmx_exporter_enabled: true
     c:
       listen_address: 10.64.32.196
       data_file_directories:
@@ -80,7 +78,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-c/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-c/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-c/saved_caches
-      jmx_exporter_enabled: true
   "restbase1009.eqiad.wmnet":
     a:
       listen_address: 10.64.48.120
@@ -94,7 +91,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-a/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-a/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-a/saved_caches
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.64.48.130
       data_file_directories:
@@ -107,7 +103,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-b/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-b/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-b/saved_caches
-      jmx_exporter_enabled: true
     c:
       listen_address: 10.64.48.131
       data_file_directories:
@@ -120,7 +115,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-c/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-c/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-c/saved_caches
-      jmx_exporter_enabled: true
   "restbase1010.eqiad.wmnet":
     a:
       listen_address: 10.64.0.114
@@ -134,7 +128,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-a/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-a/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-a/saved_caches
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.64.0.115
       data_file_directories:
@@ -147,7 +140,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-b/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-b/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-b/saved_caches
-      jmx_exporter_enabled: true
     c:
       listen_address: 10.64.0.116
       data_file_directories:
@@ -160,7 +152,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-c/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-c/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-c/saved_caches
-      jmx_exporter_enabled: true
   "restbase2001.codfw.wmnet":
     a:
       listen_address: 10.192.16.162
@@ -174,7 +165,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-a/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-a/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-a/saved_caches
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.192.16.163
       data_file_directories:
@@ -187,7 +177,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-b/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-b/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-b/saved_caches
-      jmx_exporter_enabled: true
     c:
       listen_address: 10.192.16.164
       data_file_directories:
@@ -200,7 +189,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-c/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-c/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-c/saved_caches
-      jmx_exporter_enabled: true
   "restbase2003.codfw.wmnet":
     a:
       listen_address: 10.192.32.134
@@ -214,7 +202,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-a/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-a/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-a/saved_caches
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.192.32.135
       data_file_directories:
@@ -227,7 +214,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-b/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-b/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-b/saved_caches
-      jmx_exporter_enabled: true
     c:
       listen_address: 10.192.32.136
       data_file_directories:
@@ -240,7 +226,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-c/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-c/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-c/saved_caches
-      jmx_exporter_enabled: true
   "restbase2005.codfw.wmnet":
     a:
       listen_address: 10.192.48.46
@@ -254,7 +239,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-a/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-a/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-a/saved_caches
-      jmx_exporter_enabled: true
     b:
       listen_address: 10.192.48.47
       data_file_directories:
@@ -267,7 +251,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-b/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-b/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-b/saved_caches
-      jmx_exporter_enabled: true
     c:
       listen_address: 10.192.48.48
       data_file_directories:
@@ -280,7 +263,6 @@
       commitlog_directory: /srv/cassandra/instance-data/cassandra-c/commitlog
       hints_directory: /srv/cassandra/instance-data/cassandra-c/hints
       saved_caches_directory: 
/srv/cassandra/instance-data/cassandra-c/saved_caches
-      jmx_exporter_enabled: true
 
 
 profile::cassandra::settings:
@@ -304,6 +286,7 @@
     trickle_fsync: false
     client_encryption_enabled: true
     disk_failure_policy: best_effort
+    jmx_exporter_enabled: true
 
 
 #
diff --git a/hieradata/role/common/restbase/test_cluster.yaml 
b/hieradata/role/common/restbase/test_cluster.yaml
index 9b73a48..bc4358c 100644
--- a/hieradata/role/common/restbase/test_cluster.yaml
+++ b/hieradata/role/common/restbase/test_cluster.yaml
@@ -78,15 +78,12 @@
   "cerium.eqiad.wmnet":
     a:
       listen_address: 10.64.16.153
-      jmx_exporter_enabled: true
   "praseodymium.eqiad.wmnet":
     a:
       listen_address: 10.64.16.188
-      jmx_exporter_enabled: true
   "xenon.eqiad.wmnet":
     a:
       listen_address: 10.64.0.202
-      jmx_exporter_enabled: true
   "restbase-test2001.codfw.wmnet":
     a:
       listen_address: 10.192.16.154
@@ -126,6 +123,7 @@
     permissions_validity_in_ms: 600000
     trickle_fsync: false
     client_encryption_enabled: true
+    jmx_exporter_enabled: true
 
 service::configuration::log_dir: "/var/log"
 
diff --git a/modules/cassandra/manifests/init.pp 
b/modules/cassandra/manifests/init.pp
index bad7df4..a168a23 100644
--- a/modules/cassandra/manifests/init.pp
+++ b/modules/cassandra/manifests/init.pp
@@ -113,6 +113,9 @@
 #   Cassandra superuser password.
 #   Default: cassandra
 #
+# [*jmx_exporter_enabled*]
+#   Whether or not to enable the Prometheus JMX exporter agent.
+#   Default: false
 class cassandra (
     $cluster_name            = 'Test Cluster',
     $tls_cluster_name        = undef,
@@ -135,6 +138,7 @@
     $jbod_devices            = [],
     $super_username          = 'cassandra',
     $super_password          = 'cassandra',
+    $jmx_exporter_enabled    = false,
 ) {
     validate_string($cluster_name)
 
@@ -201,6 +205,7 @@
         start_rpc             => $start_rpc,
         super_username        => $super_username,
         super_password        => $super_password,
+        jmx_exporter_enabled  => $jmx_exporter_enabled
     }
 
     if empty($instances) {
diff --git a/modules/cassandra/manifests/instance.pp 
b/modules/cassandra/manifests/instance.pp
index 955d16f..8a4c7f0 100644
--- a/modules/cassandra/manifests/instance.pp
+++ b/modules/cassandra/manifests/instance.pp
@@ -195,6 +195,7 @@
     $start_rpc,
     $super_username,
     $super_password,
+    $jmx_exporter_enabled,
 
     # the following parameters need specific default values for single instance
     $config_directory       = "/etc/cassandra-${title}",
@@ -213,7 +214,6 @@
 
     # the following parameters have defaults that are sane both for single-
     # and multi-instances
-    $jmx_exporter_enabled = false,
     $num_tokens                       = 256,
     $authenticator                    = true,
     $authorizor                       = true,
diff --git a/modules/cassandra/manifests/metrics.pp 
b/modules/cassandra/manifests/metrics.pp
index 84bb372..ae5fb3d 100644
--- a/modules/cassandra/manifests/metrics.pp
+++ b/modules/cassandra/manifests/metrics.pp
@@ -24,6 +24,10 @@
 # [*whitelist*]
 #   Array of strings, each is a regular expression of metric names to whitelist
 #   (i.e. send to graphite, even if matched by a blacklist entry)
+#
+# [*enabled*]
+#   Whether to enable Graphite metrics collection
+#   Default: true
 
 class cassandra::metrics(
     $graphite_prefix = "cassandra.${::hostname}",
@@ -31,6 +35,7 @@
     $graphite_port   = '2003',
     $blacklist       = undef,
     $whitelist       = undef,
+    $enabled         = true,
 ) {
     validate_string($graphite_prefix)
     validate_string($graphite_host)
@@ -96,8 +101,14 @@
         user   => 'cassandra',
     }
 
+    if $enabled {
+        $ensure = present
+    } else {
+        $ensure = absent
+    }
+
     systemd::service { 'cassandra-metrics-collector':
-        ensure  => present,
+        ensure  => $ensure,
         content => systemd_template('cassandra-metrics-collector'),
         restart => true,
         require => [
diff --git a/modules/profile/manifests/cassandra.pp 
b/modules/profile/manifests/cassandra.pp
index 217724d..90089bc 100644
--- a/modules/profile/manifests/cassandra.pp
+++ b/modules/profile/manifests/cassandra.pp
@@ -32,6 +32,7 @@
         graphite_host => $graphite_host,
         whitelist     => $metrics_whitelist,
         blacklist     => $metrics_blacklist,
+        enabled       => $cassandra_settings['jmx_exporter_enabled'],
     }
     class { '::cassandra::logging': }
     class { '::cassandra::twcs': }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3ce1a963df3ca89c7a119675820d95c27934aaf9
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Eevans <eev...@wikimedia.org>

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

Reply via email to