- 内置应用度量标准 Metrics,支持应用打点;
- 内置 Node.js 进程级信息收集任务,支持外部扩展;
- 内置 Filesystem Reporter 上报监控信息,支持自定义;
const KAgent = require('kagent');
KAgent.start({
name: 'appName',
reporter: ['filesystem'],
tasks: [],
rundir: path.join(__dirname, 'fixtures/run'),
flushInterval: 1000,
files: {
'built-in': path.join(__dirname, 'fixtures/kagent/built-in.log'),
application: path.join(__dirname, 'fixtures/kagent/application.log'),
error: path.join(__dirname, 'fixtures/common-error.log')
}
}, (err, results) => {
});
const { Metrix } = require('kagent');
const metrix = new Metrix({
files: {
'built-in': path.join(__dirname, 'fixtures/kagent/built-in.log'),
application: path.join(__dirname, 'fixtures/kagent/application.log'),
error: path.join(__dirname, 'fixtures/common-error.log')
}
});
const counter = metrix.getCounter();
counter.inc();
counter.dec();
const guage = metrix.getGuage();
guage.setValue();
const histogram = metrix.getHistogram();
histogram.update(1);
const meter = metrix.getMeter();
meter.mark();
const timer = metrix.getTimer();
// some async thing
// await xxx();
timer.end();
metrix.addMetric(['connection'], counter);
metrix.addMetric(['cpu'], guage);
metrix.addMetric(['histogram'], histogram);
metrix.addMetric(['meter'], meter);
metrix.addMetric(['access'], timer);
应用运行的过程中的 Metrics 记录,会运行在 worker 进程。
Metrics 的收集者,负责定期的执行 Task 任务,并合并所有 Task 的输出,调用 Reporter 上报。
Task 是 Collector 得以生成 Metrics 信息的载体,每个 Task 都允许设定执行时间,不设定执行时间,或是和默认的执行周期一致的,则会推入到 collect 阶段前执行。
有以下内置的 Task:
收集所有运行中的 Node.js 进程运行信息,包括 CPU 占用率、内存占用、启动参数等等。
分析应用/框架的打点记录,用于生成 QPS/RT 等关键指标,也可用于业务数据的打点。
定期清除 KAgent 的运行日志,以防撑爆硬盘.
服务端的代理人,包括:
- 执行服务端命令;
- 上报 Metrics 信息。
由 Collector 驱动,进行 Metrics 上报,内置落盘文件的 Reporter。
落盘 JSON 文件,一般可由系统 agent 采集,汇总到自家的监控系统。
MIT