#!/usr/bin/perl -w # -*- cperl -*- =head1 NAME nginx_request - Munin plugin to show number of requests pr. second to nginx. =head1 APPLICABLE SYSTEMS Any nginx host =head1 CONFIGURATION This shows the default configuration of this plugin. You can override the status URL. [nginx*] env.url http://localhost/nginx_status Nginx must also be configured. Firstly the stub-status module must be compiled, and secondly it must be configured like this: server { listen 127.0.0.1; server_name localhost; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } } =head1 MAGIC MARKERS #%# family=auto #%# capabilities=autoconf =head1 VERSION $Id: nginx_request.in 2431 2009-09-16 10:04:17Z janl $ =head1 BUGS None known =head1 AUTHOR Unknown =head1 LICENSE Unknown. Not specified by the unknown author. Nginx has a BSD license. Munin is GPLv2 licensed. =cut my $ret = undef; if (! eval "require LWP::UserAgent;"){ $ret = "LWP::UserAgent not found"; } chomp(my $fqdn=`hostname -f 2>/dev/null | hostname`); my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://$fqdn/nginx_status"; my $port = exists $ENV{'port'} ? $ENV{'port'} : "80"; if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" ) { if ($ret){ print "no ($ret)\n"; exit 0; } my $ua = LWP::UserAgent->new(timeout => 30); my $response = $ua->request(HTTP::Request->new('GET',$URL)); unless ($response->is_success and $response->content =~ /server/im) { print "no (no nginx status on $URL)\n"; exit 0; } else { print "yes\n"; exit 0; } } if ( exists $ARGV[0] and $ARGV[0] eq "config" ) { print "graph_title Nginx requests\n"; print "graph_args --base 1000\n"; print "graph_category nginx\n"; print "graph_vlabel Request per second\n"; print "request.label req/sec\n"; print "request.type DERIVE\n"; print "request.min 0\n"; print "request.label requests port $port\n"; print "request.draw LINE2\n"; exit 0; } my $ua = LWP::UserAgent->new(timeout => 30); my $response = $ua->request(HTTP::Request->new('GET',$URL)); if ($response->content =~ /^\s+(\d+)\s+(\d+)\s+(\d+)/m) { print "request.value $3\n"; } else { print "request.value U\n"; }