# Metrics _Path: en/lua/system/metrics_ ## Table of Contents - Metrics & Telemetry ## Content # Metrics & Telemetry Record application metrics using counters, gauges, and histograms. ## Loading ```lua local metrics = require("metrics") ``` ### Increment Counter ```lua 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 ```lua 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` ### Set Gauge ```lua 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 ```lua metrics.gauge_inc("connections", {pool = "db"}) ``` | Parameter | Type | Description | |-----------|------|-------------| | `name` | string | Metric name | | `labels` | table? | Label key-value pairs | **Returns:** `boolean, error` ### Decrement Gauge ```lua metrics.gauge_dec("connections", {pool = "db"}) ``` | Parameter | Type | Description | |-----------|------|-------------| | `name` | string | Metric name | | `labels` | table? | Label key-value pairs | **Returns:** `boolean, error` ### Record Observation ```lua 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](lua/core/errors.md) for working with errors. ## Navigation Previous: I/O (lua/system/io) Next: OS Time (lua/system/ostime)