2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/php/php_fpm_process
2014-02-20 13:31:39 +08:00

155 lines
3.1 KiB
Perl
Executable File

#!/usr/bin/perl
# -*- cperl -*-
=head1 NAME
php_fpm_process - Munin plugin to show number of number of use processes on php-fpm.
Inspirated by php5-fpm_status plugin by Daniel Caillibaud
=head1 APPLICABLE SYSTEMS
Any php-fpm host
You will need the perl fastcgi::client on your host
=head1 CONFIGURATION
You have to put this in your plugin.conf.d folder
# If your php process is listening on TCP
[php_fpm_process]
env.serveraddr 127.0.0.1
env.port 9000
env.path /status
# If your php process is listening on Unix Socket
[php_fpm_process]
env.sock /var/run/php5-fpm.sock
env.path /status
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=head1 VERSION
v1.0
=head1 AUTHOR
Minitux
=head1 LICENSE
GNU General Public License, version 3
=cut
use FCGI::Client;
my $ish = 1;
my $header = "";
my $body = "";
my $IDLE = 0;
my $ACTIVE = 0;
my $TOTAL = 0;
my $SERVERADDR = $ENV{'serveraddr'} || "127.0.0.1";
my $PORT = $ENV{'port'} || "9000";
my $PATH = $ENV{'path'} || "/status";
my $UNIX_SOCK = $ENV{'sock'};
my $sock;
if ($UNIX_SOCK) {
use IO::Socket::UNIX;
$sock = IO::Socket::UNIX->new(
Peer => $UNIX_SOCK,
);
if (!$sock) {
print "Server maybe down, unabled to connect to $UNIX_SOCK";
exit 2;
}
} else {
use IO::Socket::INET;
$sock = IO::Socket::INET->new(
PeerAddr => $SERVERADDR,
PeerPort => $PORT,
);
if (!$sock) {
print "Server maybe down, unabled to connect to $SERVERADDR:$PORT";
exit 2;
}
}
my $client = FCGI::Client::Connection->new( sock => $sock );
my ( $stdout, $stderr, $appstatus ) = $client->request(
+{
REQUEST_METHOD => 'GET',
SCRIPT_FILENAME => '',
QUERY_STRING => '',
SCRIPT_NAME => $PATH,
},
''
);
$stdout =~ s/\r//g;
while($stdout =~ /([^\n]*)\n?/g) {
if(!$1) {
$ish = 0;
next;
}
if($ish == 1) {
$header .= $1."\n";
} else {
$body .= $1."\n";
}
}
if ( defined $ARGV[0] and $ARGV[0] eq "config" )
{
if($body =~ m/pool:\s+(.*?)\n/) {
$pool = $1;
}
print "graph_title php5-fpm status $pool\n";
print "graph_args --base 1000 -l 0\n";
print "graph_vlabel Processes\n";
print "graph_scale yes\n";
print "graph_category php\n";
print "graph_info This graph shows the php5-fpm process manager status from pool: $pool\n";
print "active.label Active processes\n";
print "active.type GAUGE\n";
print "active.draw AREA\n";
print "active.info The number of active processes\n";
print "idle.label Idle processes\n";
print "idle.type GAUGE\n";
print "idle.draw STACK\n";
print "idle.info The number of idle processes\n";
print "total.label Total processes\n";
print "total.type GAUGE\n";
print "total.draw LINE2\n";
print "total.info The number of idle + active processes\n";
exit 0
}
print $body;
if($body =~ m/idle processes: (.*?)\n/) {
$IDLE = $1;
print "idle.value ".$IDLE."\n";
}
if($body =~ m/active processes: (.*?)\n/) {
$ACTIVE = $1;
print "active.value ".$ACTIVE."\n";
}
if($body =~ m/total processes: (.*?)\n/) {
$TOTAL = $1;
print "total.value ".$TOTAL."\n";
}