Giter Site home page Giter Site logo

kagent's Introduction

KAgent

特性

  • 内置应用度量标准 Metrics,支持应用打点;
  • 内置 Node.js 进程级信息收集任务,支持外部扩展;
  • 内置 Filesystem Reporter 上报监控信息,支持自定义;

API 介绍

start(options, callback)

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) => {

});

new Metrix({ files })

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')
    }
});

getCounter()

const counter = metrix.getCounter();
counter.inc();
counter.dec();

getGuage()

const guage = metrix.getGuage();
guage.setValue();

getHistogram()

const histogram = metrix.getHistogram();
histogram.update(1);

getMeter()

const meter = metrix.getMeter();
meter.mark();

getTimer()

const timer = metrix.getTimer();
// some async thing
// await xxx();
timer.end();

addMetric(scope, metric, tag?)

metrix.addMetric(['connection'], counter);
metrix.addMetric(['cpu'], guage);
metrix.addMetric(['histogram'], histogram);
metrix.addMetric(['meter'], meter);
metrix.addMetric(['access'], timer);

概念抽象

Logger

应用运行的过程中的 Metrics 记录,会运行在 worker 进程。

Collector

Metrics 的收集者,负责定期的执行 Task 任务,并合并所有 Task 的输出,调用 Reporter 上报。

Task

Task 是 Collector 得以生成 Metrics 信息的载体,每个 Task 都允许设定执行时间,不设定执行时间,或是和默认的执行周期一致的,则会推入到 collect 阶段前执行。

有以下内置的 Task:

Process Task

收集所有运行中的 Node.js 进程运行信息,包括 CPU 占用率、内存占用、启动参数等等。

Metrix Parser Task

分析应用/框架的打点记录,用于生成 QPS/RT 等关键指标,也可用于业务数据的打点。

Clean Log Task

定期清除 KAgent 的运行日志,以防撑爆硬盘.

Agent

服务端的代理人,包括:

  1. 执行服务端命令;
  2. 上报 Metrics 信息。

Reporter

由 Collector 驱动,进行 Metrics 上报,内置落盘文件的 Reporter。

Filesystem Reporter

落盘 JSON 文件,一般可由系统 agent 采集,汇总到自家的监控系统。

LICENSE

MIT

kagent's People

Contributors

imhype avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kagent's Issues

[bug] out of memory

<--- Last few GCs --->

[40456:0x332be20] 177616 ms: Mark-sweep 1406.9 (1659.3) -> 1406.8 (1659.3) MB, 663.0 / 0.0 ms allocation failure GC in old space requested
[40456:0x332be20] 178292 ms: Mark-sweep 1406.8 (1659.3) -> 1406.8 (1658.8) MB, 675.8 / 0.0 ms last resort GC in old space requested
[40456:0x332be20] 178949 ms: Mark-sweep 1406.8 (1658.8) -> 1406.8 (1658.8) MB, 656.3 / 0.0 ms last resort GC in old space requested

<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x166045fa5ee1
1: execute [/home/appops/kaola-weex-fed/kaola-weex-fed-stable_perfjd/@kapp/approot/node_modules/kagent/lib/core/parser/abstract-parser.js:~102] [pc=0x1ccf34ab194d](this=0x1fbd900cabc9 ,data=0x3db34653edd9 <Very long string[62116]>)
3: onData [/home/appops/kaola-weex-fed/kaola-weex-fed-stable_perfjd/@kapp/approot/node_modules/kagent/lib/core/parser/abstr...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.