用于 APM 的装饰器

源码

node-oneapm-decorators

ES7 decorators that can be used in your app to track performance


If you are writting a NodeJS application in ES6(7), you can use this module to track your application performance very easily.

Background

Let’s assume your application definition looks like this

1
2
3
4
5
export default class App {
handleRequest(req, res) {
res.end('ok');
}
}

Here is how you start the server

1
2
3
4
5
import {createServer} from 'http';
import App from './App.es6';
let app = new App();
let server = createServer(app.handleRequest);
server.listen(3000);

Enhance it

Show UserAgent of each request

1
2
3
4
5
6
7
8
import {useragent} from '../';

export default class App {
@useragent
handleRequest(req, res) {
res.end('ok');
}
}

Track response time using InfluxDB

1
2
3
4
5
6
7
8
9
10
11
import {influxdb} from '../';

export default class App {
@influxdb({
host: 'influxdb-longtian.myalauda.cn',
port: 11431
})
handleRequest(req, res) {
createReadStream(path.join(__dirname, 'index.html')).pipe(res);
}
}

It will continue to flush performance data into InfluxDB, which can be visualized using Grafana

You can set up your own Influxdb server, however here is the DEMO

How to run the demo

1
2
3
4
git clone git@github.com:wyvernnot/node-oneapm-decorators.git
cd node-oneapm-decorators
npm install
npm start

Summary

  • Set up an InfluxDB server
  • Set up Grafana to visualize metrics in InfluxDB
  • Import OneAPM decorators into your ES7 code
  • Compile and restart your server
  • Edit dashboards in Grafana to see charts

License

MIT