Apache Kafka Connect
Official · maintained by Marmotmarmotdata/kafkaconnect Discover connectors, tasks and topics from Kafka Connect clusters with lineage to the systems they move data between
The Kafka Connect plugin discovers connectors, their tasks and the topics they move data through from a Kafka Connect cluster, and links each connector to the tables, collections and buckets it reads or writes.
It talks to the Connect REST API (self-hosted workers and Confluent Cloud) with optional basic auth.
Assets
| Type | Name | Provider |
|---|---|---|
| Pipeline | connector name | Kafka Connect |
| Task | <connector>.task-<id> |
Kafka Connect |
| Topic | topic name | Kafka |
Topics use the identity the Kafka plugin gives them, so a topic both plugins see is one asset with two sources.
Lineage
- Pipeline CONTAINS Task
- Source connectors: Table FEEDS Pipeline, Pipeline PRODUCES Topic
- Sink connectors: Topic FEEDS Pipeline, Pipeline PRODUCES Table, Collection, Bucket or Container
Table, collection and bucket edges are built from the connector config and point at the asset the owning Marmot plugin creates; this plugin never creates those assets itself. Resolvers exist for Debezium (PostgreSQL, MySQL, SQL Server, MongoDB, Oracle) and the matching Confluent Cloud CDC connectors, the Confluent JDBC source and sink, the S3, GCS and Azure Blob sinks, the Snowflake, BigQuery and Elasticsearch sinks, and the MongoDB source and sink. Other connector classes get topic edges only.
Topics come from the worker's active topics endpoint (KIP-558, Kafka 2.5+) when it has records for the connector, otherwise from the config: topics, topic, kafka.topic and each family's naming rule, with RegexRouter transforms applied.
In the UI
Point-and-click, no config file needed.
- 1 Open Runs Create pipeline
- 2 Pick Apache Kafka Connect from the plugin list.
- 3 Fill in the wizard, set a schedule, save.
With the CLI
Save a YAML config, then run marmot ingest.
name: my-kafkaconnect-pipeline
runs:
- kafkaconnect:
host: "<host>"$ marmot ingest -c ingest.yamlNot using plugins? Other ways to populate Marmot
Configuration
11 top-level fields. * marks required fields.
tags multiselect Tags to apply to discovered assets
external_links object[] External links to show on all assets
name string Display name for the link
icon string Icon identifier for the link
url string URL to the external resource
filter object Filter discovered assets by name (regex)
include multiselect Include patterns for resource names (regex)
exclude multiselect Exclude patterns for resource names (regex)
host string Kafka Connect REST URL (e.g. http://connect:8083)
username string Username for basic authentication
password password Password for basic authentication
verify_ssl bool Whether to verify the TLS certificate of the Connect REST endpoint
- default
- true
include_tasks bool Whether to discover connector tasks as Task assets
- default
- true
include_topics bool Whether to discover the topics connectors read and write as Topic assets
- default
- true
include_config bool Whether to store each connector's config in its metadata, with credentials masked
- default
- true
discover_lineage bool Whether to link connectors to the topics and datasets they move data between
- default
- true
Assets emitted
Metadata this plugin attaches to each discovered asset.
Pipeline
KafkaConnectPipelineFieldsThe metadata fields the plugin emits for a connector's Pipeline asset.
connector_class stringJava class of the connector
connector_type stringConnector direction (source, sink)
state stringConnector state (RUNNING, PAUSED, FAILED, UNASSIGNED)
worker_id stringWorker the connector instance runs on
task_count intNumber of tasks the connector is split into
task_states objectState of each task, keyed by task id
topics string[]Topics the connector reads or writes
plugin_version stringVersion of the installed connector plugin
connect_version stringVersion of the Connect worker
kafka_cluster_id stringId of the Kafka cluster the worker is attached to
config objectConnector config with credential values masked
description stringDescription from the connector config, when set
error stringFirst 500 characters of the failure trace, when the connector or a task has failed
url stringREST URL of the connector
Task
KafkaConnectTaskFieldsThe metadata fields the plugin emits for a Task asset.
task_id intTask id within the connector
state stringTask state (RUNNING, PAUSED, FAILED, UNASSIGNED)
worker_id stringWorker the task runs on
connector stringName of the connector the task belongs to
error stringFirst 500 characters of the failure trace, when the task has failed
Topic
KafkaConnectTopicFieldsThe metadata fields the plugin emits for a Topic asset.
topic_name stringTopic name
producers string[]Source connectors writing to the topic
consumers string[]Sink connectors reading from the topic