Convert Figma logo to code with AI

redpanda-data logoconsole

Redpanda Console is a developer-friendly UI for managing your Kafka/Redpanda workloads. Console gives you a simple, interactive approach for gaining visibility into your topics, masking data, managing consumer groups, and exploring real-time data with time-travel debugging.

3,742
345
3,742
92

Top Related Projects

Redpanda is a streaming data platform for developers. Kafka API compatible. 10x faster. No ZooKeeper. No JVM!

28,317

Mirror of Apache Kafka

14,104

Apache Pulsar - distributed pub-sub messaging system

Confluent's Apache Kafka Golang client

11,389

Sarama is a Go library for Apache Kafka.

Kafka library in Go

Quick Overview

Redpanda Console is a web-based UI for managing and monitoring Redpanda, a modern streaming platform. It provides a user-friendly interface for interacting with Redpanda clusters, managing topics, and analyzing data streams. The console is designed to enhance the developer experience when working with Redpanda.

Pros

  • User-friendly interface for managing Redpanda clusters
  • Real-time monitoring and visualization of data streams
  • Supports both Redpanda and Apache Kafka protocols
  • Customizable and extensible with plugins

Cons

  • Requires separate installation and configuration from Redpanda core
  • May have a learning curve for users new to streaming platforms
  • Limited advanced features compared to some enterprise Kafka management tools
  • Dependency on Redpanda or Kafka infrastructure

Getting Started

To run Redpanda Console locally:

  1. Clone the repository:

    git clone https://github.com/redpanda-data/console.git
    
  2. Navigate to the project directory:

    cd console
    
  3. Build and run the console:

    make run
    
  4. Access the console in your web browser at http://localhost:8080

For detailed setup instructions and configuration options, refer to the project's README and documentation.

Competitor Comparisons

Redpanda is a streaming data platform for developers. Kafka API compatible. 10x faster. No ZooKeeper. No JVM!

Pros of Redpanda

  • Core streaming engine with high performance and low latency
  • Kafka API compatibility for seamless integration
  • Designed for modern hardware with optimized resource usage

Cons of Redpanda

  • More complex setup and configuration
  • Steeper learning curve for new users
  • Requires more system resources

Code Comparison

Redpanda (C++):

void KafkaRandomPartitioner::partition(const Topic& topic,
                                       const ClientContext& client,
                                       const std::vector<model::record_batch>& batches,
                                       std::vector<int32_t>& partitions) {
    partitions.resize(batches.size());
    std::generate(partitions.begin(), partitions.end(), [this, &topic] {
        return _distribution(_generator) % topic.partitions.size();
    });
}

Console (TypeScript):

export const getClusterOverview = (clusterInfo: ClusterInfo): ClusterOverview => {
  const { onlinePartitionCount, offlinePartitionCount, inSyncReplicaCount, outOfSyncReplicaCount, ...rest } = clusterInfo;
  return {
    ...rest,
    partitions: { online: onlinePartitionCount, offline: offlinePartitionCount },
    replicas: { inSync: inSyncReplicaCount, outOfSync: outOfSyncReplicaCount },
  };
};

Summary

Redpanda is a high-performance streaming engine with Kafka compatibility, while Console is a web UI for managing and monitoring Redpanda clusters. Redpanda offers better performance but requires more setup, while Console provides an easier management interface. The code comparison shows Redpanda's low-level C++ implementation versus Console's TypeScript-based frontend logic.

28,317

Mirror of Apache Kafka

Pros of Kafka

  • Mature and widely adopted distributed streaming platform
  • Extensive ecosystem with numerous connectors and integrations
  • Highly scalable and fault-tolerant architecture

Cons of Kafka

  • Complex setup and configuration process
  • Higher resource requirements and operational overhead
  • Steeper learning curve for newcomers

Code Comparison

Kafka (Java):

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);

Console (TypeScript):

import { Kafka } from 'kafkajs';

const kafka = new Kafka({
  clientId: 'my-app',
  brokers: ['localhost:9092']
});
const producer = kafka.producer();

Summary

Kafka is a robust and mature distributed streaming platform with a vast ecosystem, while Console is a more lightweight and user-friendly alternative. Kafka offers superior scalability and fault-tolerance but comes with increased complexity and resource requirements. Console provides a simpler setup and management experience, making it more accessible for smaller projects or teams new to stream processing. The code comparison illustrates the difference in complexity between the two, with Kafka requiring more configuration and Console offering a more straightforward API.

