All Projects → real-digital → esque

real-digital / esque

Licence: MIT license
esque - an operational kafka tool.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to esque

kafka-connect-fs
Kafka Connect FileSystem Connector
Stars: ✭ 107 (+386.36%)
Mutual labels:  apache-kafka
ClickableWebView
Simple WebView to Detect click on an image
Stars: ✭ 42 (+90.91%)
Mutual labels:  click
kafka-twitter-spark-streaming
Counting Tweets Per User in Real-Time
Stars: ✭ 38 (+72.73%)
Mutual labels:  apache-kafka
MobOff
A CLI to download, convert and send youtube videos to several devices using Pushbullet.
Stars: ✭ 47 (+113.64%)
Mutual labels:  click
kafkaESK
An event-driven monitoring tool that can consume messages from Apache Kafka clusters and display the aggregated data on a dashboard for analysis and maintenance.
Stars: ✭ 79 (+259.09%)
Mutual labels:  apache-kafka
ksql-jdbc-driver
JDBC driver for Apache Kafka
Stars: ✭ 85 (+286.36%)
Mutual labels:  apache-kafka
unity-button-sounds-editor
Editor extension for Unity game engine. It helps to assign AudioClip to buttons and to play sounds by button clicks.
Stars: ✭ 65 (+195.45%)
Mutual labels:  click
jquery-clickout
Handle clickout events with jQuery
Stars: ✭ 23 (+4.55%)
Mutual labels:  click
kafkaSaur
Apache Kafka client for Deno
Stars: ✭ 42 (+90.91%)
Mutual labels:  apache-kafka
dagger
Dagger is an easy-to-use, configuration over code, cloud-native framework built on top of Apache Flink for stateful processing of real-time streaming data.
Stars: ✭ 238 (+981.82%)
Mutual labels:  apache-kafka
XKCD
A minimal command line tool for your daily dose of xkcd comics written in python. Feel free to contribute!
Stars: ✭ 67 (+204.55%)
Mutual labels:  click
DebounceMonitoring
📑 Add debounce logic for any method in a single line.
Stars: ✭ 44 (+100%)
Mutual labels:  click
kafkaer
Template based Kafka topic/cluster/ACL management
Stars: ✭ 37 (+68.18%)
Mutual labels:  apache-kafka
pod 1.0.2 kaal
Kaal is a productivity suite with beautiful CLI and a Discord Bot.
Stars: ✭ 15 (-31.82%)
Mutual labels:  click
pulsar-io-kafka
Pulsar IO Kafka Connector
Stars: ✭ 24 (+9.09%)
Mutual labels:  apache-kafka
kafka role
Ansible role to install Apache Kafka
Stars: ✭ 18 (-18.18%)
Mutual labels:  apache-kafka
spark-twitter-sentiment-analysis
Sentiment Analysis of a Twitter Topic with Spark Structured Streaming
Stars: ✭ 55 (+150%)
Mutual labels:  apache-kafka
southpaw
⚾ Streaming left joins in Kafka for change data capture
Stars: ✭ 48 (+118.18%)
Mutual labels:  apache-kafka
Nephos
Project Nephos [GSoC '18]: Automated recording, processing, and uploading of TV streams for Universities.
Stars: ✭ 20 (-9.09%)
Mutual labels:  click
Android-Touch-Helper
开屏跳过-安卓系统的开屏广告自动跳过助手
Stars: ✭ 488 (+2118.18%)
Mutual labels:  click

esque - an operational Kafka tool

pypi Version Python Versions Build Status Coverage Status License: MIT

In the Kafka world nothing is easy, but esque (pronounced esk) is an attempt at it.

esque is a user-centric command line interface for Kafka administration.

Why should you care?

Some stuff is hard, and that is okay, but listing your kafka topics shouldn't be.

While adopting kafka at real.digital we noticed the immense entry barrier it poses to newcomers. We can't recount how often we wrote Slack messages asking for the script to check the status of topics or consumer groups. This is partly (but not only) due to a fragmented and unclear definition of tooling and APIs for kafka. In a wide array of administration tools, esque distances itself by striving to provide Kafka Ops for Humans, in a usable and natural way.

We feel that the goal of esque embodies the principle: “keep easy things easy, and make hard things possible”.

Principles

  • batteries included
  • feature rich
  • robust
  • insightful
  • by engineers for engineers

Feature Overview

  • Support for any type of Kafka deployment >1.2
  • Display Resources (Topics, Consumer Groups, Brokers)
  • Get detailed Overviews of Resources (Topics, Consumer Groups, Brokers)
  • Create/Delete Topics
  • Edit Topic Configurations
  • Edit Consumer Offset for Topics
  • SASL/SSL Support out of the box
  • Consume and Produce to and from Avro and Plaintext Topics (including Avro Schema Resolution from Schema Registry)
  • Context Switch (Easily Switch between pre-defined Clusters)
  • Kafka Ping (Test roundtrip time to your kafka cluster)

Command Overview

$ esque
Usage: esque [OPTIONS] COMMAND [ARGS]...

  esque - an operational kafka tool.

  In the Kafka world nothing is easy, but esque (pronounced esk) is an
  attempt at it.

Options:
  --version      Show the version and exit.
  -v, --verbose  Return stack trace on error.
  --no-verify    Skip all verification dialogs and answer them with yes.
  --help         Show this message and exit.

Commands:
  apply      Apply a set of topic configurations.
  config     Configuration-related options.
  consume    Consume messages from a topic.
  create     Create a new instance of a resource.
  ctx        List contexts and switch between them.
  delete     Delete a resource.
  describe   Get detailed information about a resource.
  edit       Edit a resource.
  get        Get a quick overview of different resources.
  io         Run a message pipeline.
  ping       Test the connection to the kafka cluster.
  produce    Produce messages to a topic.
  set        Set resource attributes.
  urlencode  Url-encode the given value.

Installation and Usage

Installation

esque is available at pypi.org and can be installed with pip install esque. esque requires Python 3.6+ to run.

Installation on Alpine Linux

There are no wheels for Alpine Linux, so esque requires a few extra dependencies to build them during installation.

apk add python3-dev py3-pip librdkafka librdkafka-dev g++

Autocompletion

The autocompletion scripts for bash and zsh can be generated by running esque config autocomplete.

Usage

Config Definition

When starting esque for the first time the following message will appear:

No config provided in ~/.esque
Should a sample file be created in ~/.esque [y/N]:

When answering with y esque will copy over the sample config to ~/.esque/esque_config.yaml. Afterwards you can modify that file to fit your cluster definitions.

Alternatively might just provide a config file following the sample config's file in that path.

Config Example
version: 1
current_context: local
contexts:
  # This context corresponds to a local development cluster
  # created by docker-compose when running esque from the host machine.
  local:
    bootstrap_servers:
      - localhost:9092
    security_protocol: PLAINTEXT
    schema_registry: http://localhost:8081
    default_values:
      num_partitions: 1
      replication_factor: 1

Config file for "apply" command

The config for the apply command has to be a yaml file and is given with the option -f or --file.

In the current version only topic configurations can be changed and specified.

It has to use the same schema, which is used for the following example:

topics:
  - name: topic_one
    replication_factor: 3
    num_partitions: 50
    config:
      cleanup.policy: compact
  - name: topic_two
    replication_factor: 3
    num_partitions: 50
    config:
      cleanup.policy: compact

Development

To setup your development environment, make sure you have at least Python 3.6 & poetry installed, then run

poetry install
poetry shell

Pre Commit Hooks

To install pre commit hooks run:

pip install pre-commit
pre-commit install
pre-commit install-hooks

Run tests

Integration Tests

esque comes with a docker-compose based kafka stack which you can start up with make test-suite.

You can then run the integration tests against this stack with pytest tests/ --integration --local.

Alternatively you can go the fast way and just run the whole stack + integration tests in docker:

make integration-test

Unit Tests

If you only want the unit tests, just run:

make test

Alternatives

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].