Outpost exposes key performance metrics via OpenTelemetry. All metrics are exported as histograms.

Setup

You can configure OpenTelemetry Collector to export metrics to your observability platform.

Enable OpenTelemetry in the Hookdeck Monitoring settings or with the Config API using the OTEL_SERVICE_NAME and OTEL_EXPORTER_OTLP_ENDPOINT variables.

Outpost uses the OpenTelemetry Go SDK and is configured via the standard OTEL_* environment variables documented in the OTel SDK configuration reference.

To enable OpenTelemetry, set OTEL_SERVICE_NAME and configure an exporter endpoint, for example:

OTEL_SERVICE_NAME=outpost
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317

Signal Configuration

Setting OTEL_SERVICE_NAME enables all three signals: traces, metrics, and logs. Two sets of variables control them: the endpoint variables decide which signals are exported, and the exporter variables decide how an exported signal is written (or disable it with none — an exporter value can turn a signal off, never on).

Endpoints

The endpoint variables decide which signals are enabled:

  • One or more per-signal endpoints (OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) with no generic endpoint: only the signals with an endpoint are exported. Signals without an endpoint are disabled, regardless of any exporter setting.
  • The generic OTEL_EXPORTER_OTLP_ENDPOINT: all three signals are exported.
  • No endpoint at all: all three signals are exported to the SDK's default endpoint.

So exporting a single signal takes nothing but its endpoint — to export only metrics:

OTEL_SERVICE_NAME=outpost
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://otel-collector:4317

Exporters

VariableDescription
OTEL_TRACES_EXPORTER / OTEL_METRICS_EXPORTER / OTEL_LOGS_EXPORTERExporter for a single signal. Takes precedence over OTEL_EXPORTER and the config file.
OTEL_EXPORTERExporter for all three signals.

Accepted values are otlp (the default), console (alias stdout) to print to standard output, and none to disable the signal. Because a signal without its endpoint is already disabled when per-signal endpoints are in use, console/stdout only takes effect with no endpoints or with the generic endpoint. For example, to export everything except logs:

OTEL_SERVICE_NAME=outpost
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
OTEL_LOGS_EXPORTER=none

Protocol

Each signal's OTLP protocol is resolved in precedence order:

  1. OTEL_EXPORTER_OTLP_TRACES_PROTOCOL / OTEL_EXPORTER_OTLP_METRICS_PROTOCOL / OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
  2. OTEL_EXPORTER_OTLP_PROTOCOL
  3. OTEL_PROTOCOL
  4. grpc (the default)

Accepted values are grpc, http, and http/protobuf (http and http/protobuf are equivalent).

Available Metrics

delivery_latency

Latency from event publication to successful delivery at the destination.

DimensionDescription
typeDestination type (e.g., webhook, aws_sqs)

delivered_events

Number of events successfully delivered.

DimensionDescription
typeDestination type
statusDelivery status (success, failed)

delivery_connections

Outbound HTTP connections used for delivery, split by whether the connection came from the idle pool or had to be opened.

A high reused=false share means the idle connection pool is not holding connections long enough to be reused — expected at low traffic, but under sustained load it indicates the pool ceiling is binding.

DimensionDescription
typeDestination type (webhook, hookdeck)
reusedWhether the connection was reused from the idle pool

published_events

Number of events published via the Publish API.

DimensionDescription
topicEvent topic

eligible_events

Number of published events that matched at least one destination.

DimensionDescription
topicEvent topic

api_response_latency

API endpoint response latency.

DimensionDescription
endpointAPI endpoint name
methodHTTP method
pathRequest path

api_calls

Number of API calls received.

DimensionDescription
endpointAPI endpoint name
methodHTTP method
pathRequest path

Note: When self-hosting, CPU, Memory and Disk usage are not exported by Outpost — monitor these via your VM or container runtime provider.