Überwachung
Diese Seite ist nur für Administratoren zugänglich.
'; return; } $message = null; $error = null; $edit = null; if ($_SERVER['REQUEST_METHOD'] === 'POST') { verify_csrf(); $action = $_POST['action'] ?? ''; if ($action === 'save') { $id = (int) ($_POST['id'] ?? 0); $r = ueberwachung_save($pdo, $_POST + ['is_active' => !empty($_POST['is_active']) ? 1 : 0, 'verify_tls' => !empty($_POST['verify_tls']) ? 1 : 0], $id); if ($r['ok']) { $message = $id ? 'Gespeichert.' : 'Das Ziel wird jetzt überwacht.'; if (!$id) ueberwachung_check($pdo, $r['id']); } else { $error = $r['error']; $edit = $_POST; } } elseif ($action === 'self') { $r = ueberwachung_save($pdo, ['name' => 'Diese DeskHub-Seite', 'type' => 'http', 'target' => rtrim(base_url(), '/') . '/', 'interval_min' => 5]); if ($r['ok']) { ueberwachung_check($pdo, $r['id']); $message = 'Diese Seite wird jetzt überwacht.'; } else $error = $r['error']; } elseif ($action === 'test_ticket') { $tid = ueberwachung_open_ticket($pdo, 'Test: Überwachung', 'Dies ist ein Testticket der Überwachung. Es kann gelöscht oder geschlossen werden.'); if ($tid) { $tn = $pdo->query('SELECT ticket_number FROM tickets WHERE id = ' . (int) $tid)->fetchColumn(); $message = 'Testticket #' . $tn . ' wurde angelegt.'; } else $error = 'Das Testticket konnte nicht angelegt werden: ' . (plugin_setting(UEBERWACHUNG, 'ticket_error', '') ?: 'Tickets sind ausgeschaltet.'); } elseif ($action === 'check') { $message = ueberwachung_check($pdo, (int) ($_POST['id'] ?? 0)) ? 'Geprüft.' : null; if ($message === null) $error = 'Ziel nicht gefunden.'; } elseif ($action === 'toggle') { $pdo->prepare('UPDATE plugin_ueberwachung_monitors SET is_active = 1 - is_active WHERE id = ?')->execute([(int) ($_POST['id'] ?? 0)]); $message = 'Gespeichert.'; } elseif ($action === 'delete') { ueberwachung_delete($pdo, (int) ($_POST['id'] ?? 0)); $message = 'Das Ziel wurde gelöscht (bereits angelegte Tickets bleiben).'; } elseif ($action === 'settings') { plugin_set_setting(UEBERWACHUNG, 'threshold', (string) max(1, min(10, (int) ($_POST['threshold'] ?? 2)))); plugin_set_setting(UEBERWACHUNG, 'department_id', (string) (int) ($_POST['department_id'] ?? 0)); plugin_set_setting(UEBERWACHUNG, 'priority_id', (string) (int) ($_POST['priority_id'] ?? 0)); foreach (['create_tickets', 'auto_resolve', 'mail'] as $k) plugin_set_setting(UEBERWACHUNG, $k, !empty($_POST[$k]) ? '1' : '0'); $mailTo = trim((string) ($_POST['alert_email'] ?? '')); $ok = true; foreach (preg_split('/[,;\s]+/', $mailTo, -1, PREG_SPLIT_NO_EMPTY) ?: [] as $a) if (!filter_var($a, FILTER_VALIDATE_EMAIL)) { $ok = false; $error = 'Ungültige Adresse: ' . $a; } if ($ok) { plugin_set_setting(UEBERWACHUNG, 'alert_email', $mailTo); $message = 'Einstellungen gespeichert.'; } } } if (isset($_GET['edit'])) { $s = $pdo->prepare('SELECT * FROM plugin_ueberwachung_monitors WHERE id = ?'); $s->execute([(int) $_GET['edit']]); $edit = $s->fetch() ?: null; } $cfg = ueberwachung_config(); $monitors = $pdo->query('SELECT * FROM plugin_ueberwachung_monitors ORDER BY name')->fetchAll(); $events = $pdo->query('SELECT e.*, m.name FROM plugin_ueberwachung_events e LEFT JOIN plugin_ueberwachung_monitors m ON m.id = e.monitor_id ORDER BY e.id DESC LIMIT 40')->fetchAll(); $depts = $pdo->query('SELECT id, name FROM departments ORDER BY name')->fetchAll(); $prios = $pdo->query('SELECT id, name FROM priorities ORDER BY sort_order')->fetchAll(); $types = ueberwachung_types(); $down = count(array_filter($monitors, fn($m) => $m['state'] === 'down')); $badge = ['up' => ['In Ordnung', '#157a45', '#e6f7ee'], 'down' => ['Ausfall', '#b42318', '#fde8e8'], 'unknown' => ['Noch nicht geprüft', '#5b6b77', '#eef1f4']]; $f = fn(string $k, $d = '') => $edit[$k] ?? $d; ?>

