Repository
Munin (master)
Last change
2018-03-29
Graph Categories
Family
auto
Capabilities
Language
Perl
License
GPL-2.0-only

nginx_request

Example graph: week

Name

nginx_request - Munin plugin to show the request rate of an nginx server

Applicable Systems

Any nginx host

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;
      }
}

Magic Markers

#%# family=auto
#%# capabilities=autoconf

Bugs

None known

Author

Unknown

License

Unknown. Not specified by the unknown author. Nginx has a BSD license. Munin is GPLv2 licensed.

#!/usr/bin/perl -w

=head1 NAME

nginx_request - Munin plugin to show the request rate of an nginx
server

=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 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

use Munin::Plugin::HTTP;

my $ret = undef;

if (! eval "require LWP::UserAgent;"){
	$ret = "LWP::UserAgent not found";
}

my $UA = Munin::Plugin::HTTP->new;
my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://localhost/nginx_status";

if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" )
{
	my $response = $UA->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 webserver\n";
	print "graph_vlabel Requests per \${graph_period}\n";
	print "request.type DERIVE\n";
	print "request.min 0\n";
	print "request.label requests\n";
	print "request.draw LINE\n";

	exit 0;
}

my $response = $UA->get($URL);

if ($response->content =~ /^\s+(\d+)\s+(\d+)\s+(\d+)/m) {
	print "request.value $3\n";
} else {
	print "request.value U\n";
}