It's a Fake Webserver to generate metrics data for Prometheus load testing.
- Generates configurable number of API endpoints
- Creates multiple label combinations (regions, versions) for high cardinality testing
- Simulates realistic traffic patterns with oscillating request rates
- Includes error simulation and periodic outages
- Exports Prometheus metrics at
/metrics
endpoint
./fake-webserver [flags]
Flags:
-num-endpoints int
Number of API endpoints to generate (default 50)
-num-regions int
Number of region labels to generate (default 5)
-num-versions int
Number of version labels to generate (default 3)
-oscillation-period duration
Duration of rate oscillation period (default 5m)
-enable-process-metrics
Include process_* metrics (default true)
-enable-go-metrics
Include go_* metrics (default true)
-allow-metrics-compression
Allow gzip compression of metrics (default true)
Default settings (~4,860 time series):
./fake-webserver
High cardinality test (~31,200 time series):
./fake-webserver -num-endpoints=100 -num-regions=10 -num-versions=5
Extreme load test (~156,000 time series):
./fake-webserver -num-endpoints=500 -num-regions=10 -num-versions=5
codelab_api_request_duration_seconds
- Histogram of request durations (with buckets)codelab_api_http_requests_in_progress
- Gauge of concurrent requestscodelab_api_requests_total
- Counter of total requestscodelab_api_request_errors_total
- Counter of failed requests
Each metric includes labels: method
, path
, status
, region
, version
coldstar/fake-webserver:v2
You can simple use kubectl apply -f deploy.yaml