Filippo Giunchedi has submitted this change and it was merged.

Change subject: cassandra: alternative metrics collector
......................................................................


cassandra: alternative metrics collector

Add a new trebuchet-deployed repository to ship a JMX-based metrics collector
which pushes metrics to graphite. We've found the built-in dropwizard metrics
reporter to be unreliable, given that JMX is used in cassandra to be the source
of truth this reporter should provide much more reliable metrics.

Bug: T104208
Change-Id: I370c699222002b62352ddcae3a0e73b72329b4b9
---
M hieradata/common/role/deployment.yaml
A modules/cassandra/files/cassandra-metrics-collector
M modules/cassandra/manifests/metrics.pp
3 files changed, 70 insertions(+), 8 deletions(-)

Approvals:
  Filippo Giunchedi: Verified; Looks good to me, approved
  Eevans: Looks good to me, but someone else must approve
  Alexandros Kosiaris: Looks good to me, but someone else must approve



diff --git a/hieradata/common/role/deployment.yaml 
b/hieradata/common/role/deployment.yaml
index 6f3323e..007697d 100644
--- a/hieradata/common/role/deployment.yaml
+++ b/hieradata/common/role/deployment.yaml
@@ -88,3 +88,6 @@
   dropwizard/metrics:
     gitfat_enabled: true
     upstream: 
https://gerrit.wikimedia.org/r/operations/software/dropwizard-metrics
+  cassandra/metrics-collector:
+    gitfat_enabled: true
+    upstream: 
https://gerrit.wikimedia.org/r/operations/software/cassandra-metrics-collector
diff --git a/modules/cassandra/files/cassandra-metrics-collector 
b/modules/cassandra/files/cassandra-metrics-collector
new file mode 100755
index 0000000..956cdcd
--- /dev/null
+++ b/modules/cassandra/files/cassandra-metrics-collector
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+set -e
+set -u
+
+jarfile="${JARFILE:-/usr/local/lib/cassandra-metrics-collector/cassandra-metrics-collector.jar}"
+graphite_host=localhost
+graphite_port=2003
+metric_prefix="cassandra.$(hostname)"
+
+usage() {
+    echo "usage: $(basename $0) --graphite-host HOST --graphite-port PORT 
--prefix PREFIX"
+    exit 1
+}
+
+OPTS=$(getopt -o h --long help,graphite-host:,graphite-port:,prefix: \
+             -n "$0" -- "$@")
+if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
+eval set -- "$OPTS"
+
+while true; do
+  case "$1" in
+    --graphite-host ) graphite_host="$2"
+    shift 2 ;;
+    --graphite-port ) graphite_port="$2"
+    shift 2 ;;
+    --prefix ) metric_prefix="$2"
+    shift 2 ;;
+    -h | --help ) usage ;;
+    -- ) shift; break ;;
+    * ) break ;;
+  esac
+done
+
+java -jar "$jarfile" localhost 7199 ${graphite_host} ${graphite_port} 
${metric_prefix}
diff --git a/modules/cassandra/manifests/metrics.pp 
b/modules/cassandra/manifests/metrics.pp
index 28b03a8..8a0a2cd 100644
--- a/modules/cassandra/manifests/metrics.pp
+++ b/modules/cassandra/manifests/metrics.pp
@@ -26,21 +26,45 @@
     validate_string($graphite_host)
     validate_string($graphite_port)
 
-    package { 'dropwizard/metrics':
+    package { 'cassandra/metrics-collector':
         ensure   => present,
         provider => 'trebuchet',
     }
 
-    file { '/usr/share/cassandra/lib/metrics-graphite.jar':
+    file { '/usr/local/lib/cassandra-metrics-collector':
+        owner  => 'root',
+        group  => 'root',
+        mode   => '0555',
+        ensure => 'directory',
+    }
+
+    file { 
'/usr/local/lib/cassandra-metrics-collector/cassandra-metrics-collector.jar':
         ensure => 'link',
-        target => 
'/srv/deployment/dropwizard/metrics/lib/metrics-graphite-2.2.0.jar',
-        require => Package['dropwizard/metrics'],
+        target => 
'/srv/deployment/cassandra/metrics-collector/lib/cassandra-metrics-collector-1.0.0-20150707.171846-4-jar-with-dependencies.jar',
+        require => Package['cassandra/metrics-collector'],
+    }
+
+    file { '/usr/local/bin/cassandra-metrics-collector':
+        source => 
"puppet:///modules/${module_name}/cassandra-metrics-collector",
+        owner   => 'root',
+        group   => 'root',
+        mode    => '0555',
+    }
+
+    cron { 'cassandra-metrics-collector':
+        ensure  => present,
+        user    => 'cassandra',
+        command => "flock --wait 2 /usr/local/bin/cassandra-metrics-collector 
--graphite-host ${graphite_host} --graphite-port ${graphite_port} --prefix 
${graphite_prefix}",
+        minute  => '*',
+        require => Package['cassandra/metrics-collector'],
+    }
+
+    # built-in cassandra metrics reporter, T104208
+    file { '/usr/share/cassandra/lib/metrics-graphite.jar':
+        ensure => absent,
     }
 
     file { '/etc/cassandra/metrics.yaml':
-        content => template("${module_name}/metrics.yaml.erb"),
-        owner   => 'cassandra',
-        group   => 'cassandra',
-        mode    => '0444',
+        ensure => absent,
     }
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I370c699222002b62352ddcae3a0e73b72329b4b9
Gerrit-PatchSet: 7
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: Alexandros Kosiaris <akosia...@wikimedia.org>
Gerrit-Reviewer: Eevans <eev...@wikimedia.org>
Gerrit-Reviewer: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: GWicke <gwi...@wikimedia.org>
Gerrit-Reviewer: Mobrovac <mobro...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to