cloud-functions-metrics-service
v0.2.0
Published
Node.js library to save serverless metrics from openwhisk to IBM Cloud Monitoring Service
Downloads
4
Maintainers
Readme
cloud-functions-metrics-service
This project uses IBM Cloud Monitoring to save metrics from IBM Cloud Functions.
Metrics collected by the openwhisk-metrics library are forwarded into the external monitoring service.
usage
Metrics can be forwarded into IBM Cloud Monitoring in real-time or sent in batches using a background process.
- Real-time ingestion ensures metrics appear immediately in the monitoring service. Metrics forwarded using the batch ingestion won't be available until the next background task execution.
- Batch ingestion does not add any delay to action invocations. Real-time ingestion saves invocation metrics each time the action handler is called. This adds a (small) delay to each invocation, where the library calls the external metrics service.
real-time ingestion
Install OpenWhisk metrics and IBM Cloud Monitoring service libraries
$ npm install openwhisk-metrics cloud-functions-metrics-service
Wrap action handlers using external libraries
const metrics = require('openwhisk-metrics') const service = require('cloud-functions-metrics-service') metrics.service = service.client({ host: 'metrics.ng.bluemix.net', scope: '...', api_key: '...' }) const main = params => { return { message: "Hello World" } } exports.main = metrics(main)
Configuration options for the openwhisk-metrics
library are available in the project repository.
Configuration options for the IBM Cloud Monitoring service are available in the project repository.
Metrics forwarded using external real-time ingestion will not be logged to the console. If you want to enable this for debugging or testing, use this code snippet.
const client = service.client({
host: 'metrics.ng.bluemix.net',
scope: '...',
api_key: '...'
})
const log = metrics.service
metrics.service = values => {
log.save(values)
return client.save(values)
}
batch ingestion
set up metric collectors
Set up action handlers with
openwhisk-metrics
const metrics = require('openwhisk-metrics') const main = params => { return { message: "Hello World" } } module.exports.main = metrics(main)
All actions you want to collect metrics for should use the library as above. Use the action names in the configuration below for the background task.
create metric forwarder action
Download project repository
$ git clone https://github.com/jthomas/cloud-functions-metrics-service $ cd cloud-functions-metrics-service
Create action deployment package.
$ npm install $ zip -r action.zip index.js package.json lib node_modules
Fill in authentication parameters in action configuration file (
config.json
).{ "actions": ["action_names_to_monitor"], "service": { "host": "metrics.ng.bluemix.net", "scope": "...", "api_key": "..." } }
Configuration options for the IBM Cloud Monitoring service are available in the project repository.
Create new OpenWhisk action from deployment package and configuration file.
$ wsk action create metric-forwarder --kind nodejs:8 action.zip --param-file config.json
Create trigger feed for alarm package to run
metric-forwarder
on periodic schedule.$ wsk trigger create interval \ --feed /whisk.system/alarms/interval \ --param minutes 10 \
Bind trigger to action using rule.
$ wsk rule create forward-metrics-on-interval interval metric-forwarder