Cluster-wide management and observability for Apache ActiveMQ Artemis
3.9K
One open-source console for your Apache ActiveMQ® Artemis, Apache Kafka® and RabbitMQ clusters.
One instance, every cluster you run, in one estate: health judged on one scale and every backlog in one table, Artemis queues, Kafka consumer groups and RabbitMQ queues side by side. Kafka lag is shown as the estimate it is, with its per-partition breakdown. Nothing destructive runs before its preview, and where the approval gate is on, a second person approves it.
It works against your existing brokers. Register an Artemis cluster from one management URL, a Kafka cluster from its bootstrap servers, or a RabbitMQ cluster from its management URLs; nothing here starts or reconfigures a broker.
Extend it with plugins, installed from the UI: screens, API, assistant tools and
data of their own, most without a restart. When a plugin needs one, Rahdar restarts
itself if the container has a restart policy — the compose file sets
RAHDAR_PLUGINS_RESTART_SUPERVISED=true beside restart: unless-stopped.
⚠️ Alpha. Under active development, not yet feature-complete. These images are pre-stable dev builds — the
:devtag is the moving pointer and there is no:latestyet. Expect breaking changes.
Documentation: rahdar.dev (Kafka guide, RabbitMQ guide) · Source and issues: github.com/sudoitir/rahdar
Every image is signed by the project's release workflow and carries SLSA provenance and a CycloneDX SBOM: verify a release.
Every cluster in one estate: Artemis and Kafka side by side, the worst backlog first.
Kafka lag is an estimate, and opens to every partition, slowest first.
A consumer group's lag per partition and its members.
An offset reset is previewed per partition before it is held to confirm.
A hanging transaction, found and aborted with its reach stated first.
Registration checks every broker on the address it advertises.
Artemis topology, with HA roles polled from every node.
Rahdar and its Postgres. Your Artemis, Kafka and RabbitMQ clusters already exist and are registered through the UI — nothing here starts a broker.
base=https://raw.githubusercontent.com/sudoitir/rahdar/main/deploy/compose
mkdir -p rahdar/compose rahdar/postgres && cd rahdar/compose # the compose file mounts ../postgres
curl -sO "$base/compose.prod.yaml"
for f in postgresql.conf 10-pg-stat-statements.sql; do curl -s "${base%/compose}/postgres/$f" -o "../postgres/$f"; done
curl -s "$base/.env.example" | sed \
-e "s|^SECRET_KEY=.*|SECRET_KEY=$(openssl rand -base64 32)|" \
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$(openssl rand -hex 24)|" > .env
docker compose -f compose.prod.yaml --env-file .env up -d
The sed fills in a fresh secret key and database password; every other setting in
.env has a working default. The table below lists what the container reads.
Or a bare container against your own Postgres:
docker run -p 8080:8080 \
-e RAHDAR_DB_URL=jdbc:postgresql://db:5432/rahdar \
-e RAHDAR_DB_USER=rahdar \
-e RAHDAR_DB_PASSWORD=... \
-e RAHDAR_SECRET_KEY="$(openssl rand -base64 32)" \
sudoit1/rahdar:dev
| Variable | Required | Notes |
|---|---|---|
RAHDAR_DB_URL | yes | jdbc:postgresql://host:5432/rahdar |
RAHDAR_DB_USER / _DB_PASSWORD | yes | — |
RAHDAR_SECRET_KEY | with the default env key provider | Protects every stored secret. Base64 of exactly 32 bytes or the app will not start (openssl rand -base64 32), or 1=<b64>,2=<b64> to hold several versions for key rotation. Other key providers (file, Vault, Kubernetes) and rotation: configuration guide |
RAHDAR_CONFIG_ENCRYPT_KEY | no | Decrypts {cipher} values in rahdar_config_property. A different key from RAHDAR_SECRET_KEY — do not reuse it |
JAVA_OPTS | no | Defaults to -XX:MaxRAMPercentage=50 |
First login. Username admin. The first run against an empty database
generates the password and prints it once to the container log:
docker compose -f compose.prod.yaml logs rahdar | grep -A4 'Created administrator'
At the first sign-in you choose your own password and set up two-step verification,
which the admin role requires. An administrator who has lost both their device and their
recovery codes is recovered with the break-glass RAHDAR_IDENTITY_LOCAL_RECOVER
(configuration guide).
Reverse proxy. The live UI stream is SSE at GET /api/v1/stream; a proxy in
front of Rahdar must not buffer it (nginx proxy_buffering off;, Apache no
output buffering on that path; Traefik works as-is). Without this the topology
graph and queue grid only update on the 5-second poll.
| Tag | What it is |
|---|---|
:dev | the newest build; moves with every release |
:YYYY.MM | the newest build of that calendar month; moves within it |
:YYYY.MM.N | one exact release; immutable, never republished |
linux/amd64 and linux/arm64. Versioning is CalVer and the number carries no
compatibility promise — a release's breaking changes are listed at the top of its
release notes.
Apache-2.0.
Apache, Apache Kafka, Kafka, Apache ActiveMQ, ActiveMQ and Artemis are trademarks of the Apache Software Foundation; RabbitMQ is a trademark of its owner. Rahdar is not affiliated with or endorsed by them; the names describe what the software works with.
Content type
Buildkit_cache
Digest
sha256:e5c537c1f…
Size
1.2 GB
Last updated
about 1 hour ago
docker pull sudoit1/rahdar:buildcache