VictoriaMetrics Error: 'cannot parse labels' — Cause, Fix, and Troubleshooting Guide
Fix VictoriaMetrics 'cannot parse labels ...: missing quotes for label value': quote label values, fix exporter text, post to the right endpoint.
- #victoriametrics
- #monitoring
- #troubleshooting
- #errors
Stuck on this Victoria Metrics error? Get the free incident triage checklist
A one-page PDF — the exact steps to isolate, fix, and verify a production error like this one. No spam, unsubscribe anytime.
What this error means
When VictoriaMetrics ingests Prometheus text-exposition data — whether scraped from a /metrics endpoint or pushed to /api/v1/import/prometheus — it parses each line into a metric name, label set, value, and optional timestamp. If a label value is not wrapped in double quotes, the parser cannot tell where the value ends and rejects the sample:
cannot parse labels "http_requests_total{method=GET,code=200}": missing quotes for label value; got "GET"
The Prometheus exposition format requires every label value to be a double-quoted string: {method="GET",code="200"}. An exporter emitting {method=GET} is producing invalid text, and VictoriaMetrics (like Prometheus itself) refuses it rather than guessing. This is a producer-side formatting bug or a mismatch between the payload you are sending and the endpoint you are sending it to.
Where records stall
- Ingest logs show
cannot parse labels ...: missing quotes for label valueand the offending sample is dropped. - A specific exporter’s series never appear, while other targets scrape cleanly.
- A custom push script to
/api/v1/import/prometheusreturns an error on some or all lines. - The bad sample renders fine to the human eye but is missing quotes, unescaped, or posted in the wrong format.
promtool check metricson the exporter’s output flags the same line.
Following a record through the pipeline
Validate the exporter’s raw output with promtool, which uses the same exposition grammar VictoriaMetrics expects:
# Fetch and lint the exporter's exposition text
curl -s 'http://localhost:9100/metrics' > /tmp/metrics.txt
promtool check metrics < /tmp/metrics.txt
Isolate the failing line and post just it to confirm the fix before reprocessing a full payload:
# A correctly quoted sample should ingest cleanly
printf 'http_requests_total{method="GET",code="200"} 42\n' \
| curl -s --data-binary @- 'http://localhost:8428/api/v1/import/prometheus'
If the same bytes fail, grep the payload for unquoted values — the classic tell is an = immediately followed by a non-quote character inside the braces ({method= rather than {method=").
Pipeline causes
- Unquoted label values — the exporter emits
{method=GET}instead of{method="GET"}. - Malformed exposition text — hand-built or templated
/metricsoutput that does not conform to the Prometheus text format. - Bad escaping — a label value containing a quote or backslash that was not escaped (
\",\\), breaking the tokenizer. - Wrong import endpoint — sending Prometheus text to a JSON/CSV/Influx importer (or vice-versa), so the parser applies the wrong grammar to the payload.
Remediation
1. Quote every label value. The correct form is {method="GET",code="200"}. Fix the exporter or the code generating the exposition text so every value between the braces is a double-quoted string.
2. Correct the exporter output. If a custom or hand-rolled exporter is emitting invalid text, bring it into line with the Prometheus text-exposition format — quoted values, one sample per line, and properly escaped special characters (\", \\, \n).
3. Post to the endpoint that matches your format. Prometheus text goes to /api/v1/import/prometheus; do not send it to the JSON, CSV, or Influx importers. Route each payload to the import endpoint built for its format:
# Prometheus exposition text -> the prometheus importer, on single-node 8428
curl -s --data-binary @metrics.txt \
'http://localhost:8428/api/v1/import/prometheus'
4. Lint in CI. Add promtool check metrics against the exporter’s /metrics output to your pipeline so unquoted or malformed labels are caught before they reach ingestion.
Keeping ingestion stable
- The error names the exact substring it choked on (
got "GET") — read it literally to find the offending label instead of guessing. - One bad line only drops that sample, so a partly-broken exporter can silently lose a subset of series while looking healthy overall.
- Quotes and backslashes inside a value must be escaped; an unescaped quote produces the same parse failure even when the outer quoting looks correct.
- Sending a valid-but-wrong format (e.g. Influx line protocol) to the Prometheus importer yields parse errors too — match payload to endpoint first.
Related pipeline errors
- VictoriaMetrics Error Guide: cannot parse MetricsQL
- VictoriaMetrics Error Guide: cannot parse timestamp
- VictoriaMetrics Error Guide: promscrape maxScrapeSize
Fixed it? Get 500 Victoria Metrics & DevOps AI prompts — free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.
Did this fix your issue?
Trending errors this week
The error guides other engineers are actually reading right now.
- 1mount: wrong fs type, bad option, bad superblock
- 2Docker 'failed to set up container networking': Fix the Bridge and IP Pool
- 3Docker 'failed to create shim task': How to Fix the containerd Runtime Error
- 4modprobe: FATAL: Module not found
- 5mount: wrong fs type, bad option, bad superblock
- 6Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Get 500 Battle-Tested DevOps AI Prompts — Free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.