Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 26 additions & 16 deletions check_haproxy
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ use warnings FATAL => 'all';
use Carp;

# Import Modules
#use Getopt::Long qw(:config no_ignore_case);
use POSIX;
use Pod::Usage qw(pod2usage);
use IO::Socket::UNIX qw( SOCK_STREAM );
use LWP::UserAgent;
use Data::Dumper;
use Scalar::Util qw(looks_like_number);

Expand Down Expand Up @@ -189,7 +189,7 @@ sub main {
usage => "Usage: check_haproxy [--defaults (defaults)] [--overrides (override 1)]\n" .
" [--overrides (override 2)] [--overrides (override n)]\n" .
" [--[no]frontends] [--[no]backends] [--[no]servers]\n" .
" [--socket (path)] [--help]",
" [--socket (path|HTTP URI)] [--help]",
version => $_version,
extra => pod2scalar(),
);
Expand All @@ -215,7 +215,7 @@ sub main {
);
$mp->add_arg(
spec => 'socket|S=s',
help => 'Path to the socket check_haproxy should connect to',
help => 'Path to the socket or HTTP URI check_haproxy should connect to',
default => '/var/run/haproxy.sock',
);
$mp->add_arg(
Expand All @@ -231,19 +231,30 @@ sub main {

$mp->getopts;

my $socket = IO::Socket::UNIX->new(
Peer => $mp->opts->socket,
Type => SOCK_STREAM,
Timeout => 1,
) or wrap_exit(
UNKNOWN,
sprintf(
'Cannot connect to socket %s',
$mp->opts->socket
)
);
my $fh;
if ($mp->opts->socket =~ /^http/) {
my $res = LWP::UserAgent->new()->get($mp->opts->socket);
$res->is_success or wrap_exit(UNKNOWN,
sprintf(
'Cannot connect to socket %s',
$mp->opts->socket
));
open $fh, "<", \$res->content;
}
else {
$fh = IO::Socket::UNIX->new(
Peer => $mp->opts->socket,
Type => SOCK_STREAM,
Timeout => 1,
) or wrap_exit(UNKNOWN,
sprintf(
'Cannot connect to socket %s',
$mp->opts->socket
));
print $fh "show stat\n";
}

%data = get_data($socket);
%data = get_data($fh);
%checks = build_checks(\@{$mp->opts->overrides});

check_frontends() if $mp->opts->frontends;
Expand Down Expand Up @@ -299,7 +310,6 @@ sub get_data {

_debug('get_data', 'is reading data from HAProxy');

print $s "show stat\n";
while (<$s>) {
chomp; next unless length;
my @stat = split (',');
Expand Down