a metrics decorator to automate function metrics in operation/action model to monitor system and upstream services as well as business metrics
It has been consolidated into n-express-monitor, please use that instead unless you're curious about things under the hood or want to customise your own tool chain
npm i @financial-times/n-auto-metrics --save
/* app.js */
import { metrics } from 'n-express'; // or any other source has the `next-metrics` instance
import { initAutoMetrics } from '@financial-times/n-auto-metrics';
initAutoMetrics(metrics); // do this before app.use() any enhanced middleware/controller
A top level execution is categorised as an Operation, this can be an express middleware or controller function. Any lower level execution is categorised as an Action, and a two-level model of operation-action is encouraged.
With different log level settings, it would log the start, success/failure status
of the function execution, function names to scope
the operation/action, description of the error
and params you need to recreate
the error.
import { compose, autoNext, metricsOperation } from '@financial-times/n-auto-metrics';
const operation = (req, res) => {
//let the error to be thrown
};
export default compose(
autoNext,
metricsOperation,
)(operation);
import { metricsAction } from '@financial-times/n-auto-metrics';
const action = (params: Object, meta: Object) => {}; // the function signature needs to follow the convention
export default metricsAction(action);
const operation = ({ meta }, res, next) => {
action(param, meta); // pass the meta object from req.meta to thread operation/action
//...
};
for business metrics:
operation.${operation}.segment.${segment}.state.start
operation.${operation}.segment.${segment}.state.success
operation.${operation}.segment.${segment}.state.failure.category.${e.category}.type.${e.type}
for system reliability:
operation.${operation}.action.${action}.state.start
operation.${operation}.action.${action}.state.success
operation.${operation}.action.${action}.state.failure.category.${e.category}.type.${e.type}
operation.${operation}.action.${action}.state.failure.category.${e.category}.status.${e.status}
for upstream service reliability:
service.${service}.action.${action}.state.start
service.${service}.action.${action}.state.success
service.${service}.action.${action}.state.failure.category.${e.category}.type.${e.type}
service.${service}.action.${action}.state.failure.category.${e.category}.status.${e.status}
check the common meta used by n-auto-logger
meta.segment
would be picked up in the metrics to help measure business metrics with user segment breakdown.