ELK Stack Playground
This is a hands-on ELK (Elasticsearch, Logstash, Kibana) playground enhanced with Docker and Beats to simulate real-world log and observability scenarios. It includes an Elastic Cluster (es-node-01 and es-node-02) for storing and indexing data, a test-node-03 running Docker with Filebeat, Metricbeat, and Heartbeat for log and metric collection, and kibana-node-04 for visualizing everything via Kibana UI—perfect for learning and experimentation.

🔧 Dev Machine Setup Guide
This guide helps you spin up Filebeat, Metricbeat, and Heartbeat containers on your dev machine using Docker Compose. You can also run beats manually on the Kibana node.
🐳 On dev-machine (node-03)
1. Switch to Docker group
newgrp docker
2. Start Beats with Docker Compose
docker compose up -d
✅ This will spin up the following containers:
filebeatmetricbeatheartbeat
3. Verify containers are running
docker ps
Output example:
CONTAINER ID IMAGE NAME
d0df8abd650e docker.elastic.co/beats/heartbeat:9.0.0 heartbeat
00b825fe814a docker.elastic.co/beats/filebeat:9.0.0 filebeat
c5866c25e314 docker.elastic.co/beats/metricbeat:9.0.0 metricbeat
📊 On Kibana Machine (node-04)
You can manually run individual Beats if needed:
Run Metricbeat
cd metricbeat-9.0.0-linux-x86_64/
sudo ./metricbeat -e
Run Filebeat
cd filebeat-9.0.0-linux-x86_64/
sudo ./filebeat -e
Run Heartbeat
cd heartbeat-9.0.0-linux-x86_64/
sudo ./heartbeat -e
A real VM, not a container
Get root on a VM with its own kernel, so Docker, Kubernetes, and systemd just work.
Read the docs →
SSH from browser or CLI
Use the built-in web terminal, or connect with labctl ssh, plain ssh, scp, or rsync.
Read the docs →
Drive it with AI
Let Claude, Codex, or any MCP client start this playground and run commands in it.
Read the docs →
Expose HTTP(S) ports
Give any web app running inside the VM a public URL - for yourself or to share with others.
Read the docs →
Share terminals
Invite others into your terminal session, or open it yourself from another device.
Read the docs →
Customize with init scripts
Add shell scripts that run at boot to install packages, clone repos, or seed test data.
Read the docs →
Private networking
VMs reach the internet via NAT with no public IP; several VMs share bridge networks.
Read the docs →
Ephemeral or persistent
By default, VMs are destroyed when the session ends; enable persistence to keep the disks for next time.
Read the docs →
Built-in container registry
A private registry.iximiuz.com for every playground to share images across services and VMs.
Read the docs →