@polybit/ti
v1.0.3
Published
Autocode's metrics client
Downloads
6
Readme
TI
Autocode's metrics client
Usage
process.env.METRICS_APP = 'my-cool-application'
process.env.METRICS_TIMESTREAM_DB = 'database_name'
process.env.METRICS_TIMESTREAM_TABLE = 'table_name'
const ti = require('ti')
// Set a key-value tag that will be added to every datapoint reported
// from this process
ti.dimension('cluster.worker.id', cluster.worker.id)
// Every metric has an optional third parameter which creates a separate
// timeseries for a dimension. Each of these are tracked and reported
// seperately - so keep cardinality in mind.
// Track and report the minimum value seen for a metric
ti.min('queue.length', 4)
// Track and report the maximum value seen for a metric
ti.max('queue.length', 4)
// Track and report the average value seen for a metric
ti.average('queue.length', 4)
// Track and report the sum of all values
ti.sum('http.request', 1, 'statusCode=200')
ti.sum('http.request', 1, 'path=/healthcheck')
ti.sum('http.request', 1)
// Track and report a percentile based metric
// This will generate the following timeseries:
// * [name].p25
// * [name].p50
// * [name].p75
// * [name].p90
// * [name].p95
// * [name].p99
// * [name].min
// * [name].max
// * [name].mean
ti.percentile('http.request.latency', 1000, 'statusCode=500')
ti.percentile('http.request.latency', 1000, 'path=/healthcheck')
ti.percentile('http.request.latency', 1000)
// Report all metrics to Timestream. Metrics are reported every 60s.
// This function can be used to flush metrics before shutting down the
// process. After flushing, all metrics are cleared from memory. If no
// value is recorded in a period, no timeseries will be pushed to
// Timestream for that unit of time.
ti.flush((err) => console.log('All metrics recorded to timestream'))