If Apache Iggy is useful to you, give it a star on GitHubStar apache/iggy
Apache Iggy
Connectors
These are the docs for Apache Iggy 0.8, kept for reference and no longer updated. Server 0.9.0 changed the wire protocol, so 0.8 clients and servers do not work with 0.9.0. Read the current docs.

Observability

Logs, Prometheus metrics, the stats endpoint, OpenTelemetry export and per-source state files for the connector runtime.

The connector runtime exposes its health through logs, Prometheus metrics, a stats endpoint, OpenTelemetry export, and per-source state files.

Logging

The runtime logs via the tracing crate. The output format is configured in the [logging] section:

[logging]
format = "text" # "text" (default) or "json"

Two per-connector flags in the connector configuration files add more detail:

  • verbose: logs additional per-batch details for the connector.
  • benchmark: emits per-batch timing events on the iggy_connectors::benchmark tracing target.
type = "source"
key = "random"
# ...
verbose = false
benchmark = true

Prometheus metrics

Metrics are served by the runtime HTTP API when the [http.metrics] section is enabled (the HTTP API itself is on by default at 127.0.0.1:8081):

[http.metrics]
enabled = false
endpoint = "/metrics"

Runtime-level gauges:

  • iggy_connectors_sources_total - configured source connectors.
  • iggy_connectors_sources_running - sources in the Running status.
  • iggy_connectors_sinks_total - configured sink connectors.
  • iggy_connectors_sinks_running - sinks in the Running status.

Per-connector counters, labeled with connector_key and connector_type (source or sink):

  • iggy_connector_messages_produced_total - messages received from a source plugin's poll.
  • iggy_connector_messages_sent_total - messages sent to Iggy (source).
  • iggy_connector_messages_consumed_total - messages consumed from Iggy (sink).
  • iggy_connector_messages_processed_total - messages processed and delivered to the sink plugin.
  • iggy_connector_messages_filtered_total - messages intentionally dropped by transforms.
  • iggy_connector_errors_total - errors encountered.

Per-batch stage timings are recorded in the iggy_connector_stage_duration_seconds histogram, labeled with connector_key, connector_type, and stage (prepare, ffi, decode, iggy_send, state_save, total), with buckets ranging from 50 microseconds to 5 seconds.

Runtime stats

GET /stats on the HTTP API returns a JSON snapshot of the runtime: version, process ID, CPU and memory usage (cgroup-aware in containers), uptime, the source/sink totals, and a connectors array with per-connector details - key, name, type, plugin version, enabled, message counters, error count, and the current status.

The connector statuses are Starting, Running, Stopping, Stopped, and Error. A connector whose plugin fails to load (missing library, bad configuration) is reported with the Error status and the failure message, without blocking the remaining connectors.

OpenTelemetry

The [telemetry] section enables OTLP export of logs and traces:

[telemetry]
enabled = false
service_name = "iggy-connectors"

[telemetry.logs]
transport = "grpc" # "grpc" or "http"
endpoint = "http://localhost:4317"

[telemetry.traces]
transport = "grpc" # "grpc" or "http"
endpoint = "http://localhost:4317"

State files

Source connectors can persist their position (see the SDK documentation) into the directory configured in the [state] section:

[state]
path = "local_state"

Each source gets one file named source_{key}.state (e.g. local_state/source_random.state) holding the raw state bytes - by convention MessagePack produced by the SDK helpers. Sinks have no state files. Their progress lives in Iggy consumer groups.

The write is crash-safe: the state is written and fsynced to a .tmp file, atomically renamed over the previous file, and the directory entry is fsynced. Files are created with owner-only permissions (0600), since state may carry cursors or tokens. An empty or missing state file means the source starts fresh - deleting a state file resets that source's position.

On this page