# X_METRIC_NAME_INVALID

## Means

metric name is malformed, or redeclared with a different kind, bounds or observer

## Typical cause

a name that is not lowercase `snake_case` — dotted OTel names survive OTLP but not a Prometheus scrape, and the autoscaler reads the scrape — or one name declared as both a counter and a gauge, or a second `histogram('x', { bounds })` / `gauge('x', { observe })` whose stated option differs from the first. An **omitted** option is still a handle-fetch, so `gauge(name)` keeps working

## Fix

rename the instrument: `counter('http_requests_total')`, one metric name to one kind; or make the second declaration state the same `bounds`/`observe` as the first

[Metrics](/error-codes#metrics)
