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