Dzahn has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/382916 )

Change subject: exim4/ganglia: mx,otrs,lists,phab: rm Ganglia exim stats
......................................................................


exim4/ganglia: mx,otrs,lists,phab: rm Ganglia exim stats

Bug: T177225
Bug: T179302
Change-Id: Icb434fedb9d32e742a3ac2116f328f97d7e9dfec
---
D modules/exim4/files/ganglia/exim-to-gmetric
D modules/exim4/manifests/ganglia.pp
M modules/otrs/manifests/mail.pp
M modules/profile/manifests/lists.pp
M modules/role/manifests/mail/mx.pp
M modules/role/manifests/phabricator_server.pp
6 files changed, 0 insertions(+), 270 deletions(-)

Approvals:
  jenkins-bot: Verified
  Dzahn: Looks good to me, approved



diff --git a/modules/exim4/files/ganglia/exim-to-gmetric 
b/modules/exim4/files/ganglia/exim-to-gmetric
deleted file mode 100644
index e32276e..0000000
--- a/modules/exim4/files/ganglia/exim-to-gmetric
+++ /dev/null
@@ -1,246 +0,0 @@
-#! /usr/bin/perl
-#
-# Exim stats grabber for NET-SNMP
-#
-# Based on a script by Matthew Newton Copyright (c) University of Leicester,
-# 2005
-#
-# Slightly modified for Timico (http://timico.net) by Ian P. Christian.
-#
-# Signficantly modified into a gmetric collector for WMF internal use by Jeff
-# Green 12/2011
-#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-use strict;
-use Sys::Syslog;
-use Fcntl ':flock';
-
-my $conf = {
-       'statefile' => '/tmp/eximstats.state',
-       'mainlog' => '/var/log/exim4/mainlog',
-       'mainlogold' => '/var/log/exim4/mainlog.1',
-       'lockfile' => '/tmp/eximstats.lock',
-       'ident' => $0,
-       'interval' => 60,
-};
-
-my $metric = {
-       'message_in' => {
-               'name' => 'exim messages in',
-               'type' => 'uint32',
-               'units' => 'messages',
-               'value' => 0,
-               'gmax' => $conf->{'interval'} * 1.5,
-       },
-       'message_out' => {
-               'name' => 'exim messages out',
-               'type' => 'uint32',
-               'units' => 'messages',
-               'value' => 0,
-               'gmax' => $conf->{'interval'} * 1.5,
-       },
-       'delivery_deferred' => {
-               'name' => 'exim deferred delivery',
-               'type' => 'uint32',
-               'units' => 'messages',
-               'value' => 0,
-               'gmax' => $conf->{'interval'} * 1.5,
-       },
-       'delivery_failed' => {
-               'name' => 'exim failed delivery',
-               'type' => 'uint32',
-               'units' => 'messages',
-               'value' => 0,
-               'gmax' => $conf->{'interval'} * 1.5,
-       },
-       'delivery_suppressed' => {
-               'name' => 'exim suppressed delivery',
-               'type' => 'uint32',
-               'units' => 'messages',
-               'value' => 0,
-               'gmax' => $conf->{'interval'} * 1.5,
-       },
-       'queued_messages' => {
-               'name' => 'exim queued messages',
-               'type' => 'uint32',
-               'units' => 'messages',
-               'value' => 0,
-               'gmax' => $conf->{'interval'} * 1.5,
-       },
-       'queued_messages_bounce' => {
-               'name' => 'exim queued bounce messages',
-               'type' => 'uint32',
-               'units' => 'messages',
-               'value' => 0,
-               'gmax' => $conf->{'interval'} * 1.5,
-       },
-};
-
-# lock to prevent collisions
-my $error = setlockfile('set');
-failboat("one: $error") if ($error);
-
-# read state file and figure out where to start reading logs
-my $state => {
-       'seek' => 0,
-       'inode' => inode_number($conf->{'mainlog'}),
-};
-if (-r $conf->{'statefile'}) {
-       open STATE, "< $conf->{'statefile'}";
-       while (<STATE>) {
-               if (/^(inode|seek)=(\d+)$/) {
-                       $state->{$1} = $2;
-               }
-       }
-       close STATE;
-}
-
-# read the previous mainlog if we can't seek to the appropriate spot in the 
current log
-open LOG, "< $conf->{'mainlog'}" or failboat("cannot open exim log file 
$conf->{'mainlog'}: $!");
-my $cantseek = 1 unless (seek(LOG, $state->{'seek'}, 0));
-close LOG;
-if ($state->{'inode'} != inode_number($conf->{'mainlog'}) or $cantseek or 
$state->{'inode'} == inode_number($conf->{'mainlogold'})) {
-       read_log($conf->{'mainlogold'}, $state->{'seek'});
-       $state->{'inode'} = inode_number($conf->{'mainlog'});
-       $state->{'seek'} = 0;
-}
-
-# read the mainlog
-$state->{'seek'} = read_log($conf->{'mainlog'}, $state->{'seek'});
-
-# collect exim queue counts
-read_queue();
-
-# write state file
-open STATE, "> $conf->{'statefile'}";
-for my $key (keys %{$state}) {
-       print STATE "$key=$state->{$key}\n";
-}
-close STATE;
-
-# puke le outputz
-for my $m (keys %{$metric}) {
-       my $error = `/usr/bin/gmetric -n '$metric->{$m}->{'name'}' -v 
$metric->{$m}->{'value'} -t $metric->{$m}->{'type'} -u $metric->{$m}->{'units'} 
2>&1`;
-       failboat("gmetric failed: $error") if ($error);
-}
-
-setlockfile('unset');
-
-exit;
-
-
-
-
-# SUBROUTINES
-
-sub inode_number {
-       return (stat(shift))[1];
-}
-
-sub read_log {
-       my ($file, $seek) = @_;
-       open LOG, "< $file" or failboat("cannot open exim log file $file: $!");
-       unless (seek(LOG, $seek, 0)) {
-               close LOG;
-               return $seek;
-       }
-       my ($prevpos,$pos,$line,$prevline);
-       while ($line = <LOG>) {
-               if (defined $prevline) {
-                       if ($line =~ /<=/) {
-                               $metric->{'message_in'}->{'value'}++;
-                       } elsif ($line =~ /[-=]>/) {
-                               $metric->{'message_out'}->{'value'}++;
-                       } elsif ($line =~ /==/) {
-                               $metric->{'delivery_deferred'}->{'value'}++;
-                       } elsif ($line =~ /\*\*/) {
-                               $metric->{'delivery_failed'}->{'value'}++;
-                       } elsif ($line =~ /\*>/) {
-                               $metric->{'delivery_suppressed'}->{'value'}++;
-                       }
-               }
-               $prevline = $line;
-               $prevpos = $pos;
-               $pos = tell LOG;
-       }
-       close LOG;
-       $prevpos = $state->{'seek'} unless defined $prevpos;
-       return $prevpos;
-}
-
-
-sub read_queue {
-       open Q, "/usr/sbin/exim -bp |" or return 0;
-       while (<Q>) {
-               $metric->{'queued_messages'}->{'value'}++ if /\</;
-               $metric->{'queued_messages_bounce'}->{'value'}++ if /\<\>/;
-       }
-       close Q;
-       return 1;
-}
-
-# SET LOCKFILE
-sub setlockfile {
-       my $action = shift;
-       if ($action eq 'set') {
-               return("$0 already running") if (running($0));
-               open LOCK, "> $conf->{'lockfile'}";
-               flock (LOCK, 2) or return("$0 already running?");
-               print LOCK $$;
-               close LOCK;
-       } else {
-               unlink $conf->{'lockfile'};
-       }
-       return;
-} 
-
-# check for lockfile
-#  -> if found, check for process matching PID
-#      -> if no matching process, whack the lockfile
-sub running {
-       my $prog = shift;
-       $prog =~ s/^(.*\/)+//g;
-       if (-e $conf->{'lockfile'}) {
-               open LOCK, $conf->{'lockfile'};
-               my $checkpid = <LOCK>;
-               close LOCK;
-               if ($checkpid) {
-                       chomp $checkpid;
-                       if (`ps -p $checkpid -o command= | grep $prog`) {
-                               return $checkpid;
-                       } else {
-                               printlog("removed stale lockfile for $prog 
($checkpid)",'warning');
-                               unlink $conf->{'lockfile'};
-                       }
-               }
-       }
-       return;
-}
-
-sub failboat {
-       my $msg = shift;
-       printlog("died: $msg");
-       exit 1;
-}
-
-sub printlog {
-       my $msg = $_[0] ? $_[0] : '';
-       my $severity = $_[1] ? $_[1] : 'info'; # notice warning ERR etc.
-       Sys::Syslog::setlogsock('unix');
-       Sys::Syslog::openlog($conf->{'ident'},'ndelay,pid','user');
-       Sys::Syslog::syslog($severity,$msg);
-       Sys::Syslog::closelog();
-}
-
diff --git a/modules/exim4/manifests/ganglia.pp 
b/modules/exim4/manifests/ganglia.pp
deleted file mode 100644
index ac948d2..0000000
--- a/modules/exim4/manifests/ganglia.pp
+++ /dev/null
@@ -1,18 +0,0 @@
-# == Class exim4::ganglia
-# This installs a Ganglia plugin for exim4, using gmetric
-#
-class exim4::ganglia {
-    file { '/usr/local/bin/exim-to-gmetric':
-        owner  => 'root',
-        group  => 'root',
-        mode   => '0755',
-        source => 'puppet:///modules/exim4/ganglia/exim-to-gmetric',
-    }
-
-    cron { 'collect_exim_stats_via_gmetric':
-        ensure  => present,
-        user    => 'root',
-        command => '/usr/local/bin/exim-to-gmetric',
-        require => File['/usr/local/bin/exim-to-gmetric'],
-    }
-}
diff --git a/modules/otrs/manifests/mail.pp b/modules/otrs/manifests/mail.pp
index 63d4257..a441230 100644
--- a/modules/otrs/manifests/mail.pp
+++ b/modules/otrs/manifests/mail.pp
@@ -35,8 +35,6 @@
         proxy => "webproxy.${::site}.wmnet:8080",
     }
 
-    include ::exim4::ganglia
-
     class { '::exim4':
         variant => 'heavy',
         config  => template('otrs/exim4.conf.otrs.erb'),
diff --git a/modules/profile/manifests/lists.pp 
b/modules/profile/manifests/lists.pp
index 4de610f..6428644 100644
--- a/modules/profile/manifests/lists.pp
+++ b/modules/profile/manifests/lists.pp
@@ -2,7 +2,6 @@
     include ::network::constants
     include ::mailman
     include ::privateexim::listserve
-    include ::exim4::ganglia
 
     mailalias { 'root': recipient => 'r...@wikimedia.org' }
 
diff --git a/modules/role/manifests/mail/mx.pp 
b/modules/role/manifests/mail/mx.pp
index e7cee88..d3e54f8 100644
--- a/modules/role/manifests/mail/mx.pp
+++ b/modules/role/manifests/mail/mx.pp
@@ -63,8 +63,6 @@
         require => Class['spamassassin'],
     }
 
-    include exim4::ganglia
-
     file { '/etc/exim4/defer_domains':
         ensure  => present,
         owner   => 'root',
diff --git a/modules/role/manifests/phabricator_server.pp 
b/modules/role/manifests/phabricator_server.pp
index cbb85df..6f15a33 100644
--- a/modules/role/manifests/phabricator_server.pp
+++ b/modules/role/manifests/phabricator_server.pp
@@ -15,5 +15,4 @@
     include ::profile::phabricator::main
     include ::phabricator::monitoring
     include ::phabricator::mpm
-    include ::exim4::ganglia
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Icb434fedb9d32e742a3ac2116f328f97d7e9dfec
Gerrit-PatchSet: 4
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Dzahn <dz...@wikimedia.org>
Gerrit-Reviewer: Dzahn <dz...@wikimedia.org>
Gerrit-Reviewer: Faidon Liambotis <fai...@wikimedia.org>
Gerrit-Reviewer: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: Giuseppe Lavagetto <glavage...@wikimedia.org>
Gerrit-Reviewer: Herron <kher...@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