Tools
Peek Messages
from picks where reading starts:
count defaults to 20 and stops at 500. Each value is cut at 16 KB (value_truncated: true, with the real value_size_bytes). next_offsets gives the offset to continue from per partition.
When a Schema Registry URL is stored and a value starts with the Confluent wire format (magic byte 0 and a 4-byte schema id), the connector fetches the schema by id. Avro is decoded into JSON. JSON Schema values are parsed as JSON. Protobuf values come back as base64 together with their schema_id. Without a registry, every value is returned as JSON, text or base64.
Safety
- Peek never touches consumer groups. It assigns partitions directly with no group id and auto-commit off, so it never joins a group, never creates one and never moves a committed offset. Your consumers see nothing.
- Read-only by default. Every tool except Produce Message only reads. Produce Message only runs on a connection stored with mode
read_write, and every call returns aconfirm_tokenfirst that the agent must show you and send back. For the strongest guarantee, give the principal Read and Describe permissions only (below): Test Connection warns when it can write. - Limits on every call. Calls time out after 15 s by default (up to 55 s with
timeout_seconds). Lists stop at 500 rows, Peek at 500 messages, and every result at 1 MB. A cut result hastruncated: true. - Every broker address is checked. Kafka clients connect to the brokers’ advertised listeners, not to the bootstrap address you stored. Danube checks every bootstrap server before connecting, checks every broker address the cluster advertises before reading anything, and checks each address again when the socket opens, connecting only to the address it approved. A cluster that advertises a private address is refused with
destination_blocked. - No secrets in results. SASL passwords, API secrets, client keys and AWS keys are removed from every error message. MSK IAM tokens are signed per connection from the keys you store; Danube never uses its own AWS credentials.
- Every call is audited. The audit log records who called, which tool, the duration and the outcome.
Give Danube a read-only principal
The read tools need Describe on the cluster, topics and groups and Read on topics. Peek Messages does not need any group permission because it never uses a group; Consumer Group Lag needs Describe (and on some clusters Read) on the group it reports.- Confluent Cloud
- Amazon MSK (IAM)
- Self-hosted, Redpanda, Aiven
Create a service account and a cluster API key for it (not a Cloud API key). Grant read-only access, either with the Store the bootstrap server, security protocol
DeveloperRead role on all topics and consumer groups in the Confluent Cloud console, or with ACLs:SASL_SSL, mechanism PLAIN, the API key as the username and the API secret as the password. For Avro, add the Schema Registry endpoint and a Schema Registry API key with DeveloperRead on the subjects.Connect
Open Apache Kafka in the dashboard’s tool catalog and click Connect, or let the agent callstore_credential. Fill in the bootstrap servers, the security protocol, the SASL mechanism and credentials (or the TLS certificates), and optionally the Schema Registry. Mode stays Read only unless you want Produce Message to work.
There is no SSH bastion option for Kafka: a tunnel only forwards the bootstrap address, and the client would then follow the advertised broker addresses around it. How Danube reaches the cluster depends on where it lives:
- Public cluster
- Private cluster, data-plane agent
Confluent Cloud, MSK with public access, Aiven and Redpanda Cloud connect directly. TLS is on by default (
SASL_SSL). If the cluster restricts client addresses, allow Danube’s egress addresses: see Connect your production database safely. Every advertised broker address must be public too.auth_required), the network (connection_error, destination_blocked) or TLS (tls_error). If Test Connection works but other tools time out, the brokers advertise addresses Danube cannot reach: check the listener’s advertised.listeners.
Example prompts
- “What’s the consumer lag for
payments-worker, and which partitions are furthest behind?” - “Show me the last 10 messages on
ordersand summarize the statuses.” - “Which topics have under-replicated partitions?”
- “What’s the retention on
audit-events, and how many messages does it hold?” - “Find the messages on
paymentsfrom 10:00 to 10:05 UTC today withstatus: failed.”
