健康检查

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

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

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

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

import 'HealthIndicator, HealthBuilder' from 'dorapan';
import * as cp from 'child_process';

export class RemoteUrlHealthIndicator extends HealthIndicator {
  name = 'remote_url';

  doCheck(builder) {
    // check remote
    let result = cp.execSync(`curl -s --connect-timeout 1 -o /dev/null -w "%{http_code}" http://google.com`);
    if (result.toString() === '200') {
      builder.up();
    } else {
      builder.down();
    }
  }
}

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

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

大概如下:

{
  status: 'UP',
  remote_url: {
    status: 'UP'
  }
}

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

上次更新: 2018-9-19 14:35:44