Der auf der Atlassian Statuspage dargestellte Status kann relativ einfach mit PHP und E-Mail geändert werden.
Mit dem nachfolgenden PHP-Script wird der Inhalt einer zu überwachenden Website abgefragt. Das Script muss dafür regelmäßig, z.B. minütlich, aufgerufen werden. Das kann über Cron-Job.org, Linux-Cronjob oder Windows-Aufgabe realisiert werden.
Ist die überwachte Website nicht mehr erreichbar, wird eine E-Mail mit Betreff „DOWN“ an die Atlassian Statuspage gesendet. Die Statusseite ändert daraufhin den Status und hält die Downtime fest. Geht die überwachte Website wieder online, wird erneut eine E-Mail mit Betreff „UP“ an Atlassian gesendet und die Downtime gestoppt. Der Down/Up-Zustand wird mit Textdateien im Webspace gespeichert (keine Datenbank erforderlich). Die Textdateien verhindern, dass bei aufeinander folgenden „UP“ oder „DOWN“ Ergebnissen ständig Mails gesendet werden.
<?php
// OPTIONS
$mailTo = 'HIER-EINTRAGEN@notifications.statuspage.io'; // individuelle Notification-Mailadresse
$url = 'https://meine.url'; // Website die überwacht werden soll
$downFile = 'statusdown.txt';
$upFile = 'statusup.txt';
// FUNCTIONS
function sendMail($mailTo,$state){
if(mail($mailTo,$state,'')){
return true;
} else {
return false;
}
}
function createStatusFile($file){
if($f = fopen($file, "w")){
$f = fclose($f);
return true;
} else {
return false;
}
}
function getStatusFile($file){
if(file_exists($file)){
return true;
} else {
return false;
}
}
// FIRST-RUN
if(!getStatusFile($downFile) && !getStatusFile($upFile)){
if(createStatusFile($upFile)){
echo 'INFO: First-Run creates upFile<br>';
} else {
echo 'ERROR: Failed to create First-Run-upFile<br>';
}
}
// STATUS-CHECK/UPDATE
if(file_get_contents($url,FALSE, NULL, 1, 10)){
// UP
if(getStatusFile($downFile)){
echo 'ALERT: Site is available<br>';
if(sendMail($mailTo,'UP')){
if(createStatusFile($upFile)){
if(unlink($downFile)){
echo 'INFO: Site is available - ALL DONE<br>';
} else {
echo 'ERROR: Failed to delete '.$downFile.'<br>';
}
} else {
echo 'ERROR: Failed to create '.$upFile.'<br>';
}
} else {
echo 'ERROR: Failed to send mail<br>';
}
} else {
echo 'INFO: Site is still available<br>';
}
} else {
// DOWN
if(getStatusFile($upFile)){
echo 'ALERT: Site is NOT available';
if(sendMail($mailTo,'DOWN')){
if(createStatusFile($downFile)){
if(unlink($upFile)){
echo 'INFO: Site is NOT available - ALL DONE<br>';
} else {
echo 'ERROR: Failed to delete '.$upFile.'<br>';
}
} else {
echo 'ERROR: Failed to create '.$downFile.'<br>';
}
} else {
echo 'ERROR: Failed to send mail<br>';
}
} else {
echo 'INFO: Site is still down<br>';
}
}
?>
Code-Sprache: HTML, XML (xml)