Czy możliwe jest wysłanie automatycznego e-maila do webmastera, gdy odwiedzający wejdzie na stronę błędu 500?

10

Czy możliwe jest wysłanie do webmastera automatycznej wiadomości e-mail zawierającej szczegółowe informacje na temat żądanej strony, gdy odwiedzający wejdzie na 500 błąd wewnętrzny serwera?

W ten sposób webmaster może działać szybciej, aby rozwiązać problem. To jest ogólne pytanie, więc która platforma jest używana, nie ma znaczenia.

Tony Bolero
źródło
1
dodaj oprogramowanie serwera i język, którego możesz (chcesz) używać. (apache, nginx, iis, php, asp), aby ludzie mogli pokazywać ci przykłady skryptów.
jflaflamme

Odpowiedzi:

7

Tak, to możliwe. Musisz tylko upewnić się, czy serwer WWW to IIS czy Apache, a następnie możesz ustawić go tak, aby wyświetlał niestandardową stronę (która będzie zawierała kod do przechwytywania potrzebnych szczegółów od użytkownika i wysyłania go e-mailem) za każdym razem, gdy 500 wystąpił błąd.

Na przykład w przypadku Apache jest to naprawdę proste. Po prostu utwórz (lub dodaj, jeśli taki istnieje) a .htaccessi użyj poniższej reguły, aby skonfigurować niestandardowy dokument błędu:

ErrorDocument 500 /error-docs/500.php
stealthyninja
źródło
a teraz dla Nginx? :)
rogerdpack
2
@rogerdpack, strona_błędu
Bluebaron,
7

Wysyłanie wiadomości e-mail z każdym błędem za pośrednictwem niestandardowej strony błędu może nie działać, jeśli problem dotyczy PHP: Twoja strona niestandardowa może również nie działać, więc poczta nie wychodzi. Otrzymasz również jeden e-mail na błąd, który może być powodzią.

Proponuję zamiast tego zastosować jakąś formę skanowania dziennika: zlecić cronowi (lub zaplanowanemu zadaniu w systemie Windows) skanowanie plików dziennika w poszukiwaniu błędów każdego dnia lub co kilka godzin i wysyłanie podsumowania wszystkiego, co znaleziono od ostatniego sprawdzenia do odpowiedniego administratora (s). Możesz także sprawić, aby skrypt sprawdzający dziennik robił kilka innych rzeczy, takich jak upewnienie się, że usługa serwera WWW (i wszelkie usługi bazy danych itd.) Działa, choćby ze względu na paranoję. Jeśli nic więcej, jeden e-mail na okres sprawozdawczy może obejmować inne kody błędów HTTP (401, 404, ...) i inne rzeczy znalezione w dziennikach. Jeśli to zrobisz, zawsze wysyłaj wiadomość e-mail, nawet jeśli nic nie jest źle : w ten sposób wiesz, że skrypt skanowania nie uruchomił się, ponieważ przestajesz otrzymywać wiadomości (w przeciwnym razie żadna wiadomość nie może oznaczać, że wszystko jest w porządku lub maszyna do zgłaszania uszkodzeń jest uszkodzona).

David Spillett
źródło
Alternatywnie możesz podłączyć się do procesu logowania bezpośrednio na Apache, zapisując (lub potokując ) wpisy dziennika do skryptu perl lub bazy danych, która obsługuje zaczepy i funkcje zdefiniowane przez użytkownika (lub może wysyłać wiadomości e-mail w inny sposób). Możesz także przechwytywać zdarzenia dziennika Apache za pomocą niestandardowego modułu.
Lèse majesté
Pozytywnie, myślę, że twoja odpowiedź naprawdę zasługuje na pozytywną opinię. to praktyczne rozwiązanie.
ALH
4

Tak, wyślij wiadomość e-mail na każdy błąd. Dobrym pomysłem jest również przesłanie jak największej ilości informacji w ramach wiadomości e-mail. Pomyśl o chwytaniu:

  • zawartość zbioru formularzy,
  • wszystkie zmienne sesyjne,
  • ciąg agenta użytkownika przeglądarki,
  • wartości plików cookie,
  • adres URL strony, w tym wszelkie parametry zapytania.

Pomaga to znacznie do celów debugowania. Bardzo łatwo jest uzyskać te informacje w klasycznej ASP i ASP.NET za pośrednictwem obiektów Request i Session.

Po prostu nie ma błędu na niestandardowej stronie błędów, w przeciwnym razie wystraszysz serwer WWW.

Daryl
źródło
3

Tak, bardzo możliwe. Oprócz wiadomości e-mail możesz także sprawdzić dziennik serwera WWW.

Sugeruję, aby nie wysyłać wiadomości e-mail na każde 500, w przeciwnym razie, jeśli wystąpi błąd, skrzynka pocztowa zostanie zalana. Po prostu zapisz identyfikator błędu, wyślij 1 dla tego samego błędu na tym samym identyfikatorze.

Eric Yin
źródło
Uważam, że otrzymywanie wiadomości e-mail, gdy coś pójdzie nie tak, sprawia, że ​​życie webmastera jest trochę łatwiejsze niż regularne przeglądanie dziennika serwera WWW. Dobra uwaga na temat 1 e-maila. Głosuj!
Tony Bolero,
Dzięki. Używałem ASP, dawniej ASP otrzymywał kod błędu, używam go i adresu URL strony, robię unikalny klucz i zapisuję w pamięci, dostaję 1 e-maila na każdy błąd i za każdym razem, gdy pamięć jest opróżniana (np. ponowne uruchomienie aplikacji). Nie tak wiele e-maili, ale wystarczająca do śledzenia błędów. (przy okazji, w ten sposób można również śledzić 404, ale uważaj, w dzisiejszych czasach za dużo błędów 404 od botów)
Eric Yin
-1

Możesz dodać ramkę iframe, która ładuje php z innego serwera, wtedy strona błędu zawsze wysyła wiadomości e-mail.

Jose Aburto
źródło
1
Dlaczego iframe? Nie jestem pewien, czy rozumiem powód.
Andrew