Skip to content

Telemetry

Electric provides telemetry data — such as traces, logs, and metrics — for real-time system monitoring.

Metrics

Metrics are reported in StatsD and Prometheus formats. To configure Electric to expose metric information in those formats use the following environment variables.

VARIABLEDescription
ELECTRIC_STATSD_HOSTThe address of the StatsD server
ELECTRIC_PROMETHEUS_PORTThe scrape port for Prometheus

You can get the current status of the service by calling the http://electric-hostname:PROMETHUES_PORT/metrics endpoint.

OpenTelemetry

Metrics, traces and logs are exported using the OpenTelemetry Protocol (OTLP). You can configure the OpenTelemetry Exporter for Electric using the following environment variables.

VARIABLETypeDescription
ELECTRIC_OTLP_ENDPOINTURLAn OpenTelemetry collector endpoint url.
ELECTRIC_HNY_API_KEYstringAPI key for exporting to Honeycomb.io.
ELECTRIC_HNY_DATASETstringDataset name for Honeycomb.io.
ELECTRIC_OTEL_DEBUGbooleanEnable or disable debug logging of telemetry data to stdout.

Electric enables export of telemetry data when it is configured with an ELECTRIC_OTLP_ENDPOINT.

There is builtin support for Honeycomb.io: telemetry data can be exported directly to it by specifying ELECTRIC_OTLP_ENDPOINT=https://api.honeycomb.io and adding at least the ELECTRIC_HNY_API_KEY configuration option.

In order to use other telemetry data collectors, you'll need to run the OpenTelemetry Collector and include the exporter of choice in its configuration file along with any required credentials, then use Collector's URL as the value for ELECTRIC_OTLP_ENDPOINT.

Electric always adds the following resource attributes to events:

elixir
%{service: %{name: service_name, version: version}, instance: %{id: instance_id}}

Attributes service_name and instance_id can be overridden with ELECTRIC_SERVICE_NAME and ELECTRIC_INSTANCE_ID respectively. By default, instance_id is an uuid.

Electric will also load additional resource attributes from OTEL_RESOURCE_ATTRIBUTES. Learn more about resource attributes in the OpenTelemetry documentation.

Example

You can find an example of a docker compose that runs Electric with an OpenTelemetry Collector agent that sends telemetry data to Honeycomb under packages/sync-service/dev.

Set ELECTRIC_HNY_DATASET and ELECTRIC_HNY_API_KEY environment variables in a terminal session and run docker compose in it like so:

shell
docker compose -f docker-compose-otel.yml up