节点健康检查

建立符合下列条件的健康检查功能: FT健康检查标准。 。 。 .
目录
使用量
所需资源
运行健康检查模块需要 节点.js 财务报告和审定财务报表 无。您可以安装 :
npm install @financial-times/health-check
API 文档
这个图书馆利用 承诺 - API的其他文件假定熟悉。 您还需要使用以下模块:
const HealthCheck = require('@financial-times/health-check');
new HealthCheck( [options] )
此函数返回一个新的健康检查对象 。 您可以配置健康检查 选项对象 如果您需要覆盖任何默认值.
const health = new HealthCheck({
checks: [
// ...
]
});
这个 给定检查 在您指定的间隔时间立即开始投票。 返回实例有几种读取此数据的方法.
health.checks()
返回一个符合 快速网络服务 模块。 返回的函数返回一个承诺,该承诺将解决健康检查数据JSON的方便副本.
假设你已经包括 快递 财务报告和审定财务报表 快速网络服务数字 :
app.use(expressWebService({
healthCheck: health.checks()
}));
health.gtg()
返回一个与 快速网络服务 模块。 返回的函数返回一个承诺 true 或者说 false。 。 。 .
false 如果任何健康检查具有严重性,则确定值 1 正在失败.
假设你已经包括 快递 财务报告和审定财务报表 快速网络服务数字 :
app.use(expressWebService({
goodToGoTest: health.gtg()
}));
health.toJSON()
将健康检查输出作为可以转换为JSON的阵列. 如果你不打算使用这个 快速网络服务 模块.
health.stop()
这阻止了所有的支票运行。 如果健康检查能打开节点Js的过程 并且你需要关闭它的话,这是有用的。 例如,综合测试后.
health.stop();
new HealthCheck.Check( [options] )
此类用于创建自定义的健康检查. 需要扩展这个课程才能使用,并且可以直接通过实例进入 HealthCheck 当你立即把它。 举个例子.
class MyHealthCheck extends HealthCheck.Check {
constructor(options) {
super(options);
}
// Must return a promise
run() {
return new Promise(resolve => {
// Must set these properties
this.ok = true;
this.checkOutput = '';
this.lastUpdated = new Date();
resolve();
});
}
}
参见示例 获取更多信息,或查看 lib/check 更多已经扩展基数的类别.
选项
健康检查模块可配置各种选项,作为对象传递到 HealthCheck 建筑师。 现有备选方案如下:
checks: 数组 健康检查配置对象默认为空数组log: 用于输出日志的控制台对象。 全局默认值console对象
健康检查配置
每次健康检查都可以被配置为对象. 这些跟随 FT健康检查标准,它有更多的信息, 并且有 实例 可以帮助你。 无论您添加何种类型的检查, 都有一些常见的属性:
type: 支票的类型. 一个cpu, (中文(简体) ),disk-space, (中文(简体) ),memory, (中文(简体) ),ping-url, (中文(简体) ),tcp-ip这些类型所需的额外配置记录如下:businessImpact: 健康检查作为字符串的商业影响id:健康检查作为字符串的独特ID. 必须只使用小写字母和连字符 .name:健康检查的名称为字符串.panicGuide: 健康检查的恐慌指南为一串.technicalSummary:健康检查技术摘要为一串.
还有一些共同的可选属性:
severity: 如果健康检查失败,其严重程度如何。 一定是其中一个1(高点),2(中间),3(减)interval: 检查之间等待的毫秒数。 默认为30000(30秒)
不同类型的检查可能具有额外的配置属性. 现将这些情况记录如下.
检查类型: CPU
这个 cpu 类型接受一些额外的配置 :
threshold: 检查前允许的最大 CPU 使用量( 百分比) 。 默认为50
检查类型: 磁盘空格
这个 disk-space 类型接受一些额外的配置 :
threshold:在检查失败前允许的最大磁盘空间使用(百分比). 默认为75
检查类型: 内存
这个 memory 类型接受一些额外的配置 :
threshold:在检查失败前允许的最大内存使用量(百分比). 默认为75
检查类型: Ping URL
这个 ping-url 类型需要一些额外的配置 :
url: 检查时应该打的URL. 此接受一个字符串或返回字符串的函数method: Ping URL时使用的HTTP方法. 默认为"HEAD"headers: HTTP 信头随请求而发送. 此接受带有密钥值对的对象 。 默认为空对象
检查类型: TCP/IP
这个 tcp-ip 类型需要一些额外的配置 :
host: 检查时要键入的主机名port: 键入主机名时使用的TCP端口. 默认为80
见 examples 用于样本使用.
实例
健康检查的落实情况 examples 此 repo 文件夹 :
节点获取
如果项目正在使用 node-fetch 作为npm的依赖者,有一个潜在的 需要意识到,因为没有 response 对于身体的定制健康检查,它将引入内存漏出,随着时间的推移会逐渐积聚起来,并因没有软件而崩溃应用程序 response 已经就位.
需要围绕这个问题开展工作。 要么放进.. response.json 或一个 response.text 在海关健康检查中,如下:
const fetch = require('node-fetch');
class MyHealthCheck extends HealthCheck.Check {
async run() {
try {
const response = await fetch('https://some.api-address.com', {
method: 'GET',
headers: {
'apikey': 'your api key here'
}
});
if (response.status !== 200) {
throw new Error('Unable to access API');
}
if (response.status === 200) {
this.ok = true;
this.checkOutput = 'OK';
response.text(); // read the body so it can be garbage collected
}
} catch (error) {
this.ok = false;
this.checkOutput = error.toString();
}
}
}
捐款
这个模块有一套完整的单元测试,通过ESLint验证. 您可以在打开拉出请求前使用下列命令来检查您的代码 .
make verify # verify JavaScript code with ESLint
make test # run the unit tests and check coverage
出版
当创建匹配模式的新标记时, CI 将自动发布模块的新版本 /v.*/。 。 。 .
移徙指南
| 状态 | 主要版本 | 最后一个小版本 | 移徙指南 |
|---|---|---|---|
| 活动 | 页:1 | 不详 | 迁移到 v4 |
| 已贬值 | 3个 | 不详 | 迁移到 v3 |
| 已贬值 | 2.1 国家 | 不详 | 迁移到 v2 |
| 已贬值 | 1个 | 1.11 联合国 | 不详 |
联系人
如果您对本单元有任何问题或评论,或需要帮助使用,请 提出问题访问 #origami - 支持 或电子邮件 折纸支持。 。 。 .
许可证
本软件由金融时报根据以下规定出版: 麻省理工学院许可证。 。 。 .