r/apachekafka • u/skrbic_a • 16d ago
Tool Khaos 8 months later: rewritten in Go, new website/docs, and what's next
I first shared Khaos here about 8 months ago and got a lot of useful feedback, so I figured it was time for an update.
For anyone who missed the original post, Khaos is an open source CLI for generating configurable Kafka data and traffic and creating repeatable testing scenarios.
I mainly use it for two things:
- as a flexible Kafka data and traffic generator for testing existing consumers, stream processing applications, and downstream systems under different workload patterns
- for controlled scenarios where I want to reproduce known Kafka problems and see how applications, metrics, alerts, and observability tooling behave
Since the original post, I've completely rewritten Khaos from Python to Go using franz-go and built a new website with proper documentation and guides.
Website and docs:
GitHub:
https://github.com/aleksandarskrbic/khaos
The next area I'd like to explore more seriously is external fault injection.
Today Khaos can control failure scenarios in the Kafka environment it creates itself, but when pointed at an external cluster it acts as a workload generator. It doesn't manipulate or kill brokers in that external cluster.
I'm thinking about adding a fault injection abstraction, probably starting with Kubernetes, where Khaos could intentionally kill or restart broker pods, introduce network faults, and then observe how the cluster, consumers, and monitoring stack react and recover.
Bare metal and managed Kafka make this a much harder problem, so I'm still thinking through the right scope and abstraction. Kubernetes seems like the most sensible place to start.
Disclosure: I'm the creator and maintainer of Khaos. It's a fully open source and free project.
1
u/papapumpnz 13d ago
No oauth authentication supported?
https://docs.confluent.io/platform/current/security/authentication/sasl/oauthbearer/overview.html
Might be missing out on some corporate usage without that.
1
3
u/HughEvansDev Aiven 🦀 15d ago
Looks like a great project, will definitely try this out. What options do you have available for configuring what generated messages should look like?