SSR health alerts: mail texts in English

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
orascheandClaude Fable 5 committed 2026-11-10 11:00:56 +01:00
1 parent 8f8ae039d4
commit be163a88c2
1 file changed
+36 -36
@@ -126,31 +126,31 @@ final class SsrHealthSampleCommand extends Command
if ($prevOk !== null && $prevOk !== $row['ok']) {
if ($row['ok'] === 1) {
$this->sendAlert(
'[VITEC SSR] Entwarnung: SSR-Server wieder erreichbar',
"Die 5-Minuten-Messung erreicht den SSR-Server wieder (Status ok).\n\n"
. 'Zeitpunkt: ' . date('d.m.Y H:i:s') . "\n"
'[VITEC SSR] Recovered: SSR server reachable again',
"The 5-minute health check reaches the SSR server again (status ok).\n\n"
. 'Time: ' . date('d.m.Y H:i:s') . "\n"
. 'Release: ' . ($row['release_id'] ?: '-') . "\n"
. 'Antwortzeit: ' . $row['response_ms'] . " ms\n\n"
. 'Aktueller Stand: Schalter vitec.ssr.enabled = '
. ($this->flagService->isEnabledInSettings() ? 'AN' : 'AUS')
. ', Flag-Datei ' . ($this->flagService->isFlagSet() ? 'vorhanden (SSR aktiv)' : 'fehlt (SPA-Auslieferung)') . ".\n"
. "Falls der Auto-Failover ausgelöst wurde, bleibt die Seite bewusst auf SPA.\n"
. "Wieder einschalten: TYPO3-Backend > Site Management > Settings > SSR delivery auf AN,\n"
. "danach Komplett-Purge (vendor/bin/typo3 vitec:ssr-purge --all).\n",
. 'Response time: ' . $row['response_ms'] . " ms\n\n"
. 'Current state: switch vitec.ssr.enabled = '
. ($this->flagService->isEnabledInSettings() ? 'ON' : 'OFF')
. ', flag file ' . ($this->flagService->isFlagSet() ? 'present (SSR active)' : 'missing (SPA delivery)') . ".\n"
. "If the auto-failover was triggered, the site deliberately stays on SPA.\n"
. "Re-enable: TYPO3 backend > Site Management > Settings > SSR delivery ON,\n"
. "then a full purge (vendor/bin/typo3 vitec:ssr-purge --all).\n",
$output
);
} else {
$this->sendAlert(
'[VITEC SSR] ALARM: SSR-Server antwortet nicht',
"Die 5-Minuten-Messung konnte den SSR-Server nicht erreichen\n"
. "(oder /__health meldete einen Fehler).\n\n"
. 'Zeitpunkt: ' . date('d.m.Y H:i:s') . "\n"
'[VITEC SSR] ALERT: SSR server not responding',
"The 5-minute health check could not reach the SSR server\n"
. "(or /__health reported an error).\n\n"
. 'Time: ' . date('d.m.Y H:i:s') . "\n"
. 'Endpoint: ' . $endpoint . "\n"
. 'Antwortzeit: ' . $row['response_ms'] . " ms\n\n"
. 'Solange die Flag-Datei existiert, leitet dev.vitec.com weiter zum SSR-Server. Nach '
. $failoverAfter . ' Fehlmessungen in Folge (ca. ' . ($failoverAfter * 5) . " Minuten) schaltet\n"
. "der Auto-Failover automatisch auf SPA-Auslieferung um - die Seite bleibt erreichbar.\n\n"
. "Diese Mail kommt nur beim Zustandswechsel ok -> down, nicht bei jeder Messung.\n",
. 'Response time: ' . $row['response_ms'] . " ms\n\n"
. 'As long as the flag file exists, dev.vitec.com keeps routing to the SSR server. After '
. $failoverAfter . ' failed checks in a row (about ' . ($failoverAfter * 5) . " minutes) the\n"
. "auto-failover switches to SPA delivery automatically - the site stays reachable.\n\n"
. "This mail is sent only on the ok -> down transition, not for every check.\n",
$output
);
}
@@ -172,29 +172,29 @@ final class SsrHealthSampleCommand extends Command
$consecutive
));
$this->sendAlert(
'[VITEC SSR] AUTO-FAILOVER: Seite auf SPA umgeschaltet',
'AUTO-FAILOVER AUSGELÖST: ' . $consecutive . " Messungen in Folge down.\n\n"
. "dev.vitec.com liefert ab sofort die SPA aus (Rendering im Browser).\n"
. "Für Besucher bleibt die Seite erreichbar.\n\n"
. "Was automatisch passiert ist:\n"
. "- Site-Setting vitec.ssr.enabled auf false gestellt (settings.yaml)\n"
. "- Caches geleert\n"
. "- Flag-Datei var/vitec-ssr-on.flag gelöscht\n\n"
. "Wieder einschalten (bewusst NUR von Hand), sobald der SSR-Server wieder läuft:\n"
. "1. Auf dem VPS prüfen: systemctl status vitec-ssr und /__health\n"
. "2. TYPO3-Backend > Site Management > Settings > SSR delivery wieder AN\n"
. "3. Komplett-Purge: vendor/bin/typo3 vitec:ssr-purge --all\n",
'[VITEC SSR] AUTO-FAILOVER: site switched to SPA',
'AUTO-FAILOVER TRIGGERED: ' . $consecutive . " consecutive DOWN checks.\n\n"
. "dev.vitec.com now serves the SPA (rendering in the browser).\n"
. "The site stays available for visitors.\n\n"
. "What happened automatically:\n"
. "- site setting vitec.ssr.enabled set to false (settings.yaml)\n"
. "- caches flushed\n"
. "- flag file var/vitec-ssr-on.flag removed\n\n"
. "Re-enable (deliberately MANUAL only) once the SSR server is back:\n"
. "1. Check on the VPS: systemctl status vitec-ssr and /__health\n"
. "2. TYPO3 backend > Site Management > Settings > SSR delivery back ON\n"
. "3. Full purge: vendor/bin/typo3 vitec:ssr-purge --all\n",
$output
);
} catch (\Throwable $e) {
$output->writeln('<error>auto-failover FAILED: ' . $e->getMessage() . '</error>');
$this->sendAlert(
'[VITEC SSR] FEHLER: Auto-Failover fehlgeschlagen',
"Der Auto-Failover sollte auslösen, ist aber fehlgeschlagen:\n"
'[VITEC SSR] ERROR: auto-failover FAILED',
"The auto-failover should have triggered but failed:\n"
. $e->getMessage() . "\n\n"
. "Bitte von Hand prüfen: Site-Setting vitec.ssr.enabled, Datei var/vitec-ssr-on.flag.\n"
. "Not-Aus ohne TYPO3: Flag-Datei löschen UND Setting auf false stellen\n"
. "(sonst legt die SyncSsrFlag-Middleware die Flag-Datei sofort wieder an).\n",
. "Please check manually: site setting vitec.ssr.enabled, file var/vitec-ssr-on.flag.\n"
. "Emergency off without TYPO3: delete the flag file AND set the setting to false\n"
. "(otherwise the SyncSsrFlag middleware recreates the flag file immediately).\n",
$output
);
}