diff --git a/plugins/virtualization/vmware/fusion_ b/plugins/virtualization/vmware/fusion_ new file mode 100755 index 00000000..1b441a56 --- /dev/null +++ b/plugins/virtualization/vmware/fusion_ @@ -0,0 +1,201 @@ +#!/usr/bin/env perl +# -*- perl -*- + +=head1 NAME + +fusion_ a Plugin for displaying VMWare Fusion Stats + +=head1 INTERPRETATION + +This plugin displays the following charts: + +1) pcpu +2) pmem +3) mem + +You can set the modes with naming the softlink: + +1) fusion_pcpu +2) fusion_pmem +3) fusion_mem + +This Plugin uses ps for gaining the data: + +> ps -A -c -o pcpu,pmem,rss=,comm,args -r | grep vmware-vmx +5,0 19,5 3271768 innoq-winxp.vmx vmware-vmx +4,6 10,7 1801768 Gateway.vmx vmware-vmx +2,3 5,8 976288 Jenkins.vmx vmware-vmx +2,0 22,6 3784144 Mac_OS_X_10.9.vmx vmware-vmx +0,0 0,0 620 grep vmware-vmx grep + +So the Output should be pretty standard about all MacOS/Fusion Versions. + +=head1 CONFIGURATION + +No Configuration necessary! + +TODO: +still a bug with getting pcpu,pmem,rss=,comm as an output, have filter it with if( $vm[3] =~ /(? (email) + +=head1 LICENSE + +GPLv2 + +=cut + +# MAIN +use warnings; +use strict; +use File::Basename; + +# pcpu, pmem, mem +my $type = basename($0); +$type =~ s/fusion_//; + +my $cmd = "ps -A -c -o pcpu,pmem,rss=,args,comm -r | grep vmware-vmx"; +my $output = `$cmd`; +my @lines=split(/\n/,$output); + +if ( exists $ARGV[0] and $ARGV[0] eq "config" ) { + my $lcount = 0; + my $base_config = "graph_category VMware Fusion\n"; + + if( $type eq "pcpu" ) { + print $base_config; + print "graph_args --base 1000 -l 0 -u 100 -r\n"; + print "graph_scale no\n"; + print "graph_title CPU usage in % per VM\n"; + print "graph_vlabel % of CPU usage\n"; + print "graph_info The Graph shows the CPU usage in % per VM\n"; + foreach my $line(@lines) { + if( $line =~ /(? 2 ){ + $vm[$count]=$entry; + $count++; + } + } + $vm[3] =~ s/\.vmx//; + my $cat = clean_vmname($vm[3]); + if( $cat =~ /(? 0 ){ + print $cat,"_pcpu.draw STACK\n"; + } else { + print $cat,"_pcpu.draw AREA\n"; + } + $lcount++; + print $cat,"_pcpu.label $vm[3]\n"; + print $cat,"_pcpu.type GAUGE\n"; + } + } + } + } + + if( $type eq "pmem" ) { + print $base_config; + print "graph_args --base 1000 -l 0 -u 100 -r\n"; + print "graph_scale no\n"; + print "graph_title Memory usage in % per VM\n"; + print "graph_vlabel % of Memory usage\n"; + print "graph_info The Graph shows the Memory usage in % per VM\n"; + foreach my $line(@lines) { + if( $line =~ /(? 2 ){ + $vm[$count]=$entry; + $count++; + } + } + $vm[3] =~ s/\.vmx//; + my $cat = clean_vmname($vm[3]); + if( $cat =~ /(? 0 ){ + print $cat,"_pmem.draw STACK\n"; + } else { + print $cat,"_pmem.draw AREA\n"; + } + $lcount++; + print $cat,"_pmem.label $vm[3]\n"; + print $cat,"_pmem.type GAUGE\n"; + } + } + } + } + + if( $type eq "mem" ) { + print $base_config; + print "graph_args --base 1024 -r --lower-limit 0\n"; + print "graph_title absolute Memory usage per VM\n"; + print "graph_vlabel Memory usage\n"; + print "graph_info The Graph shows the absolute Memory usage per VM\n"; + foreach my $line(@lines) { + if( $line =~ /(? 2 ){ + $vm[$count]=$entry; + $count++; + } + } + $vm[3] = clean_vmname($vm[3]); + if( $vm[3] =~ /(? 0 ){ + print "$vm[3]_mem.draw STACK\n"; + } else { + print "$vm[3]_mem.draw AREA\n"; + } + print "$vm[3]_mem.label $vm[3]\n"; + print "$vm[3]_mem.type GAUGE\n"; + $lcount++; + } + } + } + } + +} else { + foreach my $line(@lines) { + if( $line =~ /(? 2 ){ + $vm[$count]=$entry; + $count++; + } + } + $vm[3] = clean_vmname($vm[3]); + if( $vm[3] =~ /(?