Release 1.2.1
SOFALookout Nodejs 客户端
SOFALookout 是一个利用多维度的 metrics 对目标系统进行度量和监控的项目。该模块是它的 Nodejs 客户端实现
$ npm install sofa-lookout-node --save
'use strict'; const LookoutRegistry = require('sofa-lookout-node').LookoutRegistry; const StdoutObserver = require('sofa-lookout-node').Observer.Stdout; const logger = console; // 为了方便演示,这里将 metric 输出到标准输出 // 若不传 observer,默认是走 http 上报服务端 const observer = new StdoutObserver(); const registry = new LookoutRegistry({ observer, logger, appName: 'demoApp', }); // 添加公共 tag registry.setCommonTag('instant', 'machine-a'); // id 是用来标识一个 metric 的,它包含 name 和 tags 两部分 // 注意:每次调用 withTag 返回的都是一个全新的 id 对象 const id = registry.createId('http_requests_total').withTag('foo', 'bar'); // 创建 counter 类型 metric const counter = registry.counter(id); counter.inc();
标准输出
===> {"time":"2018-06-27T22:06:30+08:00","tags":{"foo":"bar","app":"demoApp","ip":"30.23.232.7","host":"gaoxiaochendeMacBook-Pro-2.local","instant":"machine-a"},"http_requests_total":{"count":1,"rate":0.03333333333333333}} ===> {"time":"2018-06-27T22:06:32+08:00","tags":{"priority":"LOW","app":"demoApp","ip":"30.23.232.7","host":"gaoxiaochendeMacBook-Pro-2.local","instant":"machine-a"},"lookout.scheduler.poller":{"activeThreads.count":0,"activeThreads.rate":0,"taskExecutionTime.elapPerExec":0,"taskExecutionTime.totalTime":0,"taskExecutionTime.max":0,"taskExecutionDelay.elapPerExec":0,"taskExecutionDelay.totalTime":0,"taskExecutionDelay.max":0}} ===> {"time":"2018-06-27T22:07:00+08:00","tags":{"foo":"bar","app":"demoApp","ip":"30.23.232.7","host":"gaoxiaochendeMacBook-Pro-2.local","instant":"machine-a"},"http_requests_total":{"count":0,"rate":0}}
Lookout metrics 相比传统的 metrics 库单一维度的信息描述,提供了支持多维度描述的 tags 能力。 Lookout metrics 的唯一标识 Id 类,由 name 和 tags 构成。
const id = registry.createId('rpc.provider.service.stats'); const newId = id.withTag('service', 'com.alipay.demo.demoService') .withTag('method', 'sayHi') .withTag('protocol', 'tr') .withTag('alias', 'group1');
const counter = registry.counter(id); counter.inc(); // +1 counter.dec(); // -1
const timer = registry.timer(id); timer.record(2000); // 单位为毫秒
const summary = registry.distributionSummary(id); summary.record(1024);
// 第二个参数是一个函数,返回需要观察的值 registry.gauge(id, () => { return 0.1; });
MixinMetric 是 Lookout 特有的,表示多个基本 metrics 的混合体。引入该 Mixin 目的是优化对「同一度量目标」(即测量目标一致,tags 一致)的多测量指标传输和存储效率,比如:同一线程池的各种指标(线程总数,活跃总数,等待队列大小…)。
//1. getOrAdd MixinMetric const rpcServiceMetric = registry.minxinMetric(id); //2. getOrAdd basic component metric to use const rpcTimer = rpcServiceMetric.timer('perf'); const rpcOutSizeMetric = rpcServiceMetric.distributionSummary('inputSize');
请告知我们可以为你做些什么,不过在此之前,请检查一下是否有已经存在的Bug或者意见。
如果你是一个代码贡献者,请参考代码贡献规范。
MIT
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
sofa-lookout-node
SOFALookout Nodejs 客户端
简介
SOFALookout 是一个利用多维度的 metrics 对目标系统进行度量和监控的项目。该模块是它的 Nodejs 客户端实现
安装
快速上手
标准输出
关于 ID
Lookout metrics 相比传统的 metrics 库单一维度的信息描述,提供了支持多维度描述的 tags 能力。 Lookout metrics 的唯一标识 Id 类,由 name 和 tags 构成。
tags
可接入的统计( Metric )类型
Counter 「计数器」
Timer 「耗时统计器」
DistributionSummary 「值分布情况统计器」
Gauge 「即时数据观察」
MixinMetric 「上述基本统计 metrics 的混合管理体」
MixinMetric 是 Lookout 特有的,表示多个基本 metrics 的混合体。引入该 Mixin 目的是优化对「同一度量目标」(即测量目标一致,tags 一致)的多测量指标传输和存储效率,比如:同一线程池的各种指标(线程总数,活跃总数,等待队列大小…)。
如何贡献
请告知我们可以为你做些什么,不过在此之前,请检查一下是否有已经存在的Bug或者意见。
如果你是一个代码贡献者,请参考代码贡献规范。
开源协议
MIT