Metriktypen
Counter: monoton steigend, nur mit
rate()/increase() auswerten.
Gauge: frei beweglicher Momentanwert
(Queue-Länge, Memory).
Histogram: kumulative le-Buckets +
_sum/_count, serverseitig
aggregierbar. Summary: client-seitig berechnete
Quantile, nicht über Instanzen aggregierbar.
Labels, Serien, Cardinality
Jede eindeutige Label-Kombination erzeugt eine eigene Zeitserie. Serienzahl wächst multiplikativ mit den Wertemengen der Labels, Cardinality ist die zentrale Kostengröße für RAM, Ingest und Query-Latenz. Labels nur für Dimensionen mit kleiner, stabiler Wertemenge.
Native Histograms (stabil seit 3.8)
Exponentielle Buckets mit hoher Auflösung in
einer Serie statt Dutzender
le-Serien. Scraping explizit aktivieren:
scrape_native_histograms: true (global oder pro Job);
ohne gesetztes scrape_protocols (global oder im Job)
verhandelt der Job dann Protobuf zuerst. Per Target
überschreibbar über
__scrape_native_histograms__ (ab 3.13); die
Protokollwahl bleibt dabei auf Job-Ebene. Das alte Feature-Flag
native-histograms ist seit 3.9 wirkungslos.
Prometheus 3.x
UTF-8 in Metrik-/Label-Namen (Rückfall:
metric_name_validation_scheme: legacy).
OTLP-Receiver:
--web.enable-otlp-receiver.
Agent-Mode: --agent, nur
Scrape + WAL + Remote-Write, kein Querying/Alerting/lokale TSDB.
Defaults: scrape_interval 1m,
scrape_timeout 10s, TSDB-Retention 15d. Retention
gehört in die Config-Datei
(storage.tsdb.retention.time/.size,
reload-fähig), die gleichnamigen Flags sind deprecated; ab 3.15
gilt das auch für --log.level (→
runtime.log_level).
# Cardinality inspizieren
curl -s localhost:9090/api/v1/status/tsdb | jq .
# Top-10 Metriken nach Serienzahl (PromQL)
topk(10, count by (__name__)({__name__=~".+"}))