Ich habe mich kürzlich von PRTG als Monitoring-Software für mein Netzwerk verabschiedet, weil es für meine Zwecke einfach ein massiver Overkill war und zuletzt auch der letzte Grund war, einen Windows-Server zu betreiben.
Als Alternative zu PRTG bin ich auf SmokePing gestoßen, was ein altes aber für meine Zwecke perfekt geeignetes Tool darstellt und genau die zwei Kernfunktionen abdeckt, die sich über die Jahre als die einzig wirklich wichtigen herausgestellt haben:
- Alarmieren, wenn ein Gerät oder eine Website nicht mehr erreichbar ist
- Latenz über längere Zeiträume aufzeichnen, um schleichend auftretende Probleme nachvollziehen zu können

Demo-Server vom Autor: https://smokeping.oetiker.ch/
Installation
apt update && apt install smokeping
Sobald SmokePing installiert ist, sollte man die Weboberfläche unter http://serverIP/smokeping
aufrufen können. Andernfalls: systemctl start smokeping
.
Konfiguration
- Targets definieren (Geräte, die überwacht werden sollen)
- Alerts definieren (was unter welchen Umständen passieren soll)
- Notifications konfigurieren (Beispiele)
- per Telegram Bot
- per Home Assistant
Alle Konfigurationsdateien befinden sich unter /etc/smokeping/config.d/
.
1.) Targets definieren
nano /etc/smokeping/config.d/Targets
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of resch.cloud.
#========================================================
+ WWW
menu = WWW
title = WWW
alerts = packetloss
++ resch_cloud
menu = resch.cloud
title = resch.cloud
host = resch.cloud
++ Blog
menu = blog.resch.cloud
title = blog.resch.cloud
host = blog.resch.cloud
++ Nextcloud
menu = Nextcloud
title = Nextcloud (storage.resch.cloud)
host = storage.resch.cloud
...
So könnte eine Konfigurationsdatei für die Targets aussehen. Wichtig dabei ist, dass die „ID“ eines Targets, hier z.B. resch_cloud
KEINE Sonderzeichen enthalten darf!
Wenn alles korrekt ist, lässt sich smokeping mit systemctl restart smokeping
ohne Fehler neu starten. Falls Fehler auftreten, sind wahrscheinlich noch Fehler in der Konfiguration. Diese lassen sich mit smokeping --check
finden.

2.) Alerts definieren
nano /etc/smokeping/config.d/Alerts
*** Alerts ***
# Externes Skript ausführen, wenn der Alarm ausgelöst wird
to = |/etc/smokeping/config.d/smokeping-notification.sh
# This rule checks for 3 * 5mins of >60% loss
+packetloss
type = loss
pattern = >60%,>60%,>60%
edgetrigger = yes
comment = Massive loss for 5 mins
Das Beispiel definiert den Alert packetloss
. Dieser wird ausgelöst, sobald an einem Target für drei aufeinanderfolgende 5-Minuten-Blöcke ein Paketverlust von mehr als 60% auftritt.
Die dritte Zeile definiert, dass das bash Script smokeping-notification.sh
ausgeführt werden soll, wenn dieser Fall eintritt.
3.) Notification einrichten
Beispiel 1: Notification per Telegram
Telegram eignet sich sehr gut, um per Telegram Bot Nachrichten zu verschicken. Das funktioniert an einzelne Personen oder auch an Gruppenchats. Nachdem Telegram aber standardmäßig nicht verschlüsselt und sonst auch datenschutztechnisch fragwürdig ist, sollte man keine sensiblen Informationen darüber versenden.
Telegram Bot erstellen und API-Token sichern
- Telegram Account erstellen
- Chat mit
BotFather
beginnen /newbot
senden und Anleitung folgen- API-Token sichern

Chat ID abrufen
- URL /getUpdates“>https://api.telegram.org/bot<APIToken>/getUpdates erneut aufrufen. Dort siehst du nun alle chats, an denen dein neuer Bot beteiligt ist. Aktuell sollte das nur einer sein und dessen Chat ID brauchst du für das weitere Vorgehen:
...
"chat": {
"id": 123123123, // Diese ID brauchst du
"first_name": "DeinName",
"type": "private"
},
...
Jetzt haben wir alles, was wir brauchen, um automatisiert Nachrichten an den Bot schicken zu können: den API-Token und die Chat-ID.
Notification-Script erstellen
nano /etc/smokeping/config.d/smokeping-notification.sh
Wir erstellen nun das Script, das vorhin in der Alerts-Config definiert wurde.
#!/bin/bash
# --------- Telegram Notification ---------
# Set the API token and chat ID
API_TOKEN="APIToken"
CHAT_ID="123123123"
# Set the message text
MESSAGE="Smokeping-Alarm!"
# Use the curl command to send the message
curl -s -X POST https://api.telegram.org/bot$API_TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$MESSAGE"
# Loggen, dass eine Nachricht versendet wurde
# echo "Nachricht per Telegram gesendet: $(date)" >> /var/log/smokeping_alerts.log
Damit es auch ausgeführt werden kann, sobald smokeping einen Alert auslöst, machen wir es mit chmod +x /etc/smokeping/config.d/smokeping-notification.sh
ausführbar.
Wir testen das Script mit /etc/smokeping/config.d/smokeping-notification.sh
und sollten eine Telegram-Nachricht bekommen:


