freedom.js module for anonymized metric collection.
This module encapuslates the logic presented in RAPPOR, a technique for randomize aggregatable privacy-preserving Ordinal responses.
-
Add
anonmetrics.json
as a dependency of your module, using themetrics
API. -
Establish the metrics you want to monitor, and instantiate anonmetrics with this definition. The definition format is described in the Metrics Definition section.
var metrics = freedom.anonMetrics({ "name": "myMetrics", "definition": { ... } });
-
Create metrics instances as needed, using the defined name.
var metrics = freedom.anonMetrics("myMetrics");
-
Report a metric values at appropriate points.
metrics.report('successes', 1); metrics.report('bandwidth', observedBandwidth);
-
Extract a report of current metric information for use in a report.
metrics.retrieve().then(function(report) { ... });
A declarative description of how the anonmetrics module should process reported data for your application is passed to the constructor once throughout the modules making up your application. Other instances can report metrics before this definition is provided, so you don't need to worry about race conditions, but the definition does need to be provided in the lifetime of the module or reports will not be saved - since storage will only record statistics and not raw reported values.
The defintion of metrics follow the following format:
"country": {
"type": "string",
},
"connections": {
"type": "logarithmic",
"base": 10
}
Appropriate for positive integer values where the order of magnitude is interesting.
Appropriate for arbitrary strings, where relative frequencies of known exact values can be compared.
Pull requests are happily taken. Automated tests are designed to enforce correctness and code-quality of the repository.