Penso che la miglior soluzione, se non si desidera acquistare dei programmi adhoc, creare un prorio script di monitor del tipo (incollo una porzione visto che non si trova più in rete)
file config.php
Codice PHP:
<?php
// NAME OF HOST (USED FOR PAGE TITLES)
$host_name = 'Statistiche Server';
// EMAIL ADDRESSES FOR NOTIFICATIONS IN THE FORM OF: ("email@domain.com", "pager@domain.com", "etc")
$email_addresses = array("xxxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxxxxxxx");
// SERVER LIST AS SERVER NAMES AND IP'S IN THE FORM OF: ("name|localhost", "server.name.com|111.222.333.444", "etc")
$servers = array("server|xxxxxxxxxxxxx");
// SERVICES IN THE FORM OF: ("Service name|port number", "Another service|another port")
$services = array("HTTP|80");
?>
file da richiamae col cron
Codice PHP:
<?
include("../config.php");
function portscan($port,$server)
{
$l = 1;
while(($l<=3)&&(!$fp)) { $fp = fsockopen($server, $port, $errno, $errstr, 0.6); $l = $l+1; }
if (!$fp) { $status=0; }
else { $status=1; fclose($fp); }
return $status;
}
for($i=0; $i<count($servers); $i++)
{
$log .= date("d M y, g:ia")."~";
$server = explode("|", $servers[$i]);
for($j=0; $j<count($services); $j++)
{
$service_port = explode("|", $services[$j]);
$service_status = portscan("$service_port[1]","$server[1]");
$log .= $service_status;
if($service_status == 0) {
$service_warning .= "$server[1]\n";
}
$log .= "|";
}
if($service_warning) { $service_warn = "The following services failed:\n$service_warning"; }
$log .= "\n";
}
if(ereg("0\\|", $log)) {
$fail_time = date("d M Y g:ia");
$from = "From: $service_warning <infoxxxxxxxxxxxxxxx
foreach($email_addresses as $email_addresses) {
mail($email_addresses, "DOWN", " $fail_time\n\n$service_warn", "$from\nReply-to:$email_addresses\r\nX-Mailer: PHP\nContent-Type: text/html");
echo "To : $email_addresses ; DOWN ; PROBLEMI $fail_time\n\n$service_warn ; From: $service_warning<info@xxxxxxxxxxxxx>\r\nReply-to:$email_addresses\r\nX-Mailer: PHP\nContent-Type: text/html<br>";
} }
?>
Segnalibri