1.0.3 • Published 2 years ago

@polybit/ti v1.0.3

Weekly downloads
-
License
BSD-2-Clause
Repository
github
Last release
2 years ago

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'))