- Leader/Follower 进程模型,保障监控模块高可用;
- 内置进程监控探针,采集进程信息;
- 与 connection 模块维持长连接,上报监控信息与执行远程端命令
$ npm i -S console-agent
module.exports = {
"server": "http://127.0.0.1:7009", // connection 模块暴露的地址
"appid": "5", // appid
"secret": "84fe6510-1340-11e9-94fa-d9a76a880c81", // secret
"cluster": "localjd" // 集群名
}
$ node index.js --require ./node_modules/console-agent/index.js
egg 用户推荐使用 egg-console-agent
const agent = require('console-agent');
Leader/Follower
模型建立以及与 Connection
的对接是异步过程。本地埋探针的操作应当使用 ready
函数确保流程启动完毕。
const getMysqlConnections = () => {};
agent.ready(() => {
agent.guage('connections', () => {
return getMysqlConnections()
})
});
const getMysqlConnections = () => {};
agent.guage('connections', () => {
return getMysqlConnections()
})
该操作用来统计某一时刻的数量,常用于统计连接数
const redisCounter = agent.counter('redis');
redisCounter.inc();
redisCounter.dec();
该操作用来统计某一操作的数据分布,如 MIN
/MAX
/AVG
const redisRT = agent.histogram('redis-rt');
redisRT.update(35);
redisRT.update(34);
redisRT.update(33);
该操作用来统计某一操作的触发频率,如 QPS
const redisQPS = agent.meter('redis-qps');
redisRT.mark();
redisRT.mark();
redisRT.mark();
timer
是 meter
与 histogram
的封装。
const http = require('http');
http.createServer((req, res) => {
const end = res.end;
const url = URL.parse(req.url)
const path = url.pathname;
const timer = kagent.timer('http');
timer.start();
res.end = function(...args1) {
timer.close();
kagent.meter('app/url/' + res.statusCode + '/' + path).mark();
return Reflect.apply(end, this, args1);
}
});
MIT