This package provides analytics and distributed tracing for event-driven applications running on AWS Lambda.
Install by requiring this module, passing it an object with your project token (register for access), and it will automatically monitor and collect metrics from your applications running on AWS Lambda.
If you are using the Serverless Framework to deploy your lambdas, check out our serverless plugin.
Example:
const iopipeLib = require('@iopipe/core');
const iopipe = iopipeLib({ token: 'PROJECT_TOKEN' });
exports.handler = iopipe((event, context) => {
context.succeed('This is my serverless function!');
});
You can configure your iopipe setup through one or more different methods - that can be mixed, providing a config chain. The current methods are listed below, in order of precendence. The module instantiation object overrides all other config values (if values are provided).
- Module instantiation object
IOPIPE_*
environment variables- An
.iopiperc
file - An
iopipe
package.json entry - An
extends
key referencing a config package - Default values
If not supplied, the environment variable $IOPIPE_TOKEN
will be used if present. Find your project token
Debug mode will log all data sent to IOpipe servers to STDOUT. This is also a good way to evaluate the sort of data that IOpipe is receiving from your application. If not supplied, the environment variable $IOPIPE_DEBUG
will be used if present.
const iopipe = require('@iopipe/core')({
token: 'PROJECT_TOKEN',
debug: true
});
exports.handler = iopipe((event, context, callback) => {
// Do things here. We'll log info to STDOUT.
});
The number of milliseconds IOpipe will wait while sending a report before timing out. If not supplied, the environment variable $IOPIPE_NETWORK_TIMEOUT
will be used if present.
const iopipe = require('@iopipe/core')({ token: 'PROJECT_TOKEN', networkTimeout: 30000})
By default, IOpipe will capture timeouts by exiting your function 150ms early from the AWS configured timeout, to allow time for reporting. You can disable this feature by setting timeoutWindow
to 0
in your configuration. If not supplied, the environment variable $IOPIPE_TIMEOUT_WINDOW
will be used if present.
const iopipe = require('@iopipe/core')({ token: 'PROJECT_TOKEN', timeoutWindow: 0})
Plugins can extend the functionality of IOpipe in ways that best work for you. Just follow the guides for the plugins listed below for proper usage:
Example:
const tracePlugin = require('@iopipe/trace');
const iopipe = require('@iopipe/core')({
token: 'PROJECT_TOKEN',
plugins: [tracePlugin()]
});
exports.handler = iopipe((event, context, callback) => {
// Run your fn here
});
Conditionally enable/disable the agent. The environment variable $IOPIPE_ENABLED
will also be checked.
Not recommended for webpack/bundlers due to dynamic require.
You can configure iopipe via an .iopiperc
RC file. An example of that is here. Config options are the same as the module instantiation object, except for plugins. Plugins should be an array containing mixed-type values. A plugin value can be a:
- String that is the name of the plugin
- Or an array with plugin name first, and plugin options second
{
"token": "wow_token",
"plugins": [
"@iopipe/trace",
["@iopipe/profiler", {"enabled": true}]
]
}
IMPORTANT: You must install the plugins as dependencies for them to load properly in your environment.
Not recommended for webpack/bundlers due to dynamic require.
You can configure iopipe within a iopipe
package.json entry. An example of that is here. Config options are the same as the module instantiation object, except for plugins. Plugins should be an array containing mixed-type values. A plugin value can be a:
- String that is the name of the plugin
- Or an array with plugin name first, and plugin options second
{
"name": "my-great-package",
"dependencies": {
"@iopipe/trace": "^0.2.0",
"@iopipe/profiler": "^0.1.0"
},
"iopipe": {
"token": "wow_token",
"plugins": [
"@iopipe/trace",
["@iopipe/profiler", {"enabled": true}]
]
}
}
IMPORTANT: You must install the plugins as dependencies for them to load properly in your environment.
Not recommended for webpack/bundlers due to dynamic require.
You can configure iopipe within a package.json or rc file by referencing a extends
config package. An example of that is here. Config options are the same as the module instantiation object, except for plugins. Plugins should be an array containing mixed-type values. A plugin value can be a:
- String that is the name of the plugin
- Or an array with plugin name first, and plugin options second
For an example of a config package, check out @iopipe/config.
IMPORTANT: You must install the config package and plugins as dependencies for them to load properly in your environment.
Apache 2.0