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 =const service =metricsservice = serviceconst main = {return message: "Hello World"}exportsmain =
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 const log = metricsservice metrics { log return client}
batch ingestion
set up metric collectors
-
Set up action handlers with
openwhisk-metrics
const metrics =const main = {return message: "Hello World"}moduleexportsmain =
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
).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