Prometheus Exposition — UTF-8 Quoted Metric and Label Names (prom)
Dotted OpenTelemetry-style metric and label names written with the quoted-name syntax that Prometheus 3 accepts, mixed in one document with a legacy underscore-named family. The fixture for parsers that still assume every name matches [a-zA-Z_][a-zA-Z0-9_]*.
# UTF-8 metric and label names use the quoted-name syntax (Prometheus 3.x).
# HELP "shop.orders.total" Orders accepted, named in dotted OpenTelemetry style.
# TYPE "shop.orders.total" counter
{"shop.orders.total", "service.name"="checkout-api", "deployment.environment"="staging"} 24518
{"shop.orders.total", "service.name"="cart-api", "deployment.environment"="staging"} 0
# HELP "http.server.request.duration" Latency using dotted names and a unit suffix.
# TYPE "http.server.request.duration" histogram
{"http.server.request.duration_bucket", "service.name"="checkout-api", le="0.1"} 15908
{"http.server.request.duration_bucket", "service.name"="checkout-api", le="+Inf"} 24518
{"http.server.request.duration_sum", "service.name"="checkout-api"} 3418.2214
{"http.server.request.duration_count", "service.name"="checkout-api"} 24518
# A legacy-named family in the same document, to prove both syntaxes can coexist.
# TYPE legacy_named_total counter
legacy_named_total{service="checkout-api"} 24518
Specifications
- Families
- 3
- Quoted Name Families
- 2
- Legacy Name Families
- 1
- Syntax
- Prometheus 3.x UTF-8 names
- Dotted Names
- true
Testing contract
Expected to pass- Scenario
- Parse the document with a Prometheus 3 compatible exposition parser.
- Expected result
- Both quoted-name families and the legacy family parse from the same document, and "shop.orders.total" is preserved with its dots rather than rewritten to shop_orders_total.
What is a .prom file?
A .prom file holds metrics in the Prometheus text exposition format, the same body a `/metrics` endpoint returns. Each metric family is introduced by `# HELP` and `# TYPE` comments and followed by one sample per line: a metric name, an optional brace-delimited label set, a value, and an optional millisecond timestamp. Counters, gauges, histograms (with `_bucket`, `_sum`, `_count` series and a `+Inf` bucket), and summaries with quantile labels all use this one grammar.
How to use this file
Use an example .prom file to test exposition-format parsers, scrapers, and the node_exporter textfile collector — checking label escaping, histogram bucket ordering and cumulative counts, and the handling of `NaN` and `+Inf` values.
How to use this file for testing
“Prometheus Exposition — UTF-8 Quoted Metric and Label Names (prom)” is a deterministic Novus Examples fixture for Observability, Encoding detection, Config parsing. Structured and plain-text telemetry with known timestamps, levels, request identifiers, and error states for testing log ingestion, correlation, dashboards, and alert pipelines.
Documented properties for this file: PROM · 1,000 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Telemetry fixtures use fixed trace IDs, span IDs, and timestamps so ingestion is reproducible run to run. Point your collector, parser, or query layer at the file and assert the documented span tree, metric families, or severity mix; service and host names are invented.
Related files
- yamlAlertmanager Config — Routing Tree, Inhibition and Mute Windows (yaml)An Alertmanager configuration with the routing behaviour that is hard to reason about without a fixture: a continue: true branch so a critical alert reaches two receivers, an inhibition rule suppressing warnings under a matching critical, and a weekend mute window.

- txtB3 Propagation — Single and Multi-Header Forms (txt)B3 context propagation in both shapes — the compact single b3 header including the debug flag, a legacy 64-bit trace ID and the sampling-only form, plus the five X-B3-* multi-header fields — with two malformed values that must be rejected.

- logCRI Container Log — Partial Lines and Two Streams (log)The CRI log format Kubernetes nodes actually write: an RFC 3339 nanosecond timestamp, a stream name, and an F or P tag marking whether the line is full or a partial continuation. One long message is split across several P lines that must be rejoined before parsing.

- confFluent Bit — Tail, Enrich and Forward Pipeline (conf)A Fluent Bit configuration in its INI-like section format: a tail input using the CRI multiline parser that reassembles the partial-line fixture, Kubernetes enrichment, a modify filter dropping two of the high-cardinality fields, and a throttle. Keys are space-aligned, not delimited.

- loglogfmt — Quoting, Escaping and Bare-Key Edge Cases (log)logfmt lines built to break naive splitting on spaces and equals signs: a value containing an equals sign, escaped quotes, a trailing backslash before the closing quote, a bare key with no value, duplicate keys, non-ASCII values and one unterminated quote followed by a clean line.

- yamlOpenTelemetry Collector — Tail-Sampling Policies (yaml)Six tail-sampling policies including an inverted regex match that drops health checks and a composite policy with its own rate limit and ordered sub-policies. Policies are OR-ed and one match keeps the entire trace, which is the semantic most people get backwards.

Generated by generation/observability.py. Free for any use, no attribution required — license.