Beispiel 2: Notification per Home Assistant
Wer Home Assistant nutzt, kann auch dessen App dazu verwenden um Push-Notifications abzusetzen.
Automation in Home Assistant
alias: Push-Notification bei Smokeping-Alarm
description: ""
triggers:
- trigger: webhook
allowed_methods:
- POST
- PUT
local_only: true
webhook_id: "mySecretWebhookID"
conditions: []
actions:
- action: notify.mobile_app_myPhone
metadata: {}
data:
message: Paketverlust im Netzwerk
title: Smokeping Alert
data:
url: http://mySmokepingServer/smokeping/?target=_charts.loss
mode: single
Die Zeile url: http://mySmokepingServer/smokeping/?target=_charts.loss
sorgt dafür, dass man gleich auf die Smokeping-Weboberfläche kommt, wenn man auf die Notification tippt.
Notification-Script erstellen
nano /etc/smokeping/config.d/smokeping-notification.sh
Natürlich kann man innerhalb eines Scripts auch Notifications per Telegram UND Home Assistant absetzen. Dazu einfach folgenden Code (außer der ersten Zeile) an das zuvor erstellte smokeping-notification.sh
anhängen.
#!/bin/bash
# POST-Request an die Webhook-URL senden
curl -X POST https://myHomeAssistant/api/webhook/mySecretWebhookID
# Loggen, dass der Webhook ausgeführt wurde
# echo "Webhook gesendet: $(date)" >> /var/log/smokeping_alerts.log
Damit es auch ausgeführt werden kann, sobald smokeping einen Alert auslöst, machen wir es mit chmod +x /etc/smokeping/config.d/smokeping-notification.sh
ausführbar.
Wir testen das Script mit /etc/smokeping/config.d/smokeping-notification.sh
und sollten eine Home Assistant-Nachricht bekommen.
Wenn man den Wald vor lauter Bäumen nicht sieht...
An dieser Stelle wurde mir klar, dass eigentlich Home Assistant selbst mithilfe der Ping-Integration praktisch exakt dieselbe Aufgabe wie Smokeping übernehmen könnte. Aber was solls, jetzt ist der Beitrag eh schon fast fertig und vielleicht gibts ja noch zwei Nerds ohne Home Assistant 🤷♂️.
Optional: Smokeping per HTTPS ausliefern
a2enmod ssl
Zertifikat und Privaten Schlüssel unter /etc/ssl/
ablegen und privaten Schlüssel mit chmod 600
schützen.
Apache-conf für HTTPS
# Liefert alles unter /var/www/html/ per HTTP aus
<VirtualHost *:80>
ServerName myServerFQDN
DocumentRoot /var/www/html/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# Liefert alles unter /var/www/html/ per HTTPS aus
<VirtualHost *:443>
ServerName myServerFQDN
DocumentRoot /var/www/html/
SSLEngine on
SSLCertificateFile /etc/ssl/myServerFQDN.crt
SSLCertificateKeyFile /etc/ssl/myServerFQDN_key.pem
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Smokeping-Weiterleitung BEGINN
# Leitet Anfragen an myServerFQDN/smokeping an Smokeping weiter
ScriptAlias /smokeping/smokeping.cgi /usr/lib/cgi-bin/smokeping.cgi
Alias /smokeping /usr/share/smokeping/www
<Directory "/usr/share/smokeping/www">
DirectoryIndex smokeping.cgi
Options FollowSymLinks ExecCGI
AllowOverride None
Require all granted
</Directory>
<Directory "/usr/lib/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Smokeping-Weiterleitung ENDE
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Apache mit systemctl restart apache2
neu starten.
Wenn du Feedback loswerden möchtest, nutze bitte das Kontaktformular.
Falls dir mein Beitrag weitergeholfen hat, würde ich mich sehr über einen kleinen Kaffee freuen. Oder du nutzt einen meiner Empfehlungslinks und sparst dir damit etwas Geld: Hetzner Cloud (20€ Guthaben), Ufodrive (30€ Rabatt), aWATTar. Außerdem habe ich eine Wunschliste bei Amazon.

