用于 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

使用 Node.js 开发一个 QEMU 的网页版入口

源码

NOEMU (Node <3 QEMU)

Why this project

I’m a front-end developer and I’m learning Node
I’m also learning QEMU, which works as a hypersior
I want to build a light weighted VM host using these two technology

Why QEMU

QEMU is the simplest hypervisor I can thinkof, it is easy to install on Ubuntu
It has great performance on virtual machines, compared to other hypervisors.
QEMU has great VDI to access virtual machines via SPICE and VNC
SPICE is friendly to HTML5

Project Goals

VM Host
RESTFul Management API

What API will be provided

Create Image
Delete Image
Create VM
Delete VM
Power On VM
Power Off VM
Configure VM
Take Snapshot
Restore Snapshot