1550 Commits

Author SHA1 Message Date
Matthieu MOREL
dd5ab743ea chore(deps): use version.PrometheusUserAgent
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-01-22 07:31:02 +01:00
Bartlomiej Plotka
a3c7f72ad0
Merge pull request #15541 from machine424/wellwellwell
fix(remote): rename some remote read related metrics for better clarity and consistency
2025-01-16 15:25:45 +01:00
Bartlomiej Plotka
de2dfe00f4
Merge pull request #15832 from prometheus/metadatafix
scrape: Fix metadata in WAL not working for histograms and summaries.
2025-01-16 15:06:40 +01:00
George Krajcsovits
5ed0edd3ab
Update storage/remote/queue_manager.go
Co-authored-by: Bartlomiej Plotka <bwplotka@gmail.com>
Signed-off-by: George Krajcsovits <krajorama@users.noreply.github.com>
2025-01-16 08:12:33 +01:00
bwplotka
9385f31147 scrape: Fix metadata in WAL not working for histograms and summaries.
The was a bug (due to confusion?) on the local metadata cache that is cached
by metric family not the series metric name. The fix is to NOT use that local cache
at all (it's still needed for current metadata API implementation, added TODO
on how we can get rid of it).

I went ahead and also rename Metric field in metadata structs to MetricFamily to make
clear it's not always __name__.

Signed-off-by: bwplotka <bwplotka@gmail.com>
2025-01-15 20:12:38 +00:00
György Krajcsovits
482a7fd890 fix(remotewrite2): do not send uninitialized garbage if there's no metadata
Found during testing for
https://github.com/grafana/mimir/issues/9072

Debug printout showed:
KRAJO: seriesName=cortex_request_duration_seconds_bucket,
metricFamily=cortex_request_duration_seconds_bucket,
type=GAUGE,
help=cortex_bucket_index_load_duration_seconds_sum,
unit=

which is nonsense.

