X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=bindings%2Fperl%2Flib%2FCollectd%2FPlugins%2FMonitorus.pm;fp=bindings%2Fperl%2Flib%2FCollectd%2FPlugins%2FMonitorus.pm;h=7054fbfc9a561a0c16a0c1cc8249cb0e78b02f98;hb=1cf67d3e29da8ce7bdb29bc2fb8b1f0c1ca96e39;hp=0000000000000000000000000000000000000000;hpb=9caf56be59e558bc2fc4eaee3178580910fed869;p=pkg-collectd.git diff --git a/bindings/perl/lib/Collectd/Plugins/Monitorus.pm b/bindings/perl/lib/Collectd/Plugins/Monitorus.pm new file mode 100644 index 0000000..7054fbf --- /dev/null +++ b/bindings/perl/lib/Collectd/Plugins/Monitorus.pm @@ -0,0 +1,104 @@ +# +# collectd - mon.itor.us collectd plugin +# Copyright (C) 2009 Jeff Green +# +# 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; only version 2 of the License is applicable. +# +# 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 St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Authors: +# Jeff Green +# + +package Collectd::Plugins::Monitorus; + +use strict; +use warnings; + +use Collectd qw( :all ); +use LWP; +use threads::shared; + +use constant NUM_OF_INTERVALS => 90; + +my $intervalcnt :shared; +$intervalcnt=NUM_OF_INTERVALS; +my $prev_value :shared; +$prev_value=0; + +plugin_register (TYPE_READ, "monitorus", "monitorus_read"); + +sub monitorus_read +{ + my $vl = { plugin => 'monitorus', type => 'gauge' }; + + # Only retrieve a value occasionally in order to not overload mon.itor.us + if (++$intervalcnt{'values'} = [ $prev_value ]; + plugin_dispatch_values ($vl); + return 1; + } + + $intervalcnt=0; + + my $site = 'http://mon.itor.us'; + my $username = 'me@example.org'; + my $target = $site.'/user/api/'.$username.'/secretpassword'; + + my $ua = LWP::UserAgent->new; + my $req = HTTP::Request->new(GET => "$target"); + $req->header('Accept' => 'text/html'); #Accept HTML Page + + my $key; + my $res = $ua->get($target); + if ($res->is_success) {# Success....all content of page has been received + $res->content() =~ m/\[CDATA\[(.*)\]\]/; + $key = $1; + } else { + INFO("monitorus: Error in retrieving login page."); + } + + $target = $site.'/test/api/'.$key.'/testNames'; + my $testid; + $res = $ua->get($target); + if ($res->is_success) {# Success....all content of page has been received + $res->content() =~ m/get($target); + if ($res->is_success) {# Success....all content of page has been received + $res->content() =~ m/\<\/row\>\s*(\.*?sitetest_http.*?\<\/row\>)/s; + $result = $1; + $result =~ s/\.*?CDATA.*?\<\/cell\>//g; + $result =~ m|\([0-9]*)\<\/cell\>|; + $value = $1; + } else { + INFO("monitorus: Error in retrieving testsLastValues page."); + } + + $prev_value = $value; + $vl->{'values'} = [ $value ]; + plugin_dispatch_values ($vl); + + return 1; +} + +1;