健康端点监控模式 Health Endpoint Monitoring Pattern
描述
外部程序定期访问应用程序,检查功能是否正常。这个模式可以帮助验证应用和服务是否被正确执行。
背景和问题
我们必须定期验证我们的web应用程序,服务,确保他们是可用的,并且执行正确的。
解决方案
通过将请求发送到应用程序的端点实施健康监测。该应用程序应该执行必要的检查,并返回其状态的指示。
注意事项
- 如何验证响应。例如,仅仅是一个200(OK)状态码是否可以验证应用程序是否工作正常?
- 合理设计监控端的数量,服务,数据库,应用程序是否需要使用不同的监控端监控,还是使用同一个?
- 设计监控端与被监控端之间的交互报文和返回信息。
- 日志信息收集。
- 性能控制。
- 如何访问正在使用认证固定的端点。
- 确保监控系统自身检查和测试。
何时使用
监控网站和 Web 应用程序,验证可用性,检查是否工作正常。
结构中包含的角色
- Monitor 监控器
- Application 应用程序
- Crontab 定时任务
最小可表达代码
// 监控器
class Monitor
{
private $app;
public function __construct()
{
$this->app = new Application();
}
public function request()
{
if ($this->app->checkHealth()) {
var_dump('应用程序正常');
}
else {
var_dump('应用程序挂了');
}
}
}
// 应用程序
class Application
{
public function checkHealth()
{
return rand(0, 1);
}
}
// 定时任务
class Crontab
{
public function handle()
{
$monitor = (new Monitor());
for ($i = 0; $i < 10; $i++) {
sleep(1);
$monitor->request();
}
}
}
(new Crontab)->handle();
推荐文章: