Zum Inhalt springen

Atlassian Statuspage: Status mit PHP und E-Mail aktualisieren

Schlagwörter:
Symbolbild Error

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)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

vier × zwei =