我们正在尝试为返回死机白页的 Web 应用程序设置监控 (zabbix)。应用程序基于 PHP。
据我所知,白屏死机可能是由许多问题、内存问题、语法错误等引起的。
所以我想问一下,依靠网络服务器返回 50x 代码是否更好,或者可以(以某种方式)获得返回代码 200,但呈现页面为空(白色)?
答案1
依赖 HTTP 状态代码是最佳且常用的做法。如果 PHP 遇到严重错误,它应该使用适当的 HTTP 错误代码关闭。
HTTP 状态代码为 200 的严重错误是虚假声明,应避免使用。即使是设计精良的 404 页面也应使用 HTTP 错误代码 404,而不是其他任何代码。
使用 HTTP 错误代码您可以:
使用现有的在线和本地监控工具来监控您的网站和应用程序
允许浏览器根据给定的错误做出反应
告诉 Google 和其他搜索引擎您的网站有错误而不是有新内容
配置 Nginx 以显示正确的 HTML,并在 PHP 因致命错误关闭时保留错误代码
...
答案2
如果您想正确监控一个网站,您应该识别出现在您的网页内容中的一个或多个字符串,并让您的监控器检查这些字符串是否存在于 HTTP 响应中。
如果您正在运行收集和处理表单数据的 Web 应用程序,则应创建一个交互式监视器来处理表单并确认表单是否返回正确的结果。您可以通过多种方式执行此操作。过去,我曾将 Jmeter 与 Nagios 集成在一起来执行此操作,但您也可以使用 Pingdom 等在线服务。
我认为依赖 HTTP 状态代码并不是一个好的做法。PHP 中的 DB 错误仍可能返回 HTTP 200 状态。同样,被破坏的网站也可能返回 200 状态代码。