Website- und Server-Überwachung

Achtung: Die Zertifikatsprüfung scheitert bei allen HTTPS-Zielen, und auf diesem Server findet PHP keine Liste vertrauenswürdiger Zertifizierungsstellen (CA-Bundle). Vermutlich meldet die Prüfung deshalb bei jeder HTTPS-Adresse „Zertifikat ungültig“, auch wenn die Seite in Ordnung ist. Stellen Sie in der PHP-Konfiguration curl.cainfo und openssl.cafile auf eine CA-Datei (zum Beispiel /etc/ssl/certs/ca-certificates.crt) oder schalten Sie bei den Zielen „Zertifikat prüfen“ aus.
Hinweis zum Anlegen von Tickets:

Zustand

Noch nichts eingetragen. Unten ein Ziel hinzufügen oder gleich diese Seite überwachen:

' . $down . ' Ausfall' . ($down > 1 ? 'e' : '') . ' · ' : 'Alles in Ordnung · ' ?> Ziele, geprüft vom Hintergrunddienst von DeskHub (im jeweils eingestellten Abstand).

NameZielZustandZertifikatZuletzt geprüft
Antwort:
0): ?>
Fehlschlag von (Ausfall und Ticket ab Fehlschlag ):
nächste Prüfung ca.
abgelaufen' : ($days <= (int) $m['cert_warn_days'] ? '' . $days . ' Tage' : $days . ' Tage')) ?>
Ändern
900); ?>

Hintergrunddienst

Noch kein Lauf. Die Prüfungen starten, sobald DeskHub das nächste Mal aufgerufen wird. Letzter Lauf vor . Es hat länger niemand DeskHub aufgerufen, oder der automatische Hintergrund-Betrieb ist ausgeschaltet (Einstellungen → Cron-Jobs). ✓ Läuft. Letzter Lauf: .

Echter Server-Cronjob: bisher kein Lauf (Einstellungen → Cron-Jobs → „Neu installieren / aktualisieren“, mit den aktuellen DeskHub-Dateien; bei älteren Dateien siehe unten) 900): ?>letzter Lauf vor (). Er sollte jede Minute laufen: Crontab und cron/run_plugins.log prüfen. ✓ läuft (letzter Lauf )

Die Prüfungen laufen mit den Hintergrundaufgaben von DeskHub. Mit dem aktuellen DeskHub-Update gehören sie zum echten Server-Cronjob: Einstellungen → Cron-Jobs → „Neu installieren / aktualisieren“ trägt die Zeile ein (jede Minute), dann wird auch nachts ohne Besucher in dem Abstand geprüft, den Sie je Ziel einstellen (mindestens 1 Minute). Bei älteren Dateien oder ohne Server-Cronjob läuft die Prüfung nur, solange jemand die Seite oder das Backend aufruft. Dann hilft ein eigener Cronjob für dieses Plugin (zum Beispiel Plesk → Geplante Aufgaben, alle 5 Minuten):

php 

Wichtig: Fällt der Server aus, auf dem DeskHub selbst läuft, kann DeskHub das nicht melden. Die eigene Erreichbarkeit überwacht am besten ein Dienst auf einem anderen Server.

Tipp: Mit einem Text, der nur auf der echten Seite steht (zum Beispiel der Name Ihrer Anwendung), erkennt die Überwachung auch Fälle, in denen ein Proxy oder Webserver eine andere Seite mit „200 OK“ ausliefert. Ohne Text werden bekannte Standard- und Fehlerseiten am Titel erkannt.

Der eingestellte Abstand gilt, sobald der Hintergrunddienst von DeskHub jede Minute läuft (aktuelle Dateien: ein Cronjob mit „Neu installieren / aktualisieren“, oder bei Seitenaufrufen). Bei älteren Dateien läuft er nur alle 5 Minuten, kürzere Werte greifen dort erst mit dem eigenen Cronjob des Plugins (Karte „Hintergrunddienst“, Zeitplan * * * * *).

Abbrechen

Einstellungen

Ereignisse

Noch keine Ereignisse.

WannZielEreignis
'Ausfall', 'up' => 'Entwarnung', 'cert' => 'Zertifikat', 'cert_ok' => 'Zertifikat erneuert'][$ev['kind']] ?? $ev['kind']) ?>: