Não é exatamente o estado da arte, mas é escrito principalmente como uma prova de conceito, o seguinte pode ser usado para detectar quando um host fica inativo. Adicioná-lo em um cronjob regular, modificá-lo para que ele e-mails sempre que algo está para baixo e voila! Solução rápida e barata.
#!/usr/bin/env perl
%hosts = (
'host1' => '192.168.1.1',
'host2' => '192.168.1.254',
);
while (($hostname, $ip) = each(%hosts)) {
system('ping -c1 ' . $ip. ' 2>&1 > /dev/null');
if ( $? != 0 ) {
print "host: ".$hostname." down\n";
} else {
print "host: ".$hostname." up\n";
}
}