Created
November 17, 2025 05:07
-
-
Save williamzujkowski/1d827beed3727ae6992e65c782c56776 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