Forked from williamzujkowski/promsketch-benchmark.sh
Created
December 3, 2025 11:14
-
-
Save adampielak/308b71b0b4aa725514c8fe1a20de32c3 to your computer and use it in GitHub Desktop.
PromSketch query performance benchmarking script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # PromSketch benchmark script - compare query performance | |
| PROMETHEUS_URL="http://localhost:9090" | |
| PROMSKETCH_URL="http://localhost:8080" | |
| QUERY='histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))' | |
| echo "=== PromSketch Benchmark ===" | |
| echo "Query: ${QUERY}" | |
| echo "" | |
| # Benchmark direct Prometheus query | |
| echo "Testing Prometheus (baseline)..." | |
| prom_start=$(date +%s%N) | |
| curl -s -G "${PROMETHEUS_URL}/api/v1/query" \ | |
| --data-urlencode "query=${QUERY}" > /dev/null | |
| prom_end=$(date +%s%N) | |
| prom_time=$(( (prom_end - prom_start) / 1000000 )) | |
| # Benchmark PromSketch proxy query | |
| echo "Testing PromSketch..." | |
| sketch_start=$(date +%s%N) | |
| curl -s -G "${PROMSKETCH_URL}/api/v1/query" \ | |
| --data-urlencode "query=${QUERY}" > /dev/null | |
| sketch_end=$(date +%s%N) | |
| sketch_time=$(( (sketch_end - sketch_start) / 1000000 )) | |
| # Calculate speedup | |
| speedup=$(echo "scale=2; $prom_time / $sketch_time" | bc) | |
| echo "" | |
| echo "=== Results ===" | |
| echo "Prometheus: ${prom_time}ms" | |
| echo "PromSketch: ${sketch_time}ms" | |
| echo "Speedup: ${speedup}x" | |
| echo "" | |
| # Test high-cardinality queries | |
| echo "Testing high-cardinality queries..." | |
| HC_QUERY='sum(rate(container_cpu_usage_seconds_total{namespace="default"}[1h])) by (pod_name)' | |
| prom_hc_start=$(date +%s%N) | |
| curl -s -G "${PROMETHEUS_URL}/api/v1/query" \ | |
| --data-urlencode "query=${HC_QUERY}" > /dev/null | |
| prom_hc_end=$(date +%s%N) | |
| prom_hc_time=$(( (prom_hc_end - prom_hc_start) / 1000000 )) | |
| sketch_hc_start=$(date +%s%N) | |
| curl -s -G "${PROMSKETCH_URL}/api/v1/query" \ | |
| --data-urlencode "query=${HC_QUERY}" > /dev/null | |
| sketch_hc_end=$(date +%s%N) | |
| sketch_hc_time=$(( (sketch_hc_end - sketch_hc_start) / 1000000 )) | |
| hc_speedup=$(echo "scale=2; $prom_hc_time / $sketch_hc_time" | bc) | |
| echo "High-cardinality Prometheus: ${prom_hc_time}ms" | |
| echo "High-cardinality PromSketch: ${sketch_hc_time}ms" | |
| echo "High-cardinality speedup: ${hc_speedup}x" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment