| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Automated performance benchmarking for Apache Kafka with comprehensive Excel reporting and optimization recommendations.
ansible-galaxy collection install osodevops.kafka_perf_testinggit clone https://github.com/osodevops/kafka-performance-testing.git
cd kafka-performance-testing
# Create virtual environment and install Python dependencies
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtThe log parsing and Excel report generation scripts require:
Copy the example inventory and edit with your broker details:
cp -r examples/inventory/dev inventories/myenv
vi inventories/myenv/hosts.ymlall:
hosts:
kafka-broker-1:
ansible_host: broker1.example.com
broker_id: 0
kafka-broker-2:
ansible_host: broker2.example.com
broker_id: 1
kafka-broker-3:
ansible_host: broker3.example.com
broker_id: 2
vars:
kafka_broker:
hosts:
- broker1.example.com:9092
- broker2.example.com:9092
- broker3.example.com:9092# Quick producer baseline test
ansible-playbook -i inventories/myenv playbooks/producer_baseline.yml
# Full benchmark suite
ansible-playbook -i inventories/myenv playbooks/full_benchmark.yml# Results are saved in the results/ directory
ls results/reports/
# Open the Excel report
open results/reports/kafka_perf_report_*.xlsx| Scenario | Purpose | Playbook |
|---|---|---|
| Producer Baseline | Optimize producer settings (acks, batch.size, linger.ms, compression) | playbooks/producer_baseline.yml |
| Consumer Baseline | Optimize consumer settings (fetch.min.bytes, max.poll.records) | playbooks/consumer_baseline.yml |
| Load Scaling | Measure performance with multiple producers/consumers | playbooks/load_scaling.yml |
| Message Size | Analyze throughput vs. message size relationship | playbooks/message_size_tests.yml |
| Acks Trade-offs | Quantify durability vs. performance impact | playbooks/acks_tradeoff.yml |
| Full Benchmark | Run all scenarios with comprehensive report | playbooks/full_benchmark.yml |
Edit inventories/<env>/group_vars/all/test_matrices.yml to customize:
producer_test_matrix:
quick:
acks: ["1"]
batch_size: [16384, 32768]
linger_ms: [10]
compression_type: ["zstd"]
record_size: [1024]| Variable | Default | Description |
|---|---|---|
| perf_num_records | 1000000 | Number of records per test |
| perf_record_size | 1024 | Message size in bytes |
| perf_throughput | -1 | Target throughput (-1 = unlimited) |
| ssl_enabled | false | Enable SSL/SASL authentication |
| test_profile | quick | Test profile (quick or baseline) |
results/
├── raw_logs/ # Raw kafka-*-perf-test output
│ ├── producer_baseline_acks1_batch16384_*.log
│ └── consumer_baseline_fetch10240_*.log
├── parsed_data/ # JSON parsed metrics
│ └── parsed_results_20241216_120000.json
└── reports/ # Excel reports with charts
└── kafka_perf_report_20241216_120000.xlsx
The generated report contains 10 sheets with 30+ charts:
See Understanding Results for detailed explanation of all metrics and charts.
# Build the container
docker build -t kafka-perf-testing .
# Run tests
docker run -v $(pwd)/results:/app/results \
-v $(pwd)/inventories:/app/inventories \
kafka-perf-testing \
ansible-playbook -i inventories/myenv playbooks/producer_baseline.ymlkafka-performance-testing/ ├── galaxy.yml # Ansible Galaxy collection metadata ├── playbooks/ # Test scenario playbooks │ ├── full_benchmark.yml │ ├── producer_baseline.yml │ ├── consumer_baseline.yml │ └── ... ├── roles/ # Ansible roles │ ├── setup_environment/ │ ├── perf_producer/ │ ├── perf_consumer/ │ ├── log_parser/ │ ├── excel_generator/ │ └── cleanup/ ├── scripts/ # Python utilities │ ├── parse_perf_logs.py │ ├── generate_excel_report.py │ └── aggregate_results.py ├── meta/ # Collection metadata │ └── runtime.yml ├── examples/ # Example inventories │ └── inventory/ │ ├── dev/ │ └── local/ ├── docs/ # Documentation ├── results/ # Test outputs (gitignored) ├── requirements.txt # Python dependencies ├── requirements.yml # Galaxy collection dependencies └── Dockerfile # Container build
Apache 2.0
| Back | FazBrowse Home | New Git URL |