健康检查

Pandora.js 提供了 HealthEndPoint 来做健康检查的能力,通过 /health 的路由即可访问。

默认我们提供了一些基础的检查,比如磁盘检查,端口检查等,如果需要修改其中的配置,可以在全局配置中进行覆盖调整。

HealthEndPoint 有相应的客户端来负责采集数据, 我们提供了 HealthIndicator 这个基础抽象类,用户只要实现它就能把健康检查给统一起来。

比如你要检查当前的远程服务器是否可用,就可以实现其中的 doCheck 方法。

  1. import 'HealthIndicator, HealthBuilder' from 'dorapan';
  2. import * as cp from 'child_process';
  3. export class RemoteUrlHealthIndicator extends HealthIndicator {
  4. name = 'remote_url';
  5. doCheck(builder) {
  6. // check remote
  7. let result = cp.execSync(`curl -s --connect-timeout 1 -o /dev/null -w "%{http_code}" http://google.com`);
  8. if (result.toString() === '200') {
  9. builder.up();
  10. } else {
  11. builder.down();
  12. }
  13. }
  14. }

doCheck 方法中,我们传入了一个 builder,用来简化返回结果,通过 builder.up()builder.down() 来返回成功和失败。

这样,你访问 http://127.1:8006/health 的时候,就能看到名为 remote_url 的健康检查结果了。

大概如下:

  1. {
  2. status: 'UP',
  3. remote_url: {
  4. status: 'UP'
  5. }
  6. }

这里的格式是由 HealthResource 这个类定义的,健康检查看的是总体的一个结果,只要出现一个不正常,整体就不通过,所以 status 字段代表着总的一个状态,通过 ‘UP’ 和 ‘DOWN’ 来表示是否健康。