This project uses IBM Cloud Monitoring to save metrics from IBM Cloud Functions
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.
Metrics can be forwarded into IBM Cloud Monitoring in real-time or sent in batches using a background process.
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)
}
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.
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