Monitoring Xen via SNMP
I wanted to monitor disk I/O and CPU usage for xen's without running SNMP on each xen domain. I couldn't find anything out of the box to do this (I'm the first do want to do this? surely there's something?!) - so... here's my own way of doing it. It involved hooking a script in to your dom0's snmp server, and then monitoring whatever tool you like. I have a download at the end of the post for cacti.
This article has been updated: Monitoring Xen via SNMP - update
On your Xen host, we'll create a script that outputs data from xentop... and here it is:
perl really isn't a strong point for me, so the below might be badly written, sorry
#!/usr/bin/perl -w use strict; # declare... sub trim($); # we need to run 2 itterations because CPU stats show 0% on the first, and I'm putting .1 second betwen them to speed it up my @result = split(/\n/, `xentop -b -i 2 -d.1`); # remove the first line shift(@result); # this looks for the start of the 2nd output section foreach my $line (@result) { if ($line =~ m/^xentop - /) { last; } shift(@result); } # the next 3 lines are headings.. shift(@result); shift(@result); shift(@result); foreach my $line (@result) { my @xenInfo = split(/[\t ]+/, trim($line)); printf("name: %s, cpu_sec: %d, cpu_percent: %.2f, vbd_rd: %d, vbd_wr: %d\n", $xenInfo[0], $xenInfo[2], $xenInfo[3], $xenInfo[14], $xenInfo[15] ); } # trims leading and trailing whitespace sub trim($) { my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return $string; }
Next step is making this output available via SNMP, so add this to your snmpd.conf
extend xen-stats /usr/bin/sudo /usr/local/bin/xen_stats.pl
Restart SNMP, and test:
snmpwalk -v2c -c public srv-10 NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"xen-stats\"
To get graphs showing in cacti, you can use my templates and script that I've packaged up here for you:
xen-cacti-stats.tar.gz
June 18th, 2008 - 21:57
Hi,
thanks for that nice work, but cacti says: Could not locate XML file. in the data querie..
The xml is missing in your package. Please export it and reupp, please.
Many thanks
July 2nd, 2008 - 13:40
Hi,
I love your solution, but I get the following error in cacti after importing your xml’s and adding associate the data query:
+ Running data query [10].
+ Found type = ’4 ‘[script query].
+ Could not find data query XML file at ‘/usr/share/webapps/cacti/0.8.7b-r2/htdocs/resource/script_queries/xen_stats.xml’
+ Error parsing XML file into an array.
+ Could not find data query XML file at ‘/usr/share/webapps/cacti/0.8.7b-r2/htdocs/resource/script_queries/xen_stats.xml’
+ Could not find data query XML file at ‘/usr/share/webapps/cacti/0.8.7b-r2/htdocs/resource/script_queries/xen_stats.xml’
+ Could not find data query XML file at ‘/usr/share/webapps/cacti/0.8.7b-r2/htdocs/resource/script_queries/xen_stats.xml’
Please contact me, cause I’d really like to implement this!
July 22nd, 2008 - 23:22
I had to comment out the 3 lines to skip the “headers”. On my 3.1.x install of xen community, this was removing the first 3 domains from my results.
October 10th, 2008 - 10:47
Hi,
I have the sma eproblem as Tom – it looks like the xen_stats.xml script query isn’t included in the tarball. Any chance of adding it, or uploading it ?
Many thanks,
-Mark