I can imagine more cases where this is the case and makes actual sense.
Some targets might miss metadata and if there's a pipeline that loses it.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2025-01-15 12:42:52 +01:00
Bartlomiej Plotka
c12f963997
Merge pull request #15825 from prometheus/krajo/fix-metadata-enqueueing
fix(remotewrite2): do not overwrite help text with unit in enqueue
2025-01-15 08:24:12 +01:00
György Krajcsovits
594b882e8b fix(remotewrite2): do not overwrite help text with unit in enqueue
While testing POC for https://github.com/grafana/mimir/issues/9072
I saw no unit or help metadata. Our test env:
https://github.com/grafana/mimir/tree/main/development/mimir-monolithic-mode
doesn't have units, so that was empty and cleared the help due to this bug.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2025-01-14 18:44:00 +01:00
sh0rez
5303e515af
remote/otlp: convert delta to cumulative (#15165)
What

Adds support for OTLP delta temporality to the OTLP endpoint.
This is done by calling the deltatocumulative processor from the OpenTelemetry collector during OTLP conversion.

Why

Delta conversion is a naturally stateful process, which requires careful request routing when operated inside a collector.
Prometheus is already stateful and doing the conversion in-server reduces the operational burden on the ingest architecture by only having one stateful component.

How

deltatocumulative is a OTel collector component that works as follows:

* pmetric.Metrics come from a receiver or in this case from the HTTP client
* It operates as an in-place update loop:
    * for each sample, if not delta, leave unmodified
    * if delta, do:
      * state += sample, where state is the in-memory sum of all previous samples
      * sample = state, sample value is now cumulative
    * this is supported for sums (counters), gauges, histograms (old histograms) and exponential histograms (native histograms)
If a series receives no new samples for 5m, its state is removed from memory


Performance

Delta performance is a stateful operation and the OTel code is not highly optimized yet, e.g. it locks the entire processor for each request. Nonetheless, care has been taken to mitigate those effects:

delta conversion is behind a feature flag. If disabled, no conversion code is ever invoked
if enabled, conversion is not invoked if request not actually contains delta samples. This leads to no measureable performance difference between default-cumulative to convert-cumulative (only cumulative, feature on/off)

Signed-off-by: sh0rez <me@shorez.de>
2025-01-14 11:33:31 -03:00
Arve Knudsen
f030894c2c
Fix issues raised by staticcheck (#15722)
Fix issues raised by staticcheck

We are not enabling staticcheck explicitly, though, because it has too many false positives.

---------

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2025-01-09 17:51:26 +01:00
Arthur Silva Sens
5fdec31401
otlp/translator: Use separate function for metric names with UTF8 characters (#15664)
BuildCompliantName was renamed to BuildCompliantMetricName, and it no longer takes UTF8 support into consideration. It focuses on building a metric name that follows Prometheus conventions.

A new function, BuildMetricName, was added to optionally add unit and type suffixes to OTLP metric names without translating any characters to underscores(_).
2025-01-06 11:30:39 -03:00
Arve Knudsen
f37b5adfef
OTLP receiver: Optimize by initializing regexps at program start (#15733)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-12-31 11:12:21 +01:00
Bartlomiej Plotka
30967330ca
Merge pull request #14755 from prometheus/arthursens/appendct-prwv2
Append CT as zero sample from PRWv2
2024-12-27 12:44:54 +01:00
Arve Knudsen
475b7ff256 OTLP receiver: Allow colons in non-standard units
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-12-21 18:53:14 +01:00
Arve Knudsen
5e7f804eeb
otlptranslator: Remove unused function TrimPromSuffixes (#15709)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-12-21 18:51:40 +01:00
Arthur Silva Sens
b7a5e280df
Inline conditionals and CT handling
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-12-20 10:48:46 -03:00
Arthur Silva Sens
3380809b68
fix linter
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-12-20 10:48:46 -03:00
Arthur Silva Sens
3ffc3bf6a3
handle histogram CT
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-12-20 10:48:46 -03:00
Arthur Silva Sens
6571d97e70
Handle histogram's created timestamp
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-12-20 10:48:46 -03:00
Arthur Silva Sens
3b97a6397c
Put PRWv2 created timestamp ingestion behing feature-flag
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-12-20 10:48:46 -03:00
Arthur Silva Sens
11e4673e0b
Support ingesting PWRv2's Created Timestamp as 0 samples
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-12-20 10:48:46 -03:00
Joel Beckmeyer
c8c128b0f1 fix TestDropOldTimeSeries on 32-bit
Signed-off-by: Joel Beckmeyer <joel@beckmeyer.us>
2024-12-16 10:45:07 -05:00
Joel Beckmeyer
39f5a07236 fix TestOOOHeadChunkReader_Chunk on 32-bit
Signed-off-by: Joel Beckmeyer <joel@beckmeyer.us>
2024-12-16 10:45:07 -05:00
David Ashpole
953a873342
update links to openmetrics to reference the v1.0.0 release
Signed-off-by: David Ashpole <dashpole@google.com>
2024-12-13 21:32:27 +00:00
Arve Knudsen
9895d882b4
OTLP receiver: Use stdlib for splitting metric name in classical mode (#15573)
In non-UTF-8 mode, use strings.FieldsFunc to split string into tokens,
as it was before PR #15258. This makes the code more robust and
readable.

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-12-11 15:12:53 +01:00
Björn Rabenstein
3a4e7710a0
Merge pull request #15531 from prometheus/owilliams/promqltest
promql: Fix various UTF-8 bugs related to quoting
2024-12-10 17:45:10 +01:00
avoidaway
fe4e817007 chore: fix some function names in comment
Signed-off-by: avoidaway <cmoman@126.com>
2024-12-09 21:07:47 +08:00
machine424
7aa1f4571b
fix(remote): rename some remote read related metrics for better clarity.
From the remote read handler side:

prometheus_api_remote_read_queries -> prometheus_remote_read_handler_queries

From the remote read client side:

prometheus_remote_storage_read_queries_total -> prometheus_remote_read_client_queries_total
prometheus_remote_storage_remote_read_queries -> prometheus_remote_read_client_queries
prometheus_remote_storage_read_request_duration_seconds -> prometheus_remote_read_client_request_duration_seconds

Signed-off-by: machine424 <ayoubmrini424@gmail.com>
2024-12-06 17:09:00 +01:00
Owen Williams
8d4bcd2c77 promql: Fix various UTF-8 bugs related to quoting
Fixes UTF-8 aggregator label list items getting mutated with quote marks when String-ified.
Fixes quoted metric names not supported in metric declarations.
Fixes UTF-8 label names not being quoted when String-ified.

Fixes https://github.com/prometheus/prometheus/issues/15470
Fixes https://github.com/prometheus/prometheus/issues/15528

Signed-off-by: Owen Williams <owen.williams@grafana.com>
Co-authored-by: Bryan Boreham <bjboreham@gmail.com>
2024-12-04 14:18:59 -05:00
Arve Knudsen
a574335d6b OTLP receiver: Don't call NormalizeLabel in NoUTF8EscapingWithSuffixes mode
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-12-04 17:01:08 +01:00
George Krajcsovits
92fdf65187
Merge pull request #15448 from prometheus/no-ignore-identifying-attributes
OTLP translate: optionally keep identifying attributes in target_info
2024-12-02 17:33:48 +01:00
George Krajcsovits
1b2cf7edcf
Update storage/remote/otlptranslator/prometheusremotewrite/metrics_to_prw_test.go
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Signed-off-by: George Krajcsovits <krajorama@users.noreply.github.com>
2024-11-30 21:57:13 +01:00
György Krajcsovits
174f828d70 Rename to keep_identifying_resource_attributes
Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2024-11-29 15:19:14 +01:00
György Krajcsovits
ffabc04829 Make the behavior configurable
Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2024-11-29 15:12:57 +01:00
Bryan Boreham
fd4797d756 [PERF] RW: Remove interning hook
It does nothing for standard Prometheus builds with -tags stringlabels,
but the check to see if labels are being replaced has a cost.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
2024-11-26 16:37:57 +00:00
Bryan Boreham
7996a13fdd
Merge pull request #15403 from bboreham/fix-rw-benchmark-startup
[TESTS] Remote-Write: Fix BenchmarkStartup
2024-11-25 17:31:24 +00:00
György Krajcsovits
a53b48a912 OTLP translate: keep identifying attributes in target_info
Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2024-11-25 09:27:50 +01:00
Arve Knudsen
89bbb885e5
Upgrade to golangci-lint v1.62.0 (#15424)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-11-20 17:22:20 +01:00
Arve Knudsen
9c02c26418
OTLP receiver: Convert also metric metadata (#15416)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-11-20 11:13:03 +01:00
Björn Rabenstein
384c5951ef
Merge pull request #14489 from harry671003/implement_metadata_limit
storage: Implement limit in mergeGenericQuerier
2024-11-19 17:32:16 +01:00
Đurica Yuri Nikolić
101b1c307f
[ENHANCEMEN] Remote-Write: optionally use a DNS resolver that picks a random IP (#15329)
When a remote-write is executed towards a host name that is resolved to multiple IP addresses, this PR introduces a possibility to force creation of new connections used for the remote-write request to a randomly chosen IP address from the ones corresponding to the host name. The default behavior remains unchanged, i.s., the IP address used for the connection creation remains the one chosen by Go.

This is an experimental feature, it is disabled by default.

Signed-off-by: Yuri Nikolic <durica.nikolic@grafana.com>
2024-11-15 15:41:49 +00:00
Bryan Boreham
0ef0b75a4f [TESTS] Remote-Write: Fix BenchmarkStartup
It was crashing due to uninitialized metrics, and not terminating due to
incorrectly reading segment names.

We need to export `SetMetrics` to avoid the first problem.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
2024-11-15 11:22:07 +00:00
SuperQ
bc1bc5c118
Update sigv4 library
Migrate use of prometheus/common/sigv4 to prometheus/sigv4.

Related to: https://github.com/prometheus/common/issues/709

Signed-off-by: SuperQ <superq@gmail.com>
2024-11-08 22:35:44 +01:00
Arthur Silva Sens
03995775a7
Allow UTF-8 characters in metric and label names as opt-in feature (#15258)
* Allow UTF-8 characters in metric and label names as opt-in feature

---------

Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-11-08 10:02:48 -03:00
🌲 Harry 🌊 John 🏔
f9bc50b247 storage: Implement limit in mergeGenericQuerier
Signed-off-by: 🌲 Harry 🌊 John 🏔 <johrry@amazon.com>
2024-11-07 09:08:23 -08:00
Matthieu MOREL
af1a19fc78 enable errorf rule from perfsprint linter
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-11-06 16:50:36 +01:00
Arve Knudsen
7c4f877881
otlptranslator: Harmonize non-UTF8 sanitization w/ naming rules. (#15314)
* otlptranslator: Harmonize non-UTF8 sanitization w/ naming rules.

Harmonize non-UTF8 sanitization w/ Prometheus naming rules.

---------

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-11-03 12:56:54 +00:00
Arthur Silva Sens
1a22b1d846
bugfix: Fix otlp translator switching colons to undescores (#15251)
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-11-03 13:15:49 +01:00
Arthur Silva Sens
034d2b24bc
Fix typos in tests (#15312)
Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
2024-11-02 15:38:51 +01:00
Bartlomiej Plotka
dd4eb4590d
Merge pull request #15222 from jmichalek132/jm-add-tcp-events-to-tracing
tracing: add tcp events to remote store span
2024-11-01 14:26:15 +01:00