1.22.0 (2026-11-12)
⚠ BREAKING CHANGES
- loki.enrich: Removes
target_match_label,logs_match_labelandmetrics_match_labelfromloki.enrichandprometheus.enrich. Thetarget_to_log_matchandtarget_to_metric_matcharguments are now required. - otelcol.connector: This may render certain configurations invalid. These bad configurations were silently accepted before, but in practice they never caused problems because all connectors currently defined only output one signal type. This issue was surfaced while implementing #7385, which supports more than one output signal.
Features 🌟
- Add k8seventreceiver to the OTel Engine (#7425) (48317f3) (@blewis12)
- component.http.oauth2: Add jwt private key client authentication (#7130) (6fbbee3) (@umarhussain15, @kalleep, @clayton-cornell)
- database_observability.sql_server: Add
server_configurationcollector (#7525) (9d18f83) (@cristiangreco, @cursoragent) - database_observability.sql_server: Add
server_metricscollector (#7545) (f763183) (@cristiangreco) - database_observability.sql_server: Add additional performance counter metrics to server_metrics (#7596) (a97d6a4) (@cristiangreco, @cursoragent)
- database_observability.sql_server: Add throttling options to query_samples collector (#7567) (8cfd0bd) (@cristiangreco, @cursoragent)
- database_observability: Add include settings for databases, schemas, and users (#7642) (40be7ff) (@cristiangreco, @cursoragent)
- database_observability: Default
enable_pre_classified_wait_eventsto true (#7579) (21ac5ef) (@cristiangreco, @cursoragent) - database_observability: Emit parsed table names as a list with op=query_parsed_table_names_v2 (#7520) (67aaa9d) (@fridgepoet)
- database_observability: Only enable MySQL perf_schema.eventsstatements collector by default in embedded prometheus exporter (#7514) (d9e795f) (@fridgepoet)
- database_observability: Preserve default exclusions and warn on settings mismatch (#7626) (84a0021) (@cristiangreco)
- helm: Add distroless option (#7516) (962af92) (@x1unix)
- loki.enrich: Add multi-label matching (#7053) (f168087) (@efadeev, @dehaansa)
- loki.enrich: Remove deprecated match arguments (#7587) (fbd2a29) (@dehaansa)
- otelcol.connector.exceptions: Add exceptions connector component from otel collector contrib (#7385) (782d4e3) (@jcreixell, @clayton-cornell)
- otelcol.receiver.kafka: Add the
dial_timeoutargument (default10s). Upstream now requires it. This also applies tootelcol.exporter.kafka(#7586) (14ffd21) (@thampiotr) - otelcol.receiver.kafka: Add the
max_decompress_batch_bytesargument (default1073741824) (#7586) (14ffd21) (@thampiotr) - otelcol.receiver.kafka: Add the
max_prefetchandmax_in_flightblocks topartition_processing(#7586) (14ffd21) (@thampiotr) - otelcol.receiver.kafka: Deprecate
partition_processing > max_buffered_batchesin favor ofpartition_processing > max_prefetch > batches. Upstream removes it in v0.166.0 (#7586) (14ffd21) (@thampiotr) - otelcol.receiver.kafka: Support encoding extensions (#7430) (ede6371) (@x1unix)
- otelcol: Add Azure encoding extension (#7400) (146ed71) (@x1unix)
- otelcol: Upgrade to OTel Collector v0.164.1 (#7586) (14ffd21) (@thampiotr)
- prometheus.exporter.cadvisor: Add housekeeping_interval arguments (#7478) (163eeef) (@KrothuTheCoder, @dehaansa, @clayton-cornell)
- prometheus.operator: Support Prometheus operator scrape classes (#6466) (a941fb5) (@ulascansenturk, @blewis12, @dehaansa)
- prometheus.snmp_exporter: Support multiple config files (#6892) (51f6ffb) (@LarsStegman, @clayton-cornell)
- Promote loki.enrich and prometheus.enrich to public preview (#7597) (87cca81) (@dehaansa)
- pyroscope.ebpf: Update ebpf-profiler fork to upstream v0.0.202640 (#7408) (7b0591a) (@korniltsev-grafanista)
- pyroscope.java: Update async-profiler to v4.6 (#7447) (33bd346) (@korniltsev-grafanista)
Bug Fixes 🐛
- collector: Update root x/net dependency to v0.62.0 (#7599) (5c7b2a1) (@jharvey10)
- database_observability.mysql: Enable additional collectors on embedded exporter (#7608) (8caea29) (@matthewnolf)
- database_observability.mysql: Omit digest_text label (#7607) (4ceaddf) (@matthewnolf)
- database_observability.postgres: Improve table registry lifecycle and unqualified lookup (#7470) (587dab2) (@cristiangreco, @cursoragent)
- database_observability.postgres: Include instance label in ID generation (#7301) (295b6ce) (@matthewnolf)
- database_observability.sql_server: Check server-level permissions and avoid false positives in health check (#7656) (ae815a7) (@cristiangreco, @cursoragent)
- database_observability.sql_server: Include instance name in generated
server_id(#7521) (5e9571c) (@cristiangreco) - database_observability.sql_server: Parse TopSort and Spool wrappers and keep subtrees of unmodeled operators (#7406) (2e887f6) (@rgeyer, @cristiangreco)
- database_observability.sql_server: Preserve query shape avoiding normalization (#7395) (72bd5fc) (@cristiangreco, @cursoragent)
- database_observability.sql_server: Report Azure SQL engine by name in engine_version (#7502) (6760716) (@rgeyer)
- database_observability.sql_server: Support StmtCond explain plans (#7598) (c320b9d) (@cristiangreco, @cursoragent)
- database_observability.sql_server: Validate parsed table names (#7413) (7f06682) (@cristiangreco, @cursoragent)
- database_observability: Apply exclusions to embedded exporters (#7580) (8753e61) (@cristiangreco, @cursoragent)
- deps: Update github.com/andybalholm/brotli to v1.2.7 (#7519) (fccef0f) (@thampiotr)
- faro.receiver: Enforce download_from_origins on redirects and sourcemap URLs (#7477) (9ddd772) (@kgeckhart)
- Hide HTTP proxy env vars in support bundles (#7559) (9a75d53) (@ptodev)
- logging: Fix deadlock in deferred handler when creating loggers concurrently (#7632) (27d88b9) (@Vivek1898)
- loki.process: Move stage.logfmt to syntax.Validator (#7446) (aba9a0e) (@michael-duren)
- loki.process: Move stage.luhn to syntax.Validator (#7421) (beeec13) (@michael-duren)
- loki.process: Move stage.multiline to syntax.Validator (#7420) (095f423) (@michael-duren)
- loki.process: Move stage.replace to syntax.Validator (#7518) (2524277) (@michael-duren)
- loki.source.cloudflare: Stop additional_fields from corrupting the extended and all field presets (#7535) (7fd4068) (@vjsairam)
- loki.source.file: Always update position (#7641) (81c690f) (@kalleep)
- loki.source.file: Read recreated files when the inode is reused (#7538) (e8a8e85) (@hippi345, @kalleep)
- loki.source.kubernetes,loki.source.podlogs: Prevent re-ingesting logs on re-tails (#7507) (2db65de) (@kalleep, @kgeckhart)
- loki.source.windowsevent: Keep the saved bookmark when no new event arrives after a restart (#7589) (b1cf13e) (@v0rest)
- loki.write: Keep the client running when its settings are unchanged (#7620) (24064ae) (@lyelgate)
- loki.write: WAL segment savepoints (#7200) (2dcc043) (@kalleep)
- Migrate config from type string to type secret [backport] (#7499) (b89853a) (@blewis12, @kgeckhart)
- mimir.alerts.kubernetes: Pick up Secret changes without a restart (#7273) (0bc2b79) (@Churi12)
- mimir.rules.kubernetes: Fix non-recovering unhealthy state after a failed restart when Mimir is unreachable (#6339) (8dd633d) (@TheoBrigitte)
- otelcol.connector: Reject output signals that a connector cannot produce (#7389) (5343639) (@jcreixell)
- otelcol.exporter.otlphttp: Deprecate enabled in the cookies block (#7418) (659c5eb) (@kgeckhart, @clayton-cornell)
- otelcol.exporter.prometheus: Pass missing
include_scope_labelsto converter (#6787) (f0d65bd) (@mizuochik) - otelcol.processor.tail_sampling: Pass invert_match through for boolean_attribute policies (#7444) (c139dd7) (@kgeckhart)
- otelcol: Report full build version including pre-release suffix in service.version (#7523) (e306584) (@thampiotr)
- prometheus.exporter.kafka: Avoid panic on empty consumer group member assignment (#7428) (c49e0de) (@ptodev)
- prometheus.operator: Initialize controller-runtime logging (#7287) (072feda) (@mvanhorn)
- prometheus.remote_write: Write start timestamp zero samples to the correct series (#7633) (5a12f45) (@sathvik09, @tobias-eyl-twilio)
- prometheus: Apply relabel and enrich to start timestamp zero samples (#7647) (035e298) (@kgeckhart)
- pyroscope.ebpf: Bug with dropped partially symbolized samples. (#7409) (49b0764) (@korniltsev-grafanista)
- remotecfg: Restore last success metric in notModified response (#7486) (6eaa407) (@tpaschalis)
- security/HIGH/internal/web/ui: Update npm dependency vite to v7.3.7 [SECURITY] (#7464) (3a126f4)
- Update go version to 1.27.3 (#7469) (8d0105f) (@kalleep)
Upgrading
Read the release notes for specific instructions on upgrading from older versions:
Installation
Refer to our installation guide for how to install Grafana Alloy.