#750·vegeta

Prometheus request_fail_count counter never incremented

Author: queeliusCreated Mar 25, 2026Updated Mar 25, 2026

Bug Description

In lib/prom/prom.go, the Observe method creates a fail counter label set via WithLabelValues() but never calls .Inc() on the returned counter:

go
if res.Error != "" {
    pm.requestFailCounter.WithLabelValues(res.Method, res.URL, code, res.Error)
}

This means the request_fail_count Prometheus metric is always zero, regardless of how many errors occur during the attack. The metric label set is registered in the registry (so it shows up in /metrics output), but its value is never incremented.

Impact

Users relying on the Prometheus integration to monitor attack error rates will always see a zero fail count, silently hiding all errors from their Grafana dashboards and alerting rules.

Fix

Add .Inc() to the end of the WithLabelValues() call:

go
if res.Error != "" {
    pm.requestFailCounter.WithLabelValues(res.Method, res.URL, code, res.Error).Inc()
}

Reproduction

A test that verifies the counter value (rather than just checking the metric exists) demonstrates the bug. The existing test TestMetrics_Observe only parses metric names from the scrape output; it doesn't verify the counter has a non-zero value.

PR forthcoming.