Use Apache Kafka as a log transport layer to buffer and route high-volume log streams into LogTide reliably.
High-throughput buffering
At-least-once delivery
Multi-consumer fanout
Backpressure handling
When you’re generating millions of log events per second, shipping directly to LogTide may not be enough. Apache Kafka acts as a durable buffer between your applications and LogTide, providing backpressure handling, replay capability, and multi-consumer fanout. This guide shows you how to build a Kafka-backed log pipeline.
Why Kafka for log transport?
Backpressure handling: Applications never block on log shipping - Kafka absorbs bursts
Durability: Logs are persisted to disk before acknowledgment - no data loss on restarts
Replay: Re-process historical logs by resetting consumer offsets
Fanout: Send the same log stream to LogTide, S3 archival, and real-time alerting
Decoupling: Applications don’t need to know about LogTide - they publish to Kafka
Throughput: Kafka handles millions of messages per second per partition
Architecture
Applications produce logs to Kafka topics. A Kafka Connect sink or Fluent Bit consumer ships logs to LogTide. Other consumers can archive to S3 or trigger real-time alerts.
Prerequisites
Apache Kafka 3.0+ (or Redpanda as a Kafka-compatible alternative)
Fluent Bit or a custom consumer
LogTide instance with API key
Docker or Kubernetes for deployment
Kafka Topic Setup
Create Log Topics
# Create a topic for application logs (24 hour retention, 10 GB max per partition)kafka-topics.sh --create \ --bootstrap-server localhost:9092 \ --topic logs.application \ --partitions 12 \ --replication-factor 3 \ --config retention.ms=86400000 \ --config retention.bytes=10737418240 \ --config compression.type=lz4# Create a topic for infrastructure logskafka-topics.sh --create \ --bootstrap-server localhost:9092 \ --topic logs.infrastructure \ --partitions 6 \ --replication-factor 3 \ --config retention.ms=86400000 \ --config compression.type=lz4# Create a topic for security events (7 day retention)kafka-topics.sh --create \ --bootstrap-server localhost:9092 \ --topic logs.security \ --partitions 6 \ --replication-factor 3 \ --config retention.ms=604800000 \ --config compression.type=lz4
# /etc/fluent-bit/fluent-bit.conf[SERVICE] Flush 5 Log_Level info# Consume from Kafka[INPUT] Name kafka Tag kafka.logs Brokers kafka-1:9092,kafka-2:9092,kafka-3:9092 Topics logs.application,logs.infrastructure,logs.security Group_Id logtide-consumer Format json Poll_Ms 100# Output to LogTide[OUTPUT] Name http Match * Host api.logtide.dev Port 443 URI /api/v1/ingest/single Format json_lines Header X-API-Key ${LOGTIDE_API_KEY} Header Content-Type application/x-ndjson tls On tls.verify On Retry_Limit 5
Why should I use Kafka as a log transport layer in front of LogTide?
Kafka acts as a durable buffer between your applications and LogTide, absorbing traffic bursts without blocking application code. It provides at-least-once delivery with disk persistence, the ability to replay logs by resetting consumer offsets, and fanout so the same stream can feed LogTide, S3 archival, and real-time alerting simultaneously.
How do I ship logs from Kafka into LogTide?
The recommended approach is to run Fluent Bit as a Kafka consumer using its built-in kafka input plugin, then configure an http output that posts to your LogTide instance at /api/v1/ingest/single with your API key in the X-API-Key header. Alternatively you can write a custom Node.js or Python consumer that batches records and posts them to /api/v1/ingest.
Does LogTide support structured JSON logs coming through Kafka?
Yes. Both the Fluent Bit consumer and the example Node.js and Python producers serialize log events as JSON. As long as each message includes the expected fields (level, message, service, time), LogTide ingests and indexes them as fully structured log events.
Can I use Redpanda instead of Apache Kafka with this setup?
Yes. The guide explicitly lists Redpanda as a Kafka-compatible alternative. Because Redpanda implements the Kafka protocol, the same Fluent Bit configuration, producer code, and consumer setup work without changes.