Skip to main content
Version: Preview

Kafka Connect

Experimental
Creates:
AssetsLineage

Configure in the UI

This plugin can be configured directly in the Marmot UI with a step-by-step wizard.

View Guide

The Kafka Connect plugin discovers connectors, their tasks and the topics they move data through from a Kafka Connect cluster. It talks to the Connect REST API, so it works with self-hosted workers and Confluent Cloud alike.

Every connector becomes a Pipeline and every task a Task under it. The topics a connector reads or writes become Topic assets with the same identity the Kafka plugin uses, so a topic both plugins see is one asset with two sources.

Lineage

Source connectors are linked from the tables or collections they capture and to the topics they write. Sink connectors are linked from the topics they read and to the tables, collections or buckets they write. Those dataset edges point at the asset the owning Marmot plugin creates (PostgreSQL, MySQL, S3 and so on); this plugin never creates tables or buckets itself, only topics.

Dataset edges are derived from the connector config 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 and later) when it has seen records for the connector. Otherwise they are derived from the config, with RegexRouter transforms applied.

With include_topics: false the topic edges are still emitted; they only land on topics the Kafka plugin has catalogued.

Credentials

The connector config is stored in the Pipeline metadata with every credential value masked (any key containing password, secret, token, credential, sasl.jaas, key.id, access.key or private). Set include_config: false to leave the config out entirely.

Example Configuration


host: "http://connect.internal:8083"
username: "marmot"
password: "connect_secure_pass"
verify_ssl: true
include_tasks: true
include_topics: true
include_config: true
discover_lineage: true
tags:
- "kafka-connect"

Configuration

The following configuration options are available:

PropertyTypeRequiredDescription
discover_lineageboolfalseWhether to link connectors to the topics and datasets they move data between
external_links[]ExternalLinkfalseExternal links to show on all assets
filterFilterfalseFilter discovered assets by name (regex)
hoststringtrueKafka Connect REST URL (e.g. http://connect:8083)
include_configboolfalseWhether to store each connector's config in its metadata, with credentials masked
include_tasksboolfalseWhether to discover connector tasks as Task assets
include_topicsboolfalseWhether to discover the topics connectors read and write as Topic assets
passwordstringfalsePassword for basic authentication
tagsTagsConfigfalseTags to apply to discovered assets
usernamestringfalseUsername for basic authentication
verify_sslboolfalseWhether to verify the TLS certificate of the Connect REST endpoint

Available Metadata

The following metadata fields are available:

FieldTypeDescription
configmap[string]stringConnector config with credential values masked
connect_versionstringVersion of the Connect worker
connectorstringName of the connector the task belongs to
connector_classstringJava class of the connector
connector_typestringConnector direction (source, sink)
consumers[]stringSink connectors reading from the topic
descriptionstringDescription from the connector config, when set
errorstringFirst 500 characters of the failure trace, when the connector or a task has failed
kafka_cluster_idstringId of the Kafka cluster the worker is attached to
plugin_versionstringVersion of the installed connector plugin
producers[]stringSource connectors writing to the topic
statestringConnector or task state (RUNNING, PAUSED, FAILED, UNASSIGNED)
task_countintNumber of tasks the connector is split into
task_idintTask id within the connector
task_statesmap[string]stringState of each task, keyed by task id
topic_namestringTopic name
topics[]stringTopics the connector reads or writes
urlstringREST URL of the connector
worker_idstringWorker the connector or task runs on