14,104

Apache Pulsar - distributed pub-sub messaging system

Pros of Pulsar

  • More comprehensive messaging and streaming platform with broader feature set
  • Larger community and ecosystem with extensive documentation
  • Better scalability for high-throughput, multi-tenant scenarios

Cons of Pulsar

  • Steeper learning curve and more complex setup
  • Higher resource requirements for deployment and operation
  • Less focused on specific use cases compared to Console

Code Comparison

Pulsar (Java):

PulsarClient client = PulsarClient.builder()
    .serviceUrl("pulsar://localhost:6650")
    .build();
Producer<byte[]> producer = client.newProducer()
    .topic("my-topic")
    .create();

Console (JavaScript):

const { Kafka } = require('kafkajs')
const kafka = new Kafka({
  clientId: 'my-app',
  brokers: ['localhost:9092']
})
const producer = kafka.producer()

Summary

Pulsar is a more comprehensive messaging and streaming platform with broader capabilities, while Console focuses on providing a user-friendly interface for Kafka-like systems. Pulsar offers better scalability and a larger ecosystem, but comes with increased complexity and resource requirements. Console, being part of the Redpanda ecosystem, is more streamlined and easier to set up for specific use cases. The code comparison shows the difference in client setup between Pulsar (Java) and Console (JavaScript, using KafkaJS), highlighting the different approaches and languages used in each project.

Confluent's Apache Kafka Golang client

Pros of confluent-kafka-go

  • Mature and widely adopted Kafka client library for Go
  • Comprehensive support for Kafka features and APIs
  • Backed by Confluent, ensuring ongoing maintenance and updates

Cons of confluent-kafka-go

  • Focused solely on Kafka, lacking broader data platform management features
  • May have a steeper learning curve for developers new to Kafka

Code Comparison

confluent-kafka-go:

producer, err := kafka.NewProducer(&kafka.ConfigMap{"bootstrap.servers": "localhost"})
topic := "my-topic"
message := &kafka.Message{
    TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: kafka.PartitionAny},
    Value:          []byte("Hello, Kafka!"),
}
err = producer.Produce(message, nil)

console:

// No direct equivalent as console is a web UI for managing Redpanda clusters
// It doesn't provide a client library for producing messages

Summary

confluent-kafka-go is a robust Go client for Apache Kafka, offering comprehensive support for Kafka operations. It's ideal for developers building Kafka-centric applications in Go. On the other hand, console is a web-based UI for managing Redpanda clusters, providing a broader set of data platform management features. While confluent-kafka-go excels in Kafka integration, console offers a more user-friendly approach to cluster management and monitoring.

11,389

Sarama is a Go library for Apache Kafka.

Pros of Sarama

  • More mature and widely adopted Kafka client library for Go
  • Extensive feature set covering most Kafka operations
  • Active community and regular updates

Cons of Sarama

  • Steeper learning curve due to lower-level API
  • Requires more boilerplate code for basic operations
  • Less focus on user interface and visualization

Code Comparison

Sarama (producer example):

producer, err := sarama.NewSyncProducer([]string{"localhost:9092"}, nil)
if err != nil {
    log.Fatalln(err)
}
defer producer.Close()

msg := &sarama.ProducerMessage{Topic: "test", Value: sarama.StringEncoder("test message")}
partition, offset, err := producer.SendMessage(msg)

Console (API endpoint example):

func (api *API) handleGetTopics() http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        topics, err := api.kafkaService.ListTopics(r.Context())
        if err != nil {
            restErr := &rest.Error{Err: err, Status: http.StatusInternalServerError}
            rest.SendRESTError(w, r, restErr)
            return
        }
        rest.SendResponse(w, r, http.StatusOK, topics)
    }
}

While Sarama provides a low-level client library for Kafka operations, Console offers a higher-level API and web interface for managing Kafka clusters. Sarama is better suited for developers building custom Kafka applications, while Console provides a more user-friendly approach for cluster management and monitoring.

Kafka library in Go

Pros of kafka-go

  • Pure Go implementation, offering better performance and easier integration in Go projects
  • Supports both consumer groups and manual partition assignment
  • Provides low-level API for fine-grained control over Kafka operations

Cons of kafka-go

  • Limited web-based UI capabilities compared to Console's comprehensive dashboard
  • Lacks built-in monitoring and metrics visualization features
  • Requires more manual configuration and setup for advanced Kafka operations

Code Comparison

kafka-go:

