const { nodeProcessMetrics, createProcessMetrics } = require('./nodeProcessMetrics'); const { nodeOsMetrics, createOSMetrics } = require('./nodeOsMetrics'); const { createExpressMiddleware, createKoaMiddleware, onRequestStart, onRequestEnd } = require('./nodeHttpRequestMetrics'); /** * The main module for the measured-node-metrics lib. * * Various functions to help create node metrics and http framework middlewares * that can be used with a self reporting metrics registry to easily instrument metrics for a node app. * * @module measured-node-metrics */ module.exports = { /** * Map of metric names and a functions that can be used to generate that metric object that can be registered with a * self reporting metrics registry or used as seen fit. * * See {@link nodeProcessMetrics}. * * @type {Object.<string, function>} */ nodeProcessMetrics, /** * Method that can be used to add a set of default node process metrics to your node app. * * registers all metrics defined in the {@link nodeProcessMetrics} map. * * @function * @name createProcessMetrics * @param {SelfReportingMetricsRegistry} metricsRegistry * @param {Dimensions} customDimensions * @param {number} reportingIntervalInSeconds */ createProcessMetrics, /** * Map of metric names and a functions that can be used to generate that metric object that can be registered with a * self reporting metrics registry or used as seen fit. * * See {@link nodeOsMetrics}. * * @type {Object.<string, function>} */ nodeOsMetrics, /** * Method that can be used to add a set of default node process metrics to your app. * * registers all metrics defined in the {@link nodeOsMetrics} map. * * @function * @name createOSMetrics * @param {SelfReportingMetricsRegistry} metricsRegistry * @param {Dimensions} customDimensions * @param {number} reportingIntervalInSeconds */ createOSMetrics, /** * Creates an Express middleware that reports a timer on request data. * With this middleware you will get requests counts and latency percentiles all filterable by status codes, http method, and uri paths. * * @function * @name createExpressMiddleware * @param {SelfReportingMetricsRegistry} metricsRegistry * @param {number} [reportingIntervalInSeconds] * @return {Function} */ createExpressMiddleware, /** * Creates a Koa middleware that reports a timer on request data. * With this middleware you will get requests counts and latency percentiles all filterable by status codes, http method, and uri paths. * * @function * @name createExpressMiddleware * @param {SelfReportingMetricsRegistry} metricsRegistry * @param {number} [reportingIntervalInSeconds] * @return {Function} */ createKoaMiddleware, /** * At the start of the request, create a stopwatch, that starts tracking how long the request is taking. * @function * @name onRequestStart * @return {Stopwatch} */ onRequestStart, /** * When the request ends stop the stop watch and create or update the timer for requests that tracked by method, statuscode, path. * The timers (meters and histograms) that get reported will be filterable by status codes, http method, the uri path. * You will be able to create dash boards such as success percentage, latency percentiles by path and method, etc. * * @function * @name onRequestEnd * @param metricsRegistry The Self Reporting Metrics Registry * @param stopwatch The stopwatch created by onRequestStart * @param method The Http Method for the request * @param statusCode The status code for the response * @param [uri] The uri for the request. Please note to avoid out of control time series dimension creation spread, * you would want to strip out ids and or other variables from the uri path. * @param [reportingIntervalInSeconds] override the reporting interval defaults to every 10 seconds. */ onRequestEnd };