coren has submitted this change and it was merged.
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(-)
Approvals:
coren: Looks good to me, approved
Petrb: Looks good to me, but someone else must approve
jenkins-bot: Verified
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: merged
Gerrit-Change-Id: I48a65620d2fa5ee0fa3d147f9157af60c44c31c3
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Tim Landscheidt <[email protected]>
Gerrit-Reviewer: Petrb <[email protected]>
Gerrit-Reviewer: Tim Landscheidt <[email protected]>
Gerrit-Reviewer: coren <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits