Create USDT probes and instrument your application easily and without rebuilding Node.
At the moment this module only runs on Linux and requires libstapsdt to be installed to create runtime probes.
To install libstapsdt, run:
sudo add-apt-repository ppa:sthima/oss
sudo apt-get update
sudo apt-get install libstapsdt0 libstapsdt-dev
Build from libstapsdt.
npm install usdt
The following code will create a probe named firstProbe
.
const USDT = require("usdt");
const provider = new USDT.USDTProvider("nodeProvider");
const probe1 = provider.addProbe("firstProbe", "int", "char *");
provider.enable();
let countdown = 10;
function waiter() {
console.log("Firing probe...");
if(countdown <= 0) {
console.log("Disable provider");
provider.disable();
}
probe1.fire(function() {
console.log("Probe fired!");
countdown = countdown - 1;
return [countdown, "My little string"];
});
}
setInterval(waiter, 750);
You can then trace this probe with any tool able to trace Systemtap's probes. Here's an example with eBPF/bcc:
sudo trace -p $(pgrep node) 'u::firstProbe "%d - %s", arg1, arg2'