Pau*_*ley 21 monitoring web-applications http
我正在实现一个/_status/端点,它对我们数据库中的数据进行一些健全性检查.
例如,我们正在收集测量结果,如果最新测量值超过一小时,状态将变为"不良".
我想指出Pingdom在这个URL上利用他们的警报基础设施并告诉我们什么时候出错了.
在"良好"状态下,我将提供具有HTTP 200 OK状态的HTML页面.但是,对于"坏",适当的HTTP状态代码是什么?或者更正确的是不通过状态代码传递这些信息,而是通过HTML内容?
谢谢!
Pao*_*olo 24
嗯......这是一个老问题,但我最终到了这里,所以我想我会在这里给我两分钱:如果一切都好的话,很明显应该返回2xx
如果健康状况不好,我认为它应该返回5xx结果(4xx说明客户端在请求中有错; 2xx和3xx在某种程度上都是成功的).
我认为5xx是正确的,因为这是一个特殊的请求,它回答整个服务的状态.此外,因为大多数负载均衡器提供基于响应代码的活跃度检查,并非所有负载均衡器都提供了解析更复杂的有效负载的方法(除了可能使检查变得脆弱的RegExp匹配).
我同意@Julien认为500(具体)似乎不合适,我们已决定503服务不可用.
503似乎适合几个原因:
bri*_*rns 14
我们刚刚在小组中进行了类似的讨论.为了我们的目的,我们决定HTTP响应代码应该报告服务器成功或失败以满足请求.对于GET,这将意味着您是否可以使用所请求的资源进行响应.在这种情况下,请求的资源是健康报告,因此只要您成功返回,它应该是200响应.
我们正在为健康检查返回JSON,顶级"isHealthy"字段设置为true或false.我们的负载均衡器和其他监视器将解析JSON并使用此字段来确定系统是否健康.
如果您不想在监视器中解析JSON,可以尝试使用自定义响应标头来指示系统的二进制运行状况,例如,System-Health: true或System-Health: false.你可能有更好的运气获得可以检查的显示器.
如果你真的想要使用响应代码,我会推荐一个名为"health" 的额外端点,健康时返回"204 No Content",不健康时返回"404 Not Found".在这种情况下,URL定义的资源象征性地是系统的运行状况,因此如果它是健康的,您可以返回成功的响应.如果它不健康,那么它的健康就无法找到,因此404.
| 归档时间: |
|
| 查看次数: |
9049 次 |
| 最近记录: |