reader := kafka.NewReader(kafka.ReaderConfig{
    Brokers:   []string{"localhost:9092"},
    Topic:     "example-topic",
    Partition: 0,
    MinBytes:  10e3, // 10KB
    MaxBytes:  10e6, // 10MB
})

Console (JavaScript/TypeScript):

const { Kafka } = require('kafkajs')

const kafka = new Kafka({
  clientId: 'my-app',
  brokers: ['localhost:9092']
})

const consumer = kafka.consumer({ groupId: 'test-group' })

Note: Console primarily focuses on providing a web-based UI for Kafka management, while kafka-go is a client library for interacting with Kafka directly in Go applications. The code comparison showcases the difference in setup and usage between the two projects.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Redpanda Console – A UI for Data Streaming

GitHub release (latest SemVer) Docker Repository

Redpanda Console (previously known as Kowl) is a web application that helps you manage and debug your Kafka/Redpanda workloads effortlessly.

https://user-images.githubusercontent.com/23424570/220130537-7b0b8596-0a06-4132-90a5-1be3c169e4f4.mp4

Features

  • Message viewer: Explore your topics' messages in our message viewer through ad-hoc queries and dynamic filters. Find any message you want using JavaScript functions to filter messages. Supported encodings are: JSON, Avro, Protobuf, XML, MessagePack, Text and Binary (hex view). The used encoding (except Protobuf) is recognized automatically.
  • Consumer groups: List all your active consumer groups along with their active group offsets, edit group offsets (by group, topic or partition) or delete a consumer group.
  • Topic overview: Browse through the list of your Kafka topics, check their configuration, space usage, list all consumers who consume a single topic or watch partition details (such as low and high water marks, message count, ...), embed topic documentation from a git repository and more.
  • Cluster overview: List vailable brokers, their space usage, rack id, health, configuration and other information to get a high level overview of your brokers in your cluster.
  • Security: Create, list or edit Kafka ACLs and SASL-SCRAM users.
  • Schema Registry: List and manage all aspects of your Avro, Protobuf or JSON schemas within your schema registry.
  • Kafka connect: Manage connectors from multiple connect clusters, patch configs, view their current state or restart tasks.
  • Redpanda Transforms: Manage and monitor data transforms deployed in your Redpanda cluster.

Getting Started

Prerequisites

  • Redpanda or any Kafka deployment (v1.0.0+) compatible
  • A web browser to access the Console, which can be deployed using Docker builds or as a single binary across all platforms (amd64 / arm64)

Installing

We offer pre built docker images for RP Console, binary builds and a Helm chart to make the installation as comfortable as possible for you. Please take a look at our dedicated Installation documentation.

Quick Start

Do you just want to test RP Console against one of your Kafka clusters without spending too much time on the test setup? Here are some docker commands that allow you to run it locally against an existing Redpanda or Kafka cluster:

Redpanda/Kafka is running locally

Since Console runs in its own container (which has its own network scope), we have to use host.docker.internal as a bootstrap server. That DNS resolves to the host system's ip address. However since the brokers send a list of all brokers' DNS when a client has connected, you have to make sure your advertised listener is connected accordingly, e.g.: PLAINTEXT://host.docker.internal:9092

docker run -p 8080:8080 -e KAFKA_BROKERS=host.docker.internal:9092 docker.redpanda.com/redpandadata/console:latest

Docker supports the --network=host option only on Linux. So Linux users use localhost:9092 as an advertised listener and use the host network namespace instead. Console will then be run as it would be executed on the host machine.

docker run --network=host -p 8080:8080 -e KAFKA_BROKERS=localhost:9092 docker.redpanda.com/redpandadata/console:latest

Kafka is running remotely

Protected via SASL_SSL and trusted certificates (e.g. Confluent Cloud):

docker run -p 8080:8080 -e KAFKA_BROKERS=pkc-4r000.europe-west1.gcp.confluent.cloud:9092 -e KAFKA_TLS_ENABLED=true -e KAFKA_SASL_ENABLED=true -e KAFKA_SASL_USERNAME=xxx -e KAFKA_SASL_PASSWORD=xxx docker.redpanda.com/redpandadata/console:latest

I don't have a running Kafka cluster to test against

We maintain a docker-compose file that launches Redpanda and Console: /docs/local.

Community

Slack is the main way the community interacts with one another in real time :)

GitHub Issues can be used for issues, questions and feature requests.

Code of conduct code of conduct for the community

Contributing docs