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