Observability
Dsynct exports logs and metrics via OpenTelemetry (OTel). This allows you to monitor migration progress, diagnose performance bottlenecks, and track change stream lag using tools like SigNoz, Grafana, or any OTel-compatible backend.
Configuration
Enable OpenTelemetry by passing the --otel flag and setting the OTEL_EXPORTER_OTLP_ENDPOINT environment variable to point at your OTel gRPC collector under the app part of the command:
docker run \
-e 'OTEL_EXPORTER_OTLP_ENDPOINT=http://<COLLECTOR_HOSTNAME>:4317' \
markadiom/dsynct app \
--otel \
<OTHER_COMMANDS_WITH_THEIR_OPTIONS> \For simple mode (no Temporal) the options go before sync:
docker run \
-e 'DSYNCT_MODE=simple' \
-e 'OTEL_EXPORTER_OTLP_ENDPOINT=http://<COLLECTOR_HOSTNAME>:4317' \
markadiom/dsynct \
--otel \
sync \
<OPTIONAL PARAMETERS> \
<SOURCE> <DESTINATION>OTel Flags
--otel
Enable exporting logs and metrics to an OTel collector.
--otel-metric-interval
Interval between metric pushes. Default: 10s.
--otel-service-name
Service name reported to OTel. Default: dsynct.
Logs
When --otel is enabled, structured logs (JSON) are emitted both to stderr and to the OTel log collector. The log level can be controlled with --log-level (default: INFO).
Metrics
All metrics are emitted under the dsync-flow OTel meter. Metrics are labeled with attributes such as namespace, success, and worker to allow filtering and grouping.
Common Attributes
namespace
The namespace (collection/table) being processed.
success
true if the operation succeeded, false if it failed.
worker
Identifies the worker type (e.g. initial-sync, stream-changes, writer-0, transform-0, updates-0).
index
Stream partition index (for change stream gauges).
Initial Sync Metrics
dsynct.read
Counter
documents
Total number of documents read from the source.
dsynct.written
Counter
documents
Total number of documents written to the destination.
dsynct.list_data
Histogram
ms
Latency of each ListData call to the source connector.
dsynct.write_data
Histogram
ms
Latency of each WriteData call to the destination connector.
dsynct.get_transform
Histogram
ms
Latency of each GetTransform call to the transformer. Only emitted when a transformer is configured.
Change Stream (CDC) Metrics
dsynct.read
Counter
events
Total number of change events read from the source. Shares the same counter as initial sync reads.
dsynct.written
Counter
events
Total number of change events written to the destination.
dsynct.write_updates
Histogram
ms
Latency of each WriteUpdates call to the destination connector.
dsynct.get_transform
Histogram
ms
Latency of each GetTransform call during change stream processing.
dsynct.stream_read_gauge
Gauge
events
Running total of change events read for a given stream partition.
dsynct.stream_written_gauge
Gauge
events
Running total of change events written for a given stream partition.
dsynct.read_ahead_gauge
Gauge
The LSN (log sequence number) value reported by the source. Useful for tracking how far ahead the source is.
dsynct.last_event_time
Gauge
ms (epoch)
Timestamp of the last change event processed, in milliseconds since epoch.
dsynct.since_last_event_time
Gauge
ms
Time elapsed since the last change event was processed. Useful for detecting change stream lag.
Dashboards
Pre-configured SigNoz dashboards are available in the public repository. You can import them by following the SigNoz import instructions.
Key Things to Monitor
Throughput: Track
dsynct.readanddsynct.writtencounters to monitor documents/events per second.Latency: Use the
dsynct.list_data,dsynct.write_data, anddsynct.write_updateshistograms to identify slow operations.Change stream lag: Monitor
dsynct.since_last_event_timeto detect if the destination is falling behind the source. A growing value indicates the CDC pipeline is not keeping up.Read-ahead: The difference between
dsynct.stream_read_gaugeanddsynct.stream_written_gaugeshows how many events have been read but not yet written, indicating backpressure.Errors: Filter by
success=falseto isolate failed operations.
Last updated