É possível enviar um email automático ao webmaster quando um visitante atinge uma página de erro de 500?

10

É possível enviar um email automático que inclua detalhes sobre a página solicitada ao webmaster quando um visitante acessar uma página de erro de 500 servidores internos?

Dessa forma, o webmaster poderia agir mais rapidamente para resolver o problema. Esta é uma pergunta geral, de modo que plataforma usada é irrelevante.

Tony Bolero
fonte
11
adicione o software do servidor web e o idioma que você pode (deseja) usar. (apache, nginx, iis, php, asp) para que as pessoas possam mostrar exemplos de scripts.
precisa saber é o seguinte

Respostas:

7

Sim é possivel. Você só precisa verificar se o servidor Web é IIS ou Apache e pode configurá-lo para mostrar uma página personalizada (que conterá o código para capturar os detalhes que você deseja do usuário e enviar por e-mail para você) sempre que houver 500 erro encontrado.

Para o Apache, por exemplo, é realmente simples. Simplesmente crie (ou adicione, se houver) a .htaccesse use a regra a seguir para configurar seu documento de erro personalizado:

ErrorDocument 500 /error-docs/500.php
stealthyninja
fonte
e agora para nginx? :)
rogerdpack
2
@rogerdpack, error_page
Bluebaron
7

O envio de um e-mail com todos os erros, por meio de uma página de erro personalizada, pode não funcionar se o problema estiver relacionado ao PHP: sua página personalizada também pode não ser executada, portanto o e-mail não sai. Você também receberá um e-mail por erro, o que pode ser uma inundação.

Em vez disso, sugiro implementar alguma forma de verificação de log: faça com que um trabalho cron (ou tarefa agendada no Windows) verifique os arquivos de log todos os dias ou a cada poucas horas e envie um resumo de qualquer coisa encontrada desde a última verificação ao administrador relevante (s) Você também pode fazer com que seu script de verificação de log faça algumas outras coisas, como garantir que o serviço do servidor da Web (e quaisquer serviços de banco de dados e assim por diante) esteja sendo executado, mesmo que seja apenas por uma questão de paranóia. Se nada mais, um e-mail por período de relatório pode abranger outros códigos de erro HTTP (401, 404, ...) e outras coisas encontradas nos logs. Se você fizer isso, sempre envie a mensagem de e-mail, mesmo que nada esteja errado : assim você saberá se o script de verificação falhou ao executar porque você para de receber mensagens (caso contrário, nenhuma mensagem pode significar que tudo está bem ou a máquina de relatório de danos está danificada).

David Spillett
fonte
Como alternativa, você pode conectar-se ao processo de registro diretamente no Apache fazendo com que ele grave (ou canalize ) as entradas de log em um script perl ou em um banco de dados que suporte ganchos e funções definidas pelo usuário (ou seja capaz de enviar e-mails de outras maneiras). Você também pode interceptar eventos de log do Apache usando um módulo personalizado.
Lèse majesté
Voto positivo, acho que sua resposta realmente merece ser votada. Essa é uma solução prática.
ALH
4

Sim, envie um email para cada erro. Também é uma boa ideia enviar o máximo de informações possível como parte do email. Pense em pegar:

  • o conteúdo da coleção de formulários,
  • todas as variáveis ​​de sessão,
  • a sequência de agente do usuário do navegador,
  • valores de cookies,
  • o URL da página, incluindo quaisquer parâmetros da string de consulta.

Isso ajuda muito para fins de depuração. É trivial obter essas informações no ASP e ASP.NET clássicos por meio dos objetos Request e Session.

Apenas não tenha um erro na sua página de erro personalizada, ou você vai surtar no servidor da web.

Daryl
fonte
3

Sim, muito possível. Exceto o e-mail, você também pode verificar o log do servidor da Web.

Eu sugiro que não envie e-mail a cada 500, caso contrário, se houver um erro, sua caixa de correio será inundada. Basta gravar o ID do erro, enviar 1 para o mesmo erro no mesmo ID.

Eric Yin
fonte
Minha opinião é que o recebimento de um email quando algo dá errado torna a vida do webmaster um pouco mais fácil, em vez de passar pelo log do servidor da web regularmente. Bom ponto sobre a ideia de 1 email. Voto a favor!
Tony Bolero
Obrigado. Eu estava usando ASP, nos velhos tempos, o ASP recebe um código de erro, eu o uso e o URL da página, faço uma chave única e economizo na memória, recebi 1 email em cada erro e sempre que a memória foi liberada (por exemplo, reinicialização do aplicativo). Não são tantos os emails, mas o suficiente para rastrear erros. (btw, desta forma também pode acompanhar 404, mas tenha cuidado, estes dias muito erro 404 de bots)
Eric Yin
-1

Você pode adicionar um iframe que carrega um php de outro servidor; sua página de erro sempre envia e-mails.

jose aburto
fonte
11
Por que um iframe? Não tenho certeza se entendi o motivo.
Andrew Andrew