Metrics & Telemetry

Record application metrics using counters, gauges, and histograms.

Loading

local metrics = require("metrics")

Counters

Increment Counter

metrics.counter_inc("requests_total", {method = "POST"})
Parameter Type Description
name string Metric name
labels table? Label key-value pairs

Returns: boolean, error

Add to Counter

metrics.counter_add("bytes_total", 1024, {direction = "out"})
Parameter Type Description
name string Metric name
value number Value to add
labels table? Label key-value pairs

Returns: boolean, error

Gauges

Set Gauge

metrics.gauge_set("queue_depth", 42, {queue = "emails"})
Parameter Type Description
name string Metric name
value number Current value
labels table? Label key-value pairs

Returns: boolean, error

Increment Gauge

metrics.gauge_inc("connections", {pool = "db"})
Parameter Type Description
name string Metric name
labels table? Label key-value pairs

Returns: boolean, error

Decrement Gauge

metrics.gauge_dec("connections", {pool = "db"})
Parameter Type Description
name string Metric name
labels table? Label key-value pairs

Returns: boolean, error

Histograms

Record Observation

metrics.histogram("duration_seconds", 0.123, {method = "GET"})
Parameter Type Description
name string Metric name
value number Observed value
labels table? Label key-value pairs

Returns: boolean, error

Errors

Condition Kind Retryable
Collector not available errors.INTERNAL no

See Error Handling for working with errors.