diff --git a/plugins/other/geowebcache-cache-hits-ratio b/plugins/other/geowebcache-cache-hits-ratio new file mode 100755 index 00000000..17253e4c --- /dev/null +++ b/plugins/other/geowebcache-cache-hits-ratio @@ -0,0 +1,120 @@ +#!/usr/bin/perl +# -*- perl -*- + +# Author Rodolphe Quiédeville +# Licence : GPLv2 +# Code based on tomcat_volume plugin by +# Rune Nordbøe Skillingstad + +=head1 NAME + +geowebcache_volume - Plugin to monitor the cache hit ratio of GeoWebCache +servers. + +version 1.0.1 + +=head1 CONFIGURATION + +The following environment variables are used by this plugin + +=over 4 + +=item timeout + +Connection timeout + +=item url + +Override default status-url + +=item ports + +HTTP port numbers + +=back + +=head2 CONFIGURATION EXAMPLE + + [geowebcache_ratio] + env.url localhost:%d/geoserver/gwc + env.ports 8081 + +=head1 AUTHOR + +Rodolphe Quiédeville + +=head1 USAGE + +Needs access to +http://localhost:8080/gwc (or modify the address for another host). + +If geowebcache is used inside GeoServer the url will be +http://localhost:8080/geoserver/gwc + +GeoWebCache 1.2 or higher. + +Tip: To see if it's already set up correctly, just run this plugin +with the parameter "autoconf". If you get a "yes", everything should +work like a charm already. + +=head1 MAGIC MARKERS + + #%# family=contrib + #%# capabilities=autoconf + +=cut + +use strict; + +my $ret = undef; + +if(!eval "require LWP::UserAgent;") { + $ret = "LWP::UserAgent not found"; +} + +my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/geowebcache/home"; +my $PORT = exists $ENV{'ports'} ? $ENV{'ports'} : 8080; +my $TIMEOUT = exists $ENV{'timeout'} ? $ENV{'timeout'} : 30; + +my $url = sprintf $URL, $PORT; + +if(exists $ARGV[0] and $ARGV[0] eq "autoconf") { + if($ret) { + print "no ($ret)\n"; + exit 0; + } + my $au = LWP::UserAgent->new(timeout => $TIMEOUT); + my $response = $au->request(HTTP::Request->new('GET',$url)); + if($response->is_success and $response->content =~ /GWC Home/im) { + print "yes\n"; + exit 0; + } else { + print "no geowebcache found\n"; + exit 0; + } +} + +if(exists $ARGV[0] and $ARGV[0] eq "config") { + print "graph_title GeoWebCache cache hit ratio\n"; + print "graph_args --base 1000\n"; + print "graph_vlabel %\n"; + print "graph_category geowebcache\n"; + print "ratio.label percent\n"; + print "ratio.type GAUGE\n"; + print "ratio.max 100\n"; + print "ratio.min 0\n"; + print "ratio.draw AREA\n"; + print "ratio.colour FFCC00\n"; + exit 0; +} + +my $ua = LWP::UserAgent->new(timeout => $TIMEOUT); +my $response = $ua->request(HTTP::Request->new('GET',$url)); + +if ($response->content =~ ' Cache hit ratio:(\d\d?\.?\d+)% of requests' ) { + print "ratio.value " . $1; +} else { + print "ratio.value U\n"; +} + +# vim:syntax=perl