Dlaczego monitoring stron to nie tylko "czy strona odpowiada 200"
Monitorowanie dostępności stron internetowych wydaje się proste — wysyłasz zapytanie HTTP, sprawdzasz kod odpowiedzi i gotowe. W praktyce jednak poprawnie działający system monitoringu wymaga znacznie więcej: walidacji treści odpowiedzi, obsługi wielu protokołów SMTP, niezawodnego pipeline'u powiadomień i architektury, która nie zgubi alertu, gdy jest najbardziej potrzebny.
Cyberapis został zaprojektowany z myślą o tych właśnie wyzwaniach. Zbudowany na Laravel 11, wykorzystuje wbudowany scheduler i system kolejek do cyklicznego sprawdzania witryn oraz wysyłania powiadomień e-mail przez dedykowany serwer SMTP — niezależnie od domyślnego mailera aplikacji.
Kluczową decyzją architektoniczną było oddzielenie pipeline'u monitoringu od warstwy HTTP. Komenda monitor:check-websites — wywoływana przez scheduler co 5 minut, z CLI lub poprzez job RunMonitoringCheck — zawsze przechodzi tę samą ścieżkę. Dzięki temu nie ma rozbieżności między testem ręcznym a automatycznym, a diagnostyka problemów jest przewidywalna.
Pipeline monitoringu HTTP
Ujednolicona ścieżka sprawdzania: scheduler → monitor:check-websites → MonitoringService → sprawdzenie HTTP + case-insensitive phrase match. Ten sam pipeline obsługuje zarówno testy cykliczne, jak i ręcznie wywoływane z panelu Filament.
Monitoring SMTP z obsługą portu 465 (SMTPS)
System obsługuje trzy porty SMTP: 25, 587 (STARTTLS) oraz 465 (SMTPS z szyfrowaniem SSL). Mechanizm MonitoringEmailSettings::smtpEncryption() automatycznie mapuje port na odpowiednie szyfrowanie Laravel mailer (ssl / tls / none).
Test diagnostyczny SMTP
Przed wysłaniem alertu system wykonuje handshake SMTP przez Symfony SmtpTransport (metody start()/stop()). SmtpDiagnosticResult zwraca czytelne dla człowieka podpowiedzi: problem z połączeniem, autoryzacją czy TLS. Test dostępny jako header action na liście, row action oraz w formularzu tworzenia/edycji ustawień.
Powiadomienia e-mail przez dedykowany mailer
Alerty monitoringowe zawsze używają mailera smtp — nawet gdy MAIL_MAILER=log w środowisku developerskim. Rozwiązuje to problem "cichych" alertów, które lądowały w logu zamiast w skrzynce odbiorcy.
Internacjonalizacja panelu administracyjnego
Wszystkie etykiety, modale, powiadomienia i treści diagnostyczne w panelu Filament dostępne są w języku polskim i angielskim poprzez pliki tłumaczeń w lang/pl/ i lang/en/.
Wersjonowanie aplikacji
config/version.php z APP_VERSION jako single source of truth. Wersja wyświetlana w sidebarze panelu Filament. Wprowadzony został również ten plik CHANGELOG.md.
Naprawione błędy
Alerty e-mail trafiały do logu zamiast na skrzynkę
Gdy MAIL_MAILER=log, wszystkie e-maile — w tym alerty monitoringowe — lądowały w pliku logu. MonitoringEmailService został przepisany tak, aby zawsze używać mailera smtp dla powiadomień o awariach i testów SMTP, niezależnie od domyślnej konfiguracji aplikacji.
Zmiany i ulepszenia
Ujednolicony pipeline monitoringu
Wcześniej logika sprawdzania była rozproszona między kontroler a komendę Artisan. Teraz cała ścieżka przechodzi przez MonitoringService, co eliminuje rozbieżności między testem ręcznym a automatycznym.
Dokumentacja
Dodano pliki docs/MONITORING_EMAIL_CONTEXT.md, docs/LARAVEL_BEST_PRACTICES_CONTEXT.md oraz zaktualizowano istniejącą dokumentację projektu.