Uptime Robot: Web-Hook im JSON-Format für Discord-Alerts erstellen

Discord-BannerReklame: Discord-Banner (Startseite)

Mit Uptime Robot hat man die Möglichkeit, sich bei einer Ausfallzeit benachrichtigen zu lassen. Eine Variante davon ist der Web-Hook, das sich auch für Discord nutzen lässt.

Verwendet man den Service von Uptime Robot, hat man mehrere Möglichkeiten, sich bei einer Ausfallzeit benachrichtigen zu lassen. Sei es klassisch per E-Mail, per Smartphone-Push-Benachrichtigung (Pushbullet, Pushover) oder auch in Slack. Auch per Web-Hook kann man eine Benachrichtigung versenden lassen.


In unserem Fall haben wir uns zusätzlich eine Benachrichtigung über Discord entschieden, sodass wir nicht nur per E-Mail und Push-Benachrichtigung informiert werden, sondern auch über den Discord-Server von uns. Mit Web-Hooks kann man es ziemlich schnell und ohne Probleme einrichten.

Discord:
Dazu erstellt man erst einmal unter den Server-Einstellungen ein neuen „Webhook“. Sucht den anzuzeigenden Namen aus, in welchem Channel die Nachricht gesendet werden soll, lädt wahlweise auch ein Avatar „für den User“ hoch und speichert anschließend die „Webhook URL“. Die URL braucht man nämlich gleich für Uptime Robot.


Uptime Robot:
Hat man die Schritte bei Discord erledigt, erstellt ein „New Alert Contact“ und wählt „Webhook“ aus. Bei dem Eintrag „URL to Notify“ kommt die zuvor gespeicherte URL rein und muss am Ende der URL ein Fragezeichen („?“) hinzufügen. Bei „POST Value (JSON Format)“ fügt man folgendes ein:

{
"content": "@here: 🔥 **Service is:** `*alertTypeFriendlyName*` 💡 **Affect:** `*monitorFriendlyName*` ⌨️ **Monitoring:** https://status.newsportal.koeln \n```*alertDetails*```"
}

Mit diesem Eintrag werden alle im Discord-Channel durch „@here“ benachrichtigt, dass es eine neue Nachricht gibt. Mit „*alertTypeFriendlyName*“ wird ausgegeben, ob der Service on- oder offline ist. „*monitorFriendlyName*“ zeigt den verwendeten Service-Name von Uptime Robot an. Weitere Informationen zum Service, beispielsweise „Connection Timeout“ wird mit „*alertDetails*“ ausgegeben.


Den Text und die Emojis kann man natürlich beliebig anpassen und muss natürlich nicht vollständig übernommen werden. Wichtig ist nur, dass das JSON-Format beibehalten wird. Natürlich reicht es auch aus, dass man nur eine einzige Nachricht ausgibt, ohne weitere Details. Das kann zum Beispiel so aussehen:

{
"content": "@here: *monitorFriendlyName* is *alertTypeFriendlyName*."
}

Auch hier kann man natürlich wieder wahlweise entscheiden, ob man „@here“ beibehalten möchte oder eben nicht. In der Regel macht es aber Sinn den ganzen Channel zu informieren. Das muss aber jeder für sich selbst entscheiden, inwieweit die Nachricht ausgeführt werden soll in Discord. Wer Web-Hooks (Discord) nicht kennt: Bei Ausführung wird im Discord-Channel eine Nachricht von einem nicht vorhandenen User angezeigt (Beispiel/Screenshot). Dieser User benötigt demnach keine Rechte.