Tim Landscheidt has uploaded a new change for review.

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


Change subject: Add Ganglia statistics to grid engine.
......................................................................

Add Ganglia statistics to grid engine.

Statistics for the grid jobs in pending, running and error state are
forwarded every minute to Ganglia via gmetric under the "SGE"
grouping.

Bug: 48338
Change-Id: I48a65620d2fa5ee0fa3d147f9157af60c44c31c3
---
A modules/gridengine/files/grid-ganglia-report
M modules/gridengine/manifests/master.pp
2 files changed, 56 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/11/64511/1

diff --git a/modules/gridengine/files/grid-ganglia-report 
b/modules/gridengine/files/grid-ganglia-report
new file mode 100755
index 0000000..86b54c1
--- /dev/null
+++ b/modules/gridengine/files/grid-ganglia-report
@@ -0,0 +1,34 @@
+#!/usr/bin/perl -w
+
+use encoding 'utf8';
+use strict;
+use warnings;
+
+use XML::LibXML;
+
+# Read qstat information into XML DOM.
+open (QSTAT, '-|', '/usr/bin/qstat', '-u', '*', '-xml') or die ("Couldn't read 
qstat");
+my $DOM = XML::LibXML->load_xml (IO => *QSTAT) or die ($!);
+close (QSTAT);
+
+# Initialize counters.
+my %Counters = ('sge_pending' => 0,
+                'sge_running' => 0,
+                'sge_error'   => 0);
+
+# Iterate over all jobs.
+foreach my $Node ($DOM->findnodes (q!//job_list/state!)) {
+    my $State = $Node->textContent ();
+    if ($State =~ /^qw/) {
+        $Counters {'sge_pending'}++;
+    } elsif ($State =~ /[rRt]/) {
+        $Counters {'sge_running'}++;
+    } elsif ($State =~ /E/) {
+        $Counters {'sge_error'}++;
+    }
+}
+
+# Update Ganglia.
+for my $Name (keys (%Counters)) {
+    system ('/usr/bin/gmetric', '--group', 'SGE', '--name', $Name, '--value', 
$Counters {$Name}, '--type', 'uint16') and die ($!);
+}
diff --git a/modules/gridengine/manifests/master.pp 
b/modules/gridengine/manifests/master.pp
index eb7cd12..e31e491 100644
--- a/modules/gridengine/manifests/master.pp
+++ b/modules/gridengine/manifests/master.pp
@@ -1,12 +1,28 @@
-# gridengine.pp
-
+# gridengine/master.pp
 
 class gridengine::master {
-       class { 'gridengine':
-               gridmaster => $fqdn,
-       }
+  class { 'gridengine':
+       gridmaster => $fqdn,
+  }
 
   package { "gridengine-master":
-    ensure => latest,
+       ensure => latest,
   }
+
+  class monitoring {
+       file { "/usr/local/sbin/grid-ganglia-report":
+         mode => 0555,
+         source => "puppet:///files/gridengine/grid-ganglia-report",
+         ensure => present;
+       }
+
+       cron { "grid-ganglia-report":
+         command => "/usr/local/sbin/grid-ganglia-report",
+         user => root,
+         ensure => present,
+         require => File["/usr/local/sbin/grid-ganglia-report"];
+       }
+  }
+
+  include monitoring
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I48a65620d2fa5ee0fa3d147f9157af60c44c31c3
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Tim Landscheidt <t...@tim-landscheidt.de>

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

Reply via email to