HAProxy provides a socket file which can be used to do maintenance (enable/ disable backends, retrieve information and statistics, …).
The statistics part contains quite some interesting information for monitoring and alerting.
The below Perl code snippit will loop over a glob
of socket files (for instance when you have multiple HAProxy configurations running as separate processes) and print out the values returned by the “show info
” command.
use IO::Socket::UNIX; foreach my $socket_file (glob("/run/haproxy/*.sock")){ print "- Reading socket: $socket_file\n"; my $client = IO::Socket::UNIX->new( Type => SOCK_STREAM(), Peer => $socket_file, ); print "- show info\n"; print $client "show info\n"; my $header = <$client>; chomp($header); $header =~ s/^#\s+//; my @keys = split ',', $header; print "- header:$header\n"; while (my $line = <$client>){ next unless $line =~ /^.+/; chomp($line); my @values = split ',', $line; print " - Got $line\n"; print " $keys[$_]: ".($values[$_]//'')."\n" foreach 0..$#keys; } close $client; }