Skip to content

tsdb/{index,compact}: allow using custom postings encoding format#13242

Merged
bwplotka merged 3 commits intoprometheus:mainfrom
vinted:enable_using_custom_postings_format
Jan 8, 2024
Merged

tsdb/{index,compact}: allow using custom postings encoding format#13242
bwplotka merged 3 commits intoprometheus:mainfrom
vinted:enable_using_custom_postings_format

Conversation

@GiedriusS
Copy link
Copy Markdown
Contributor

@GiedriusS GiedriusS commented Dec 4, 2023

We would like to experiment with a different postings encoding format in Thanos so in this change I am proposing adding NewWriterWithEncoder which would allow users to change the format if needed. Also, wire the leveled compactor so that it would be possible to change the format there too.

We would like to experiment with a different postings encoding format in
Thanos so in this change I am proposing adding another argument to
`NewWriter` which would allow users to change the format if needed.
Also, wire the leveled compactor so that it would be possible to change
the format there too.

Signed-off-by: Giedrius Statkevičius <[email protected]>
As discussed on Slack, let's use a struct for the options in leveled
compactor.

Signed-off-by: Giedrius Statkevičius <[email protected]>
- Make changes less intrusive
- Turn the postings encoder type into a function
- Add NewWriterWithEncoder()

Signed-off-by: Giedrius Statkevičius <[email protected]>
@GiedriusS
Copy link
Copy Markdown
Contributor Author

Thanks for the review @bboreham, I have made changes as per your suggestions. This made the changes not intrusive.

Copy link
Copy Markdown
Member

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks! Let us know what helps on Thanos side, perhaps might be worth to improve sth for Prometheus itself 💪🏽

@bwplotka bwplotka merged commit 61b4080 into prometheus:main Jan 8, 2024
@GiedriusS GiedriusS deleted the enable_using_custom_postings_format branch January 8, 2024 10:28
GiedriusS added a commit to vinted/thanos that referenced this pull request Jan 11, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
GiedriusS added a commit to vinted/thanos that referenced this pull request Jan 11, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
GiedriusS added a commit to vinted/thanos that referenced this pull request Jan 11, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
GiedriusS added a commit to vinted/thanos that referenced this pull request Jan 11, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
GiedriusS added a commit to vinted/thanos that referenced this pull request Jan 15, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
GiedriusS added a commit to vinted/thanos that referenced this pull request Jan 15, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
GiedriusS added a commit to thanos-io/thanos that referenced this pull request Jan 15, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
pracucci added a commit to pracucci/prometheus that referenced this pull request Jan 16, 2024
bboreham added a commit that referenced this pull request Jan 16, 2024
GiedriusS added a commit to vinted/thanos that referenced this pull request Jan 18, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
hanyuting8 pushed a commit to hanyuting8/thanos that referenced this pull request Jan 19, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
Signed-off-by: hanyuting8 <[email protected]>
hanyuting8 pushed a commit to hanyuting8/thanos that referenced this pull request Jan 19, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
Signed-off-by: hanyuting8 <[email protected]>
cstyan pushed a commit that referenced this pull request Feb 2, 2024
* consoles: exclude iowait and steal from CPU Utilisation

'iowait' and 'steal' indicate specific idle/wait states, which shouldn't
be counted into CPU Utilisation. Also see
prometheus-operator/kube-prometheus#796 and
kubernetes-monitoring/kubernetes-mixin#667.

Per the iostat man page:

%idle
    Show the percentage of time that the CPU or CPUs were idle and the
    system did not have an outstanding disk I/O request.

%iowait
     Show the percentage of time that the CPU or CPUs were idle during
     which the system had an outstanding disk I/O request.

%steal
     Show the percentage of time spent in involuntary wait by the
     virtual CPU or CPUs while the hypervisor was servicing another
     virtual processor.

Signed-off-by: Julian Wiedmann <[email protected]>

* tsdb: shrink txRing with smaller integers

4 billion active transactions ought to be enough for anyone.

Signed-off-by: Bryan Boreham <[email protected]>

* tsdb: create isolation transaction slice on demand

When Prometheus restarts it creates every series read in from the WAL,
but many of those series will be finished, and never receive any more
samples. By defering allocation of the txRing slice to when it is first
needed, we save 32 bytes per stale series.

Signed-off-by: Bryan Boreham <[email protected]>

* add cluster variable to Overview dashboard

Signed-off-by: Erik Sommer <[email protected]>

* promql: simplify Native Histogram arithmetics

Signed-off-by: Linas Medziunas <[email protected]>

* Cut 2.49.0-rc.0 (#13270)

* Cut 2.49.0-rc.0

Signed-off-by: bwplotka <[email protected]>

* Removed the duplicate.

Signed-off-by: bwplotka <[email protected]>

---------

Signed-off-by: bwplotka <[email protected]>

* Add unit protobuf parser

Signed-off-by: Arianna Vespri <[email protected]>

* Go on adding protobuf parsing for unit

Signed-off-by: Arianna Vespri <[email protected]>

* ui: create a reproduction for #13292

Signed-off-by: machine424 <[email protected]>

* Get conditional right

Signed-off-by: Arianna Vespri <[email protected]>

* Get VM Scale Set NIC (#13283)

Calling `*armnetwork.InterfacesClient.Get()` doesn't work for Scale Set
VM NIC, because these use a different Resource ID format.

Use `*armnetwork.InterfacesClient.GetVirtualMachineScaleSetNetworkInterface()`
instead.  This needs both the scale set name and the instance ID, so
add an `InstanceID` field to the `virtualMachine` struct.  `InstanceID`
is empty for a VM that isn't a ScaleSetVM.

Signed-off-by: Daniel Nicholls <[email protected]>

* Cut v2.49.0-rc.1

Signed-off-by: bwplotka <[email protected]>

* Delete debugging lines, amend error message for unit

Signed-off-by: Arianna Vespri <[email protected]>

* Correct order in error message

Signed-off-by: Arianna Vespri <[email protected]>

* Consider storage.ErrTooOldSample as non-retryable

Signed-off-by: Daniel Kerbel <[email protected]>

* scrape_test.go: Increase scrape interval in TestScrapeLoopCache to reduce potential flakiness

Signed-off-by: machine424 <[email protected]>

* Avoid creating string for suffix, consider counters without _total suffix

Signed-off-by: Arianna Vespri <[email protected]>

* build(deps): bump github.com/prometheus/client_golang

Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.17.0 to 1.18.0.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](prometheus/client_golang@v1.17.0...v1.18.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* build(deps): bump actions/setup-node from 3.8.1 to 4.0.1

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.8.1 to 4.0.1.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@5e21ff4...b39b52d)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

* scripts: sort file list in embed directive

Otherwise the resulting string depends on find, which afaict depends on
the underlying filesystem. A stable file list make it easier to detect
UI changes in downstreams that need to track UI assets.

Signed-off-by: Jan Fajerski <[email protected]>

* Fix DataTableProps['data'] for resultType string

Signed-off-by: Kevin Mingtarja <[email protected]>

* Fix handling of scalar and string in isHeatmapData

Signed-off-by: Kevin Mingtarja <[email protected]>

* build(deps): bump github.com/influxdata/influxdb

Bumps [github.com/influxdata/influxdb](https://github.com/influxdata/influxdb) from 1.11.2 to 1.11.4.
- [Release notes](https://github.com/influxdata/influxdb/releases)
- [Commits](influxdata/influxdb@v1.11.2...v1.11.4)

---
updated-dependencies:
- dependency-name: github.com/influxdata/influxdb
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* build(deps): bump github.com/prometheus/prometheus

Bumps [github.com/prometheus/prometheus](https://github.com/prometheus/prometheus) from 0.48.0 to 0.48.1.
- [Release notes](https://github.com/prometheus/prometheus/releases)
- [Changelog](https://github.com/prometheus/prometheus/blob/main/CHANGELOG.md)
- [Commits](v0.48.0...v0.48.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/prometheus
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump client_golang to v1.18.0 (#13373)

Signed-off-by: Paschalis Tsilias <[email protected]>

* Drop old inmemory samples (#13002)

* Drop old inmemory samples

Co-authored-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>

* Avoid copying timeseries when the feature is disabled

Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>

* Run gofmt

Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>

* Clarify docs

Signed-off-by: Marc Tuduri <[email protected]>

* Add more logging info

Signed-off-by: Marc Tuduri <[email protected]>

* Remove loggers

Signed-off-by: Marc Tuduri <[email protected]>

* optimize function and add tests

Signed-off-by: Marc Tuduri <[email protected]>

* Simplify filter

Signed-off-by: Marc Tuduri <[email protected]>

* rename var

Signed-off-by: Marc Tuduri <[email protected]>

* Update help info from metrics

Signed-off-by: Marc Tuduri <[email protected]>

* use metrics to keep track of drop elements during buildWriteRequest

Signed-off-by: Marc Tuduri <[email protected]>

* rename var in tests

Signed-off-by: Marc Tuduri <[email protected]>

* pass time.Now as parameter

Signed-off-by: Marc Tuduri <[email protected]>

* Change buildwriterequest during retries

Signed-off-by: Marc Tuduri <[email protected]>

* Revert "Remove loggers"

This reverts commit 54f91df.

Signed-off-by: Marc Tuduri <[email protected]>

* use log level debug for loggers

Signed-off-by: Marc Tuduri <[email protected]>

* Fix linter

Signed-off-by: Paschalis Tsilias <[email protected]>

* Remove noisy debug-level logs; add 'reason' label to drop metrics

Signed-off-by: Paschalis Tsilias <[email protected]>

* Remove accidentally committed files

Signed-off-by: Paschalis Tsilias <[email protected]>

* Propagate logger to buildWriteRequest to log dropped data

Signed-off-by: Paschalis Tsilias <[email protected]>

* Fix docs comment

Signed-off-by: Paschalis Tsilias <[email protected]>

* Make drop reason more specific

Signed-off-by: Paschalis Tsilias <[email protected]>

* Remove unnecessary pass of logger

Signed-off-by: Paschalis Tsilias <[email protected]>

* Use snake_case for reason label

Signed-off-by: Paschalis Tsilias <[email protected]>

* Fix dropped samples metric

Signed-off-by: Paschalis Tsilias <[email protected]>

---------

Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>

* fix(discovery): allow requireUpdate util to timeout in discovery/file/file_test.go.

The loop ran indefinitely if the condition isn't met.

Before, each iteration created a new timer channel which was always outpaced by
the other timer channel with smaller duration.

minor detail: There was a memory leak: resources of the ~10 previous timers were
constantly kept. With the fix, we may keep the resources of one timer around for defaultWait
but this isn't worth the changes to make it right.

Signed-off-by: machine424 <[email protected]>

* Merge pull request #13371 from kevinmingtarja/fix-isHeatmapData

ui: fix handling of scalar and string in isHeatmapData

* tsdb/{index,compact}: allow using custom postings encoding format (#13242)

* tsdb/{index,compact}: allow using custom postings encoding format

We would like to experiment with a different postings encoding format in
Thanos so in this change I am proposing adding another argument to
`NewWriter` which would allow users to change the format if needed.
Also, wire the leveled compactor so that it would be possible to change
the format there too.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb/compact: use a struct for leveled compactor options

As discussed on Slack, let's use a struct for the options in leveled
compactor.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb: make changes after Bryan's review

- Make changes less intrusive
- Turn the postings encoder type into a function
- Add NewWriterWithEncoder()

Signed-off-by: Giedrius Statkevičius <[email protected]>

---------

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Cut 2.49.0-rc.2

Signed-off-by: bwplotka <[email protected]>

* build(deps): bump actions/setup-go from 3.5.0 to 5.0.0 in /scripts (#13362)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from 3.5.0 to 5.0.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@6edd440...0c52d54)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump github/codeql-action from 2.22.8 to 3.22.12 (#13358)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.8 to 3.22.12.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@407ffaf...012739e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* put @Nexucis has a release shepherd (#13383)

Signed-off-by: Augustin Husson <[email protected]>

* Add analyze histograms command to promtool (#12331)

Add `query analyze` command to promtool

This command analyzes the buckets of classic and native histograms,
based on data queried from the Prometheus query API, i.e. it
doesn't require direct access to the TSDB files.

Signed-off-by: Jeanette Tan <[email protected]>

---------

Signed-off-by: Jeanette Tan <[email protected]>

* included instance in all necessary descriptions

Signed-off-by: Erik Sommer <[email protected]>

* tsdb/compact: fix passing merge func

Fixing a very small logical problem I've introduced :(.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb: add enable overlapping compaction

This functionality is needed in downstream projects because they have a
separate component that does compaction.

Upstreaming
https://github.com/grafana/mimir-prometheus/blob/7c8e9a2a76fc729e9078889782928b2fdfe240e9/tsdb/compact.go#L323-L325.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Cut 2.49.0

Signed-off-by: bwplotka <[email protected]>

* promtool: allow setting multiple matchers to "promtool tsdb dump" command. (#13296)

Conditions are ANDed inside the same matcher but matchers are ORed

Including unit tests for "promtool tsdb dump".

Refactor some matchers scraping utils.

Signed-off-by: machine424 <[email protected]>

* Fixed changelog

Signed-off-by: bwplotka <[email protected]>

* tsdb/main: wire "EnableOverlappingCompaction" to tsdb.Options (#13398)

This added the #13393
"EnableOverlappingCompaction" parameter to the compactor code but not to
the tsdb.Options. I forgot about that. Add it to `tsdb.Options` too and
set it to `true` in Prometheus.

Copy/paste the description from
#13393 (comment)

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Issue #13268: fix quality value in accept header

Signed-off-by: Kumar Kalpadiptya Roy <[email protected]>

* Cut 2.49.1 with scrape q= bugfix.

Signed-off-by: bwplotka <[email protected]>

* Cut 2.49.1 web package.

Signed-off-by: bwplotka <[email protected]>

* Restore more efficient version of NewPossibleNonCounterInfo annotation (#13022)

Restore more efficient version of NewPossibleNonCounterInfo annotation

Signed-off-by: Jeanette Tan <[email protected]>

---------

Signed-off-by: Jeanette Tan <[email protected]>

* Fix regressions introduced by #13242

Signed-off-by: Marco Pracucci <[email protected]>

* fix slice copy in 1.20 (#13389)

The slices package is added to the standard library in Go 1.21;
we need to import from the exp area to maintain compatibility with Go 1.20.

Signed-off-by: tyltr <[email protected]>

* Docs: Query Basics: link to rate (#10538)

Co-authored-by: Julien Pivotto <[email protected]>

* chore(kubernetes): check preconditions earlier and avoid unnecessary checks or iterations

Signed-off-by: machine424 <[email protected]>

* Examples: link to `rate` for new users (#10535)

* Examples: link to `rate` for new users

Signed-off-by: Ted Robertson [email protected]
Co-authored-by: Bryan Boreham <[email protected]>

* promql: use natural sort in sort_by_label and sort_by_label_desc (#13411)

These functions are intended for humans, as robots can already sort the results
however they please. Humans like things sorted "naturally":

* https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/

A similar thing has been done to Grafana, which is also used by humans:

* grafana/grafana#78024
* grafana/grafana#78494

Signed-off-by: Ivan Babrou <[email protected]>

* TestLabelValuesWithMatchers: Add test case

Signed-off-by: Arve Knudsen <[email protected]>

* remove  obsolete build tag

Signed-off-by: tyltr <[email protected]>

* Upgrade some golang dependencies for resty 2.11

Signed-off-by: Israel Blancas <[email protected]>

* Native Histograms: support `native_histogram_min_bucket_factor` in scrape_config (#13222)

Native Histograms: support native_histogram_min_bucket_factor in scrape_config

---------

Signed-off-by: Ziqi Zhao <[email protected]>
Signed-off-by: Björn Rabenstein <[email protected]>
Co-authored-by: George Krajcsovits <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>

* Add warnings for histogramRate applied with isCounter not matching counter/gauge histogram (#13392)

Add warnings for histogramRate applied with isCounter not matching counter/gauge histogram

---------

Signed-off-by: Jeanette Tan <[email protected]>

* Minor fixes to otlp vendor update script

Signed-off-by: Goutham <[email protected]>

* build(deps): bump github.com/hetznercloud/hcloud-go/v2

Bumps [github.com/hetznercloud/hcloud-go/v2](https://github.com/hetznercloud/hcloud-go) from 2.4.0 to 2.6.0.
- [Release notes](https://github.com/hetznercloud/hcloud-go/releases)
- [Changelog](https://github.com/hetznercloud/hcloud-go/blob/main/CHANGELOG.md)
- [Commits](hetznercloud/hcloud-go@v2.4.0...v2.6.0)

---
updated-dependencies:
- dependency-name: github.com/hetznercloud/hcloud-go/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Enhanced visibility for `promtool test rules` with JSON colored formatting (#13342)

* Added diff flag for unit test to improvise readability & debugging

Signed-off-by: Rewanth Tammana <[email protected]>

* Removed blank spaces

Signed-off-by: Rewanth Tammana <[email protected]>

* Fixed linting error

Signed-off-by: Rewanth Tammana <[email protected]>

* Added cli flags to documentation

Signed-off-by: Rewanth Tammana <[email protected]>

* Revert unrrelated linting fixes

Signed-off-by: Rewanth Tammana <[email protected]>

* Fixed review suggestions

Signed-off-by: Rewanth Tammana <[email protected]>

* Cleanup

Signed-off-by: Rewanth Tammana <[email protected]>

* Updated flag description

Signed-off-by: Rewanth Tammana <[email protected]>

* Updated flag description

Signed-off-by: Rewanth Tammana <[email protected]>

---------

Signed-off-by: Rewanth Tammana <[email protected]>

* storage: skip merging when no remote storage configured

Prometheus is hard-coded to use a fanout storage between TSDB and
a remote storage which by default is empty.
This change detects the empty storage and skips merging between
result sets, which would make `Select()` sort results.

Bottom line: we skip a sort unless there really is some remote storage
configured.

Signed-off-by: Bryan Boreham <[email protected]>

* Remove csmarchbanks from remote write owners (#13432)

I have not had the time to keep up with remote write and have no plans
to work on it in the near future so I am withdrawing my maintainership
of that part of the codebase. I continue to focus on client_python.

Signed-off-by: Chris Marchbanks <[email protected]>

* add more context cancellation check at evaluation time

Signed-off-by: Ben Ye <[email protected]>

* Optimize label values with matchers by taking shortcuts (#13426)

Don't calculate postings beforehand: we may not need them. If all
matchers are for the requested label, we can just filter its values.

Also, if there are no values at all, no need to run any kind of
logic.

Also add more labelValuesWithMatchers benchmarks

Signed-off-by: Oleg Zaytsev <[email protected]>

* Add automatic memory limit handling

Enable automatic detection of memory limits and configure GOMEMLIMIT to
match.
* Also includes a flag to allow controlling the reserved ratio.

Signed-off-by: SuperQ <[email protected]>

* Update OSSF badge link (#13433)

Provide a more user friendly interface

Signed-off-by: Matthieu MOREL <[email protected]>

* SD Managers taking over responsibility for registration of debug metrics (#13375)

SD Managers take over responsibility for SD metrics registration

---------

Signed-off-by: Paulin Todev <[email protected]>
Signed-off-by: Björn Rabenstein <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>

* Optimize histogram iterators (#13340)

Optimize histogram iterators

Histogram iterators allocate new objects in the AtHistogram and
AtFloatHistogram methods, which makes calculating rates over long
ranges expensive.

In #13215 we allowed an existing object to be reused
when converting an integer histogram to a float histogram. This commit follows
the same idea and allows injecting an existing object in the AtHistogram and
AtFloatHistogram methods. When the injected value is nil, iterators allocate
new histograms, otherwise they populate and return the injected object.

The commit also adds a CopyTo method to Histogram and FloatHistogram which
is used in the BufferedIterator to overwrite items in the ring instead of making
new copies.

Note that a specialized HPoint pool is needed for all of this to work 
(`matrixSelectorHPool`).

---------

Signed-off-by: Filip Petkovski <[email protected]>
Co-authored-by: George Krajcsovits <[email protected]>

* doc: Mark `mad_over_time` as experimental (#13440)

We forgot to do that in
#13059

Signed-off-by: beorn7 <[email protected]>

* Change metric label for Puppetdb from 'http' to 'puppetdb'

Signed-off-by: Paulin Todev <[email protected]>

* mirror metrics.proto change & generate code

Signed-off-by: Ziqi Zhao <[email protected]>

* TestHeadLabelValuesWithMatchers: Add test case (#13414)

Add test case to TestHeadLabelValuesWithMatchers, while fixing a couple
of typos in other test cases. Also enclosing some implicit sub-tests in a
`t.Run` call to make them explicitly sub-tests.

Signed-off-by: Arve Knudsen <[email protected]>

* update all go dependencies (#13438)

Signed-off-by: Augustin Husson <[email protected]>

* build(deps): bump the k8s-io group with 2 updates (#13454)

Bumps the k8s-io group with 2 updates: [k8s.io/api](https://github.com/kubernetes/api) and [k8s.io/client-go](https://github.com/kubernetes/client-go).


Updates `k8s.io/api` from 0.28.4 to 0.29.1
- [Commits](kubernetes/api@v0.28.4...v0.29.1)

Updates `k8s.io/client-go` from 0.28.4 to 0.29.1
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.28.4...v0.29.1)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-io
- dependency-name: k8s.io/client-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-io
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump the go-opentelemetry-io group with 1 update (#13453)

Bumps the go-opentelemetry-io group with 1 update: [go.opentelemetry.io/collector/semconv](https://github.com/open-telemetry/opentelemetry-collector).


Updates `go.opentelemetry.io/collector/semconv` from 0.92.0 to 0.93.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-collector/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-collector/blob/main/CHANGELOG-API.md)
- [Commits](open-telemetry/opentelemetry-collector@v0.92.0...v0.93.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/collector/semconv
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-opentelemetry-io
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/upload-artifact from 3.1.3 to 4.0.0 (#13355)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@a8a3f3a...c7d193f)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump bufbuild/buf-push-action (#13357)

Bumps [bufbuild/buf-push-action](https://github.com/bufbuild/buf-push-action) from 342fc4cdcf29115a01cf12a2c6dd6aac68dc51e1 to a654ff18effe4641ebea4a4ce242c49800728459.
- [Release notes](https://github.com/bufbuild/buf-push-action/releases)
- [Commits](bufbuild/buf-push-action@342fc4c...a654ff1)

---
updated-dependencies:
- dependency-name: bufbuild/buf-push-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Labels: Add DropMetricName function, used in PromQL (#13446)

This function is called very frequently when executing PromQL functions,
and we can do it much more efficiently inside Labels.

In the common case that `__name__` comes first in the labels, we simply
re-point to start at the next label, which is nearly free.

`DropMetricName` is now so cheap I removed the cache - benchmarks show
everything still goes faster.

Signed-off-by: Bryan Boreham <[email protected]>

* tsdb: simplify internal series delete function (#13261)

Lifting an optimisation from Agent code, `seriesHashmap.del` can use
the unique series reference, doesn't need to check Labels.
Also streamline the logic for deleting from `unique` and `conflicts` maps,
and add some comments to help the next person.

Signed-off-by: Bryan Boreham <[email protected]>

* otlptranslator/update-copy.sh: Fix sed command lines

Signed-off-by: Arve Knudsen <[email protected]>

* Rollback k8s.io requirements (#13462)

Rollback k8s.io Go modules to v0.28.6 to avoid forcing upgrade of Go to
1.21. This allows us to keep compatibility with the currently supported
upstream Go releases.

Signed-off-by: SuperQ <[email protected]>

* Make update-copy.sh work for both OSX and GNU sed

Signed-off-by: Arve Knudsen <[email protected]>

* Name @beorn7 and @krajorama as maintainers for native histograms

I have been the de-facto maintainer for native histograms from the
beginning. So let's put this into MAINTAINERS.md.

In addition, I hereby proposose George Krajcsovits AKA Krajo as a
co-maintainer. He has contributed a lot of native histogram code, but
more importantly, he has contributed substantially to reviewing other
contributors' native histogram code, up to a point where I was merely
rubberstamping the PRs he had already reviewed. I'm confident that he
is ready to to be granted commit rights as outlined in the
"Maintainers" section of the governance:
https://prometheus.io/governance/#maintainers

According to the same section of the governance, I will announce the
proposed change on the developers mailing list and will give some time
for lazy consensus before merging this PR.

Signed-off-by: beorn7 <[email protected]>

* ui/fix: correct url handling for stacked graphs (#13460)

Signed-off-by: Yury Moladau <[email protected]>

* tsdb: use cheaper Mutex on series

Mutex is 8 bytes; RWMutex is 24 bytes and much more complicated. Since
`RLock` is only used in two places, `UpdateMetadata` and `Delete`,
neither of which are hotspots, we should use the cheaper one.

Signed-off-by: Bryan Boreham <[email protected]>

* Fix last_over_time for native histograms

The last_over_time retains a histogram sample without making a copy.
This sample is now coming from the buffered iterator used for windowing functions,
and can be reused for reading subsequent samples as the iterator progresses.

I would propose copying the sample in the last_over_time function, similar to
how it is done for rate, sum_over_time and others.

Signed-off-by: Filip Petkovski <[email protected]>

* Implementation

NOTE:
Rebased from main after refactor in #13014

Signed-off-by: Danny Kopping <[email protected]>

* Add feature flag

Signed-off-by: Danny Kopping <[email protected]>

* Refactor concurrency control

Signed-off-by: Danny Kopping <[email protected]>

* Optimising dependencies/dependents funcs to not produce new slices each request

Signed-off-by: Danny Kopping <[email protected]>

* Refactoring

Signed-off-by: Danny Kopping <[email protected]>

* Rename flag

Signed-off-by: Danny Kopping <[email protected]>

* Refactoring for performance, and to allow controller to be overridden

Signed-off-by: Danny Kopping <[email protected]>

* Block until all rules, both sync & async, have completed evaluating
Updated & added tests
Review feedback nits
Return empty map if not indeterminate
Use highWatermark to track inflight requests counter
Appease the linter
Clarify feature flag

Signed-off-by: Danny Kopping <[email protected]>

* Fix typo in CLI flag description

Signed-off-by: Marco Pracucci <[email protected]>

* Fixed auto-generated doc

Signed-off-by: Marco Pracucci <[email protected]>

* Improve doc

Signed-off-by: Marco Pracucci <[email protected]>

* Simplify the design to update concurrency controller once the rule evaluation has done

Signed-off-by: Marco Pracucci <[email protected]>

* Add more test cases to TestDependenciesEdgeCases

Signed-off-by: Marco Pracucci <[email protected]>

* Added more test cases to TestDependenciesEdgeCases

Signed-off-by: Marco Pracucci <[email protected]>

* Improved RuleConcurrencyController interface doc

Signed-off-by: Marco Pracucci <[email protected]>

* Introduced sequentialRuleEvalController

Signed-off-by: Marco Pracucci <[email protected]>

* Remove superfluous nil check in Group.metrics

Signed-off-by: Marco Pracucci <[email protected]>

* api: Serialize discovered and target labels into JSON directly (#13469)

Converted maps into labels.Labels to avoid a lot of copying of data which leads to very high memory consumption while opening the /service-discovery endpoint in the Prometheus UI

Signed-off-by: Leegin <[email protected]>

* api: Serialize discovered labels into JSON directly in dropped targets (#13484)

Converted maps into labels.Labels to avoid a lot of copying of data which leads to very high memory consumption while opening the /service-discovery endpoint in the Prometheus UI

Signed-off-by: Leegin <[email protected]>

* Add ShardedPostings() support to TSDB (#10421)

This PR is a reference implementation of the proposal described in #10420.

In addition to what described in #10420, in this PR I've introduced labels.StableHash(). The idea is to offer an hashing function which doesn't change over time, and that's used by query sharding in order to get a stable behaviour over time. The implementation of labels.StableHash() is the hashing function used by Prometheus before stringlabels, and what's used by Grafana Mimir for query sharding (because built before stringlabels was a thing).

Follow up work
As mentioned in #10420, if this PR is accepted I'm also open to upload another foundamental piece used by Grafana Mimir query sharding to accelerate the query execution: an optional, configurable and fast in-memory cache for the series hashes.

Signed-off-by: Marco Pracucci <[email protected]>

* storage/remote: document why two benchmarks are skipped

One was silently doing nothing; one was doing something but the work
didn't go up linearly with iteration count.

Signed-off-by: Bryan Boreham <[email protected]>

* Pod status changes not discovered by Kube Endpoints SD (#13337)

* fix(discovery/kubernetes/endpoints): react to changes on Pods because some modifications can occur on them without triggering an update on the related Endpoints (The Pod phase changing from Pending to Running e.g.).

---------

Signed-off-by: machine424 <[email protected]>
Co-authored-by: Guillermo Sanchez Gavier <[email protected]>

* Small improvements, add const, remove copypasta (#8106)

Signed-off-by: Mikhail Fesenko <[email protected]>
Signed-off-by: Jesus Vazquez <[email protected]>

* Proposal to improve FPointSlice and HPointSlice allocation. (#13448)

* Reusing points slice from previous series when the slice is under utilized
* Adding comments on the bench test

Signed-off-by: Alan Protasio <[email protected]>

* lint

Signed-off-by: Nicolás Pazos <[email protected]>

* go mod tidy

Signed-off-by: Nicolás Pazos <[email protected]>

---------

Signed-off-by: Julian Wiedmann <[email protected]>
Signed-off-by: Bryan Boreham <[email protected]>
Signed-off-by: Erik Sommer <[email protected]>
Signed-off-by: Linas Medziunas <[email protected]>
Signed-off-by: bwplotka <[email protected]>
Signed-off-by: Arianna Vespri <[email protected]>
Signed-off-by: machine424 <[email protected]>
Signed-off-by: Daniel Nicholls <[email protected]>
Signed-off-by: Daniel Kerbel <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Jan Fajerski <[email protected]>
Signed-off-by: Kevin Mingtarja <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Giedrius Statkevičius <[email protected]>
Signed-off-by: Augustin Husson <[email protected]>
Signed-off-by: Jeanette Tan <[email protected]>
Signed-off-by: Bartlomiej Plotka <[email protected]>
Signed-off-by: Kumar Kalpadiptya Roy <[email protected]>
Signed-off-by: Marco Pracucci <[email protected]>
Signed-off-by: tyltr <[email protected]>
Signed-off-by: Ted Robertson [email protected]
Signed-off-by: Ivan Babrou <[email protected]>
Signed-off-by: Arve Knudsen <[email protected]>
Signed-off-by: Israel Blancas <[email protected]>
Signed-off-by: Ziqi Zhao <[email protected]>
Signed-off-by: Björn Rabenstein <[email protected]>
Signed-off-by: Goutham <[email protected]>
Signed-off-by: Rewanth Tammana <[email protected]>
Signed-off-by: Chris Marchbanks <[email protected]>
Signed-off-by: Ben Ye <[email protected]>
Signed-off-by: Oleg Zaytsev <[email protected]>
Signed-off-by: SuperQ <[email protected]>
Signed-off-by: Ben Kochie <[email protected]>
Signed-off-by: Matthieu MOREL <[email protected]>
Signed-off-by: Paulin Todev <[email protected]>
Signed-off-by: Filip Petkovski <[email protected]>
Signed-off-by: beorn7 <[email protected]>
Signed-off-by: Augustin Husson <[email protected]>
Signed-off-by: Yury Moladau <[email protected]>
Signed-off-by: Danny Kopping <[email protected]>
Signed-off-by: Leegin <[email protected]>
Signed-off-by: Mikhail Fesenko <[email protected]>
Signed-off-by: Jesus Vazquez <[email protected]>
Signed-off-by: Alan Protasio <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>
Co-authored-by: Julian Wiedmann <[email protected]>
Co-authored-by: Bryan Boreham <[email protected]>
Co-authored-by: Erik Sommer <[email protected]>
Co-authored-by: Linas Medziunas <[email protected]>
Co-authored-by: Bartlomiej Plotka <[email protected]>
Co-authored-by: Arianna Vespri <[email protected]>
Co-authored-by: machine424 <[email protected]>
Co-authored-by: daniel-resdiary <[email protected]>
Co-authored-by: Daniel Kerbel <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jan Fajerski <[email protected]>
Co-authored-by: Kevin Mingtarja <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Marc Tudurí <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Giedrius Statkevičius <[email protected]>
Co-authored-by: Augustin Husson <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>
Co-authored-by: zenador <[email protected]>
Co-authored-by: gotjosh <[email protected]>
Co-authored-by: Ben Kochie <[email protected]>
Co-authored-by: Kumar Kalpadiptya Roy <[email protected]>
Co-authored-by: Marco Pracucci <[email protected]>
Co-authored-by: tyltr <[email protected]>
Co-authored-by: Ted Robertson <[email protected]>
Co-authored-by: Julien Pivotto <[email protected]>
Co-authored-by: Matthias Loibl <[email protected]>
Co-authored-by: Ivan Babrou <[email protected]>
Co-authored-by: Arve Knudsen <[email protected]>
Co-authored-by: Israel Blancas <[email protected]>
Co-authored-by: Ziqi Zhao <[email protected]>
Co-authored-by: George Krajcsovits <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>
Co-authored-by: Goutham <[email protected]>
Co-authored-by: Rewanth Tammana <[email protected]>
Co-authored-by: Chris Marchbanks <[email protected]>
Co-authored-by: Ben Ye <[email protected]>
Co-authored-by: Oleg Zaytsev <[email protected]>
Co-authored-by: Matthieu MOREL <[email protected]>
Co-authored-by: Paulin Todev <[email protected]>
Co-authored-by: Filip Petkovski <[email protected]>
Co-authored-by: Yury Molodov <[email protected]>
Co-authored-by: Danny Kopping <[email protected]>
Co-authored-by: Leegin <[email protected]>
Co-authored-by: Guillermo Sanchez Gavier <[email protected]>
Co-authored-by: Mikhail Fesenko <[email protected]>
Co-authored-by: Alan Protasio <[email protected]>
@alanprot
Copy link
Copy Markdown
Contributor

alanprot commented Feb 9, 2024

For completion should we also have a way to change the decoder when reading the postings?

https://github.com/prometheus/prometheus/blob/main/tsdb/index/index.go#L1865

@GiedriusS
Copy link
Copy Markdown
Contributor Author

Yeah, I just didn't have time to do that. Help would be awesome

@yeya24
Copy link
Copy Markdown
Contributor

yeya24 commented Feb 10, 2024

@GiedriusS I can take it. Will create a pr soon.

jnyi pushed a commit to jnyi/thanos that referenced this pull request Apr 4, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
cstyan added a commit that referenced this pull request Jul 4, 2024
…support + metadata in WAL) (#14395)

* Remote Write 1.1: e2e benchmarks (#13102)

* Remote Write e2e benchmarks

Signed-off-by: Nicolás Pazos <[email protected]>

* Prometheus ports automatically assigned

Signed-off-by: Nicolás Pazos <[email protected]>

* make dashboard editable + more modular to different job label values

Signed-off-by: Callum Styan <[email protected]>

* Dashboard improvements

* memory stats
* diffs look at counter increases

Signed-off-by: Nicolás Pazos <[email protected]>

* run script: absolute path for config templates

Signed-off-by: Nicolás Pazos <[email protected]>

* grafana dashboard improvements

* show actual values of metrics
* add memory stats and diff

Signed-off-by: Nicolás Pazos <[email protected]>

* dashboard changes

Signed-off-by: Callum Styan <[email protected]>

---------

Signed-off-by: Nicolás Pazos <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Co-authored-by: Callum Styan <[email protected]>

* replace snappy encoding library

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* add new proto types

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* add decode function for new write request proto

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* add lookup table struct that is used to build the symbol table in new
write request format

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* Implement code paths for new proto format

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* update example server to include handler for new format

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* Add new test client

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* tests and new -> original proto mapping util

Signed-off-by: Nicolás Pazos <[email protected]>

* add new proto support on receiver end

Signed-off-by: Nicolás Pazos <[email protected]>

* Fix test

Signed-off-by: Nicolás Pazos <[email protected]>

* no-brainer copypaste but more performance write support

Signed-off-by: Nicolás Pazos <[email protected]>

* remove some comented code

Signed-off-by: Nicolás Pazos <[email protected]>

* fix mocks and fixture

Signed-off-by: Nicolás Pazos <[email protected]>

* add basic reduce remote write handler benchmark

Signed-off-by: Nicolás Pazos <[email protected]>

* refactor out common code between write methods

Signed-off-by: Nicolás Pazos <[email protected]>

* fix: queue manager to include float histograms in new requests

Signed-off-by: Nicolás Pazos <[email protected]>

* add sender-side tests and fix failing ones

Signed-off-by: Nicolás Pazos <[email protected]>

* refactor queue manager code to remove some duplication

Signed-off-by: Nicolás Pazos <[email protected]>

* fix build

Signed-off-by: Nicolás Pazos <[email protected]>

* Improve sender benchmarks and some allocations

Signed-off-by: Nicolás Pazos <[email protected]>

* Use github.com/golang/snappy

Signed-off-by: Nicolás Pazos <[email protected]>

* cleanup: remove hardcoded fake url for testing

Signed-off-by: Nicolás Pazos <[email protected]>

* Add 1.1 version handling code

Signed-off-by: Nicolás Pazos <[email protected]>

* Remove config, update proto

Signed-off-by: Nicolás Pazos <[email protected]>

* gofmt

Signed-off-by: Nicolás Pazos <[email protected]>

* fix NewWriteClient and change new flags wording

Signed-off-by: Nicolás Pazos <[email protected]>

* fields rewording in handler

Signed-off-by: Nicolás Pazos <[email protected]>

* remote write handler to checks version header

Signed-off-by: Nicolás Pazos <[email protected]>

* fix typo in log

Signed-off-by: Nicolás Pazos <[email protected]>

* lint

Signed-off-by: Nicolás Pazos <[email protected]>

* Add minmized remote write proto format

Co-authored-by: Marco Pracucci <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* add functions for translating between new proto formats symbol table and
actual prometheus labels

Co-authored-by: Marco Pracucci <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* add functionality for new minimized remote write request format

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* fix minor things

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* Make LabelSymbols a fixed32

Signed-off-by: Nicolás Pazos <[email protected]>

* remove unused proto type

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* update tests

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* fix build for stringlabels tag

Signed-off-by: Nicolás Pazos <[email protected]>

* Use two uint32 to encode (offset,leng)

Signed-off-by: Nicolás Pazos <[email protected]>

* manually optimize varint marshaling

Signed-off-by: Nicolás Pazos <[email protected]>

* Use unsafe []byte->string cast to reuse buffer

Signed-off-by: Nicolás Pazos <[email protected]>

* fix writeRequestMinimizedFixture

Signed-off-by: Nicolás Pazos <[email protected]>

* remove all code from previous interning approach

the 'minimized' version is now the only v1.1 version

Signed-off-by: Nicolás Pazos <[email protected]>

* minimally-tested exemplar support for rw 1.1

Signed-off-by: Nicolás Pazos <[email protected]>

* refactor new version flag to make it easier to pick a specific format
instead of having multiple flags, plus add new formats for testing

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* use exp slices for backwards compat. to go 1.20 plus add copyright
header to test file

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* fix label ranging

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* Add bytes slice (instead of slice of 32bit vars) format for testing

Co-authored-by: Nicolás Pazos <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* test additional len and lenbytes formats

Co-authored-by: Nicolás Pazos <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* remove mistaken package lock changes

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* remove formats we've decided not to use

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* remove more format types we probably won't use

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* More cleanup

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* use require instead of assert in custom marshal test

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* cleanup; remove some unused functions

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* more cleanup, mostly linting fixes

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* remove package-lock.json change again

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* more cleanup, address review comments

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* fix test panic

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* fix minor lint issue + use labels Range function since it looks like
the tests fail to do `range labels.Labels` on CI

Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* new interning format based on []string indeces

Co-authored-by: bwplotka <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* remove all new rw formats but the []string one

also adapt tests to the new format

Signed-off-by: Nicolás Pazos <[email protected]>

* cleanup rwSymbolTable

Signed-off-by: Nicolás Pazos <[email protected]>

* add some TODOs for later

Signed-off-by: Nicolás Pazos <[email protected]>

* don't reserve field 3 for new proto and add TODO

Signed-off-by: Nicolás Pazos <[email protected]>

* fix custom marshaling

Signed-off-by: Nicolás Pazos <[email protected]>

* lint

Signed-off-by: Nicolás Pazos <[email protected]>

* additional merge fixes

Signed-off-by: Nicolás Pazos <[email protected]>

* lint fixes

Signed-off-by: Nicolás Pazos <[email protected]>

* fix server example

Signed-off-by: Nicolás Pazos <[email protected]>

* revert package-lock.json changes

Signed-off-by: Nicolás Pazos <[email protected]>

* update example prometheus version

Signed-off-by: Nicolás Pazos <[email protected]>

* define separate proto types for remote write 2.0

Signed-off-by: Nicolás Pazos <[email protected]>

* lint

Signed-off-by: Nicolás Pazos <[email protected]>

* rename new proto types and move to separate pkg

Signed-off-by: Nicolás Pazos <[email protected]>

* update prometheus version for example

Signed-off-by: Nicolás Pazos <[email protected]>

* make proto

Signed-off-by: Nicolás Pazos <[email protected]>

* make Metadata not nullable

Signed-off-by: Nicolás Pazos <[email protected]>

* remove old MinSample proto message

Signed-off-by: Nicolás Pazos <[email protected]>

* change enum names to fit buf build recommend enum naming and lint rules

Signed-off-by: Callum Styan <[email protected]>

* remote: Added test for classic histogram grouping when sending rw; Fixed queue manager test delay. (#13421)

Signed-off-by: bwplotka <[email protected]>

* Remote write v2: metadata support in every write request (#13394)

* Approach bundling metadata along with samples and exemplars

Signed-off-by: Paschalis Tsilias <[email protected]>

* Add first test; rebase with main

Signed-off-by: Paschalis Tsilias <[email protected]>

* Alternative approach: bundle metadata in TimeSeries protobuf

Signed-off-by: Paschalis Tsilias <[email protected]>

* update go mod to match main branch

Signed-off-by: Callum Styan <[email protected]>

* fix after rebase

Signed-off-by: Callum Styan <[email protected]>

* we're not going to modify the 1.X format anymore

Signed-off-by: Callum Styan <[email protected]>

* Modify AppendMetadata based on the fact that we be putting metadata into
timeseries

Signed-off-by: Callum Styan <[email protected]>

* Rename enums for remote write versions to something that makes more
sense + remove the added `sendMetadata` flag.

Signed-off-by: Callum Styan <[email protected]>

* rename flag that enables writing of metadata records to the WAL

Signed-off-by: Callum Styan <[email protected]>

* additional clean up

Signed-off-by: Callum Styan <[email protected]>

* lint

Signed-off-by: Callum Styan <[email protected]>

* fix usage of require.Len

Signed-off-by: Callum Styan <[email protected]>

* some clean up from review comments

Signed-off-by: Callum Styan <[email protected]>

* more review fixes

Signed-off-by: Callum Styan <[email protected]>

---------

Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>

* remote write 2.0: sync with `main` branch (#13510)

* consoles: exclude iowait and steal from CPU Utilisation

'iowait' and 'steal' indicate specific idle/wait states, which shouldn't
be counted into CPU Utilisation. Also see
https://github.com/prometheus-operator/kube-prometheus/pull/796 and
https://github.com/kubernetes-monitoring/kubernetes-mixin/pull/667.

Per the iostat man page:

%idle
    Show the percentage of time that the CPU or CPUs were idle and the
    system did not have an outstanding disk I/O request.

%iowait
     Show the percentage of time that the CPU or CPUs were idle during
     which the system had an outstanding disk I/O request.

%steal
     Show the percentage of time spent in involuntary wait by the
     virtual CPU or CPUs while the hypervisor was servicing another
     virtual processor.

Signed-off-by: Julian Wiedmann <[email protected]>

* tsdb: shrink txRing with smaller integers

4 billion active transactions ought to be enough for anyone.

Signed-off-by: Bryan Boreham <[email protected]>

* tsdb: create isolation transaction slice on demand

When Prometheus restarts it creates every series read in from the WAL,
but many of those series will be finished, and never receive any more
samples. By defering allocation of the txRing slice to when it is first
needed, we save 32 bytes per stale series.

Signed-off-by: Bryan Boreham <[email protected]>

* add cluster variable to Overview dashboard

Signed-off-by: Erik Sommer <[email protected]>

* promql: simplify Native Histogram arithmetics

Signed-off-by: Linas Medziunas <[email protected]>

* Cut 2.49.0-rc.0 (#13270)

* Cut 2.49.0-rc.0

Signed-off-by: bwplotka <[email protected]>

* Removed the duplicate.

Signed-off-by: bwplotka <[email protected]>

---------

Signed-off-by: bwplotka <[email protected]>

* Add unit protobuf parser

Signed-off-by: Arianna Vespri <[email protected]>

* Go on adding protobuf parsing for unit

Signed-off-by: Arianna Vespri <[email protected]>

* ui: create a reproduction for https://github.com/prometheus/prometheus/issues/13292

Signed-off-by: machine424 <[email protected]>

* Get conditional right

Signed-off-by: Arianna Vespri <[email protected]>

* Get VM Scale Set NIC (#13283)

Calling `*armnetwork.InterfacesClient.Get()` doesn't work for Scale Set
VM NIC, because these use a different Resource ID format.

Use `*armnetwork.InterfacesClient.GetVirtualMachineScaleSetNetworkInterface()`
instead.  This needs both the scale set name and the instance ID, so
add an `InstanceID` field to the `virtualMachine` struct.  `InstanceID`
is empty for a VM that isn't a ScaleSetVM.

Signed-off-by: Daniel Nicholls <[email protected]>

* Cut v2.49.0-rc.1

Signed-off-by: bwplotka <[email protected]>

* Delete debugging lines, amend error message for unit

Signed-off-by: Arianna Vespri <[email protected]>

* Correct order in error message

Signed-off-by: Arianna Vespri <[email protected]>

* Consider storage.ErrTooOldSample as non-retryable

Signed-off-by: Daniel Kerbel <[email protected]>

* scrape_test.go: Increase scrape interval in TestScrapeLoopCache to reduce potential flakiness

Signed-off-by: machine424 <[email protected]>

* Avoid creating string for suffix, consider counters without _total suffix

Signed-off-by: Arianna Vespri <[email protected]>

* build(deps): bump github.com/prometheus/client_golang

Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.17.0 to 1.18.0.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.17.0...v1.18.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* build(deps): bump actions/setup-node from 3.8.1 to 4.0.1

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.8.1 to 4.0.1.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d...b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

* scripts: sort file list in embed directive

Otherwise the resulting string depends on find, which afaict depends on
the underlying filesystem. A stable file list make it easier to detect
UI changes in downstreams that need to track UI assets.

Signed-off-by: Jan Fajerski <[email protected]>

* Fix DataTableProps['data'] for resultType string

Signed-off-by: Kevin Mingtarja <[email protected]>

* Fix handling of scalar and string in isHeatmapData

Signed-off-by: Kevin Mingtarja <[email protected]>

* build(deps): bump github.com/influxdata/influxdb

Bumps [github.com/influxdata/influxdb](https://github.com/influxdata/influxdb) from 1.11.2 to 1.11.4.
- [Release notes](https://github.com/influxdata/influxdb/releases)
- [Commits](https://github.com/influxdata/influxdb/compare/v1.11.2...v1.11.4)

---
updated-dependencies:
- dependency-name: github.com/influxdata/influxdb
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* build(deps): bump github.com/prometheus/prometheus

Bumps [github.com/prometheus/prometheus](https://github.com/prometheus/prometheus) from 0.48.0 to 0.48.1.
- [Release notes](https://github.com/prometheus/prometheus/releases)
- [Changelog](https://github.com/prometheus/prometheus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/prometheus/compare/v0.48.0...v0.48.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/prometheus
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump client_golang to v1.18.0 (#13373)

Signed-off-by: Paschalis Tsilias <[email protected]>

* Drop old inmemory samples (#13002)

* Drop old inmemory samples

Co-authored-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>

* Avoid copying timeseries when the feature is disabled

Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>

* Run gofmt

Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>

* Clarify docs

Signed-off-by: Marc Tuduri <[email protected]>

* Add more logging info

Signed-off-by: Marc Tuduri <[email protected]>

* Remove loggers

Signed-off-by: Marc Tuduri <[email protected]>

* optimize function and add tests

Signed-off-by: Marc Tuduri <[email protected]>

* Simplify filter

Signed-off-by: Marc Tuduri <[email protected]>

* rename var

Signed-off-by: Marc Tuduri <[email protected]>

* Update help info from metrics

Signed-off-by: Marc Tuduri <[email protected]>

* use metrics to keep track of drop elements during buildWriteRequest

Signed-off-by: Marc Tuduri <[email protected]>

* rename var in tests

Signed-off-by: Marc Tuduri <[email protected]>

* pass time.Now as parameter

Signed-off-by: Marc Tuduri <[email protected]>

* Change buildwriterequest during retries

Signed-off-by: Marc Tuduri <[email protected]>

* Revert "Remove loggers"

This reverts commit 54f91dfcae20488944162335ab4ad8be459df1ab.

Signed-off-by: Marc Tuduri <[email protected]>

* use log level debug for loggers

Signed-off-by: Marc Tuduri <[email protected]>

* Fix linter

Signed-off-by: Paschalis Tsilias <[email protected]>

* Remove noisy debug-level logs; add 'reason' label to drop metrics

Signed-off-by: Paschalis Tsilias <[email protected]>

* Remove accidentally committed files

Signed-off-by: Paschalis Tsilias <[email protected]>

* Propagate logger to buildWriteRequest to log dropped data

Signed-off-by: Paschalis Tsilias <[email protected]>

* Fix docs comment

Signed-off-by: Paschalis Tsilias <[email protected]>

* Make drop reason more specific

Signed-off-by: Paschalis Tsilias <[email protected]>

* Remove unnecessary pass of logger

Signed-off-by: Paschalis Tsilias <[email protected]>

* Use snake_case for reason label

Signed-off-by: Paschalis Tsilias <[email protected]>

* Fix dropped samples metric

Signed-off-by: Paschalis Tsilias <[email protected]>

---------

Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>

* fix(discovery): allow requireUpdate util to timeout in discovery/file/file_test.go.

The loop ran indefinitely if the condition isn't met.

Before, each iteration created a new timer channel which was always outpaced by
the other timer channel with smaller duration.

minor detail: There was a memory leak: resources of the ~10 previous timers were
constantly kept. With the fix, we may keep the resources of one timer around for defaultWait
but this isn't worth the changes to make it right.

Signed-off-by: machine424 <[email protected]>

* Merge pull request #13371 from kevinmingtarja/fix-isHeatmapData

ui: fix handling of scalar and string in isHeatmapData

* tsdb/{index,compact}: allow using custom postings encoding format (#13242)

* tsdb/{index,compact}: allow using custom postings encoding format

We would like to experiment with a different postings encoding format in
Thanos so in this change I am proposing adding another argument to
`NewWriter` which would allow users to change the format if needed.
Also, wire the leveled compactor so that it would be possible to change
the format there too.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb/compact: use a struct for leveled compactor options

As discussed on Slack, let's use a struct for the options in leveled
compactor.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb: make changes after Bryan's review

- Make changes less intrusive
- Turn the postings encoder type into a function
- Add NewWriterWithEncoder()

Signed-off-by: Giedrius Statkevičius <[email protected]>

---------

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Cut 2.49.0-rc.2

Signed-off-by: bwplotka <[email protected]>

* build(deps): bump actions/setup-go from 3.5.0 to 5.0.0 in /scripts (#13362)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from 3.5.0 to 5.0.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/6edd4406fa81c3da01a34fa6f6343087c207a568...0c52d547c9bc32b1aa3301fd7a9cb496313a4491)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump github/codeql-action from 2.22.8 to 3.22.12 (#13358)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.8 to 3.22.12.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/407ffafae6a767df3e0230c3df91b6443ae8df75...012739e5082ff0c22ca6d6ab32e07c36df03c4a4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* put @nexucis has a release shepherd (#13383)

Signed-off-by: Augustin Husson <[email protected]>

* Add analyze histograms command to promtool (#12331)

Add `query analyze` command to promtool

This command analyzes the buckets of classic and native histograms,
based on data queried from the Prometheus query API, i.e. it
doesn't require direct access to the TSDB files.

Signed-off-by: Jeanette Tan <[email protected]>

---------

Signed-off-by: Jeanette Tan <[email protected]>

* included instance in all necessary descriptions

Signed-off-by: Erik Sommer <[email protected]>

* tsdb/compact: fix passing merge func

Fixing a very small logical problem I've introduced :(.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb: add enable overlapping compaction

This functionality is needed in downstream projects because they have a
separate component that does compaction.

Upstreaming
https://github.com/grafana/mimir-prometheus/blob/7c8e9a2a76fc729e9078889782928b2fdfe240e9/tsdb/compact.go#L323-L325.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Cut 2.49.0

Signed-off-by: bwplotka <[email protected]>

* promtool: allow setting multiple matchers to "promtool tsdb dump" command. (#13296)

Conditions are ANDed inside the same matcher but matchers are ORed

Including unit tests for "promtool tsdb dump".

Refactor some matchers scraping utils.

Signed-off-by: machine424 <[email protected]>

* Fixed changelog

Signed-off-by: bwplotka <[email protected]>

* tsdb/main: wire "EnableOverlappingCompaction" to tsdb.Options (#13398)

This added the https://github.com/prometheus/prometheus/pull/13393
"EnableOverlappingCompaction" parameter to the compactor code but not to
the tsdb.Options. I forgot about that. Add it to `tsdb.Options` too and
set it to `true` in Prometheus.

Copy/paste the description from
https://github.com/prometheus/prometheus/pull/13393#issuecomment-1891787986

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Issue #13268: fix quality value in accept header

Signed-off-by: Kumar Kalpadiptya Roy <[email protected]>

* Cut 2.49.1 with scrape q= bugfix.

Signed-off-by: bwplotka <[email protected]>

* Cut 2.49.1 web package.

Signed-off-by: bwplotka <[email protected]>

* Restore more efficient version of NewPossibleNonCounterInfo annotation (#13022)

Restore more efficient version of NewPossibleNonCounterInfo annotation

Signed-off-by: Jeanette Tan <[email protected]>

---------

Signed-off-by: Jeanette Tan <[email protected]>

* Fix regressions introduced by #13242

Signed-off-by: Marco Pracucci <[email protected]>

* fix slice copy in 1.20 (#13389)

The slices package is added to the standard library in Go 1.21;
we need to import from the exp area to maintain compatibility with Go 1.20.

Signed-off-by: tyltr <[email protected]>

* Docs: Query Basics: link to rate (#10538)

Co-authored-by: Julien Pivotto <[email protected]>

* chore(kubernetes): check preconditions earlier and avoid unnecessary checks or iterations

Signed-off-by: machine424 <[email protected]>

* Examples: link to `rate` for new users (#10535)

* Examples: link to `rate` for new users

Signed-off-by: Ted Robertson [email protected]
Co-authored-by: Bryan Boreham <[email protected]>

* promql: use natural sort in sort_by_label and sort_by_label_desc (#13411)

These functions are intended for humans, as robots can already sort the results
however they please. Humans like things sorted "naturally":

* https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/

A similar thing has been done to Grafana, which is also used by humans:

* https://github.com/grafana/grafana/pull/78024
* https://github.com/grafana/grafana/pull/78494

Signed-off-by: Ivan Babrou <[email protected]>

* TestLabelValuesWithMatchers: Add test case

Signed-off-by: Arve Knudsen <[email protected]>

* remove  obsolete build tag

Signed-off-by: tyltr <[email protected]>

* Upgrade some golang dependencies for resty 2.11

Signed-off-by: Israel Blancas <[email protected]>

* Native Histograms: support `native_histogram_min_bucket_factor` in scrape_config (#13222)

Native Histograms: support native_histogram_min_bucket_factor in scrape_config

---------

Signed-off-by: Ziqi Zhao <[email protected]>
Signed-off-by: Björn Rabenstein <[email protected]>
Co-authored-by: George Krajcsovits <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>

* Add warnings for histogramRate applied with isCounter not matching counter/gauge histogram (#13392)

Add warnings for histogramRate applied with isCounter not matching counter/gauge histogram

---------

Signed-off-by: Jeanette Tan <[email protected]>

* Minor fixes to otlp vendor update script

Signed-off-by: Goutham <[email protected]>

* build(deps): bump github.com/hetznercloud/hcloud-go/v2

Bumps [github.com/hetznercloud/hcloud-go/v2](https://github.com/hetznercloud/hcloud-go) from 2.4.0 to 2.6.0.
- [Release notes](https://github.com/hetznercloud/hcloud-go/releases)
- [Changelog](https://github.com/hetznercloud/hcloud-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hetznercloud/hcloud-go/compare/v2.4.0...v2.6.0)

---
updated-dependencies:
- dependency-name: github.com/hetznercloud/hcloud-go/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Enhanced visibility for `promtool test rules` with JSON colored formatting (#13342)

* Added diff flag for unit test to improvise readability & debugging

Signed-off-by: Rewanth Tammana <[email protected]>

* Removed blank spaces

Signed-off-by: Rewanth Tammana <[email protected]>

* Fixed linting error

Signed-off-by: Rewanth Tammana <[email protected]>

* Added cli flags to documentation

Signed-off-by: Rewanth Tammana <[email protected]>

* Revert unrrelated linting fixes

Signed-off-by: Rewanth Tammana <[email protected]>

* Fixed review suggestions

Signed-off-by: Rewanth Tammana <[email protected]>

* Cleanup

Signed-off-by: Rewanth Tammana <[email protected]>

* Updated flag description

Signed-off-by: Rewanth Tammana <[email protected]>

* Updated flag description

Signed-off-by: Rewanth Tammana <[email protected]>

---------

Signed-off-by: Rewanth Tammana <[email protected]>

* storage: skip merging when no remote storage configured

Prometheus is hard-coded to use a fanout storage between TSDB and
a remote storage which by default is empty.
This change detects the empty storage and skips merging between
result sets, which would make `Select()` sort results.

Bottom line: we skip a sort unless there really is some remote storage
configured.

Signed-off-by: Bryan Boreham <[email protected]>

* Remove csmarchbanks from remote write owners (#13432)

I have not had the time to keep up with remote write and have no plans
to work on it in the near future so I am withdrawing my maintainership
of that part of the codebase. I continue to focus on client_python.

Signed-off-by: Chris Marchbanks <[email protected]>

* add more context cancellation check at evaluation time

Signed-off-by: Ben Ye <[email protected]>

* Optimize label values with matchers by taking shortcuts (#13426)

Don't calculate postings beforehand: we may not need them. If all
matchers are for the requested label, we can just filter its values.

Also, if there are no values at all, no need to run any kind of
logic.

Also add more labelValuesWithMatchers benchmarks

Signed-off-by: Oleg Zaytsev <[email protected]>

* Add automatic memory limit handling

Enable automatic detection of memory limits and configure GOMEMLIMIT to
match.
* Also includes a flag to allow controlling the reserved ratio.

Signed-off-by: SuperQ <[email protected]>

* Update OSSF badge link (#13433)

Provide a more user friendly interface

Signed-off-by: Matthieu MOREL <[email protected]>

* SD Managers taking over responsibility for registration of debug metrics (#13375)

SD Managers take over responsibility for SD metrics registration

---------

Signed-off-by: Paulin Todev <[email protected]>
Signed-off-by: Björn Rabenstein <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>

* Optimize histogram iterators (#13340)

Optimize histogram iterators

Histogram iterators allocate new objects in the AtHistogram and
AtFloatHistogram methods, which makes calculating rates over long
ranges expensive.

In #13215 we allowed an existing object to be reused
when converting an integer histogram to a float histogram. This commit follows
the same idea and allows injecting an existing object in the AtHistogram and
AtFloatHistogram methods. When the injected value is nil, iterators allocate
new histograms, otherwise they populate and return the injected object.

The commit also adds a CopyTo method to Histogram and FloatHistogram which
is used in the BufferedIterator to overwrite items in the ring instead of making
new copies.

Note that a specialized HPoint pool is needed for all of this to work 
(`matrixSelectorHPool`).

---------

Signed-off-by: Filip Petkovski <[email protected]>
Co-authored-by: George Krajcsovits <[email protected]>

* doc: Mark `mad_over_time` as experimental (#13440)

We forgot to do that in
https://github.com/prometheus/prometheus/pull/13059

Signed-off-by: beorn7 <[email protected]>

* Change metric label for Puppetdb from 'http' to 'puppetdb'

Signed-off-by: Paulin Todev <[email protected]>

* mirror metrics.proto change & generate code

Signed-off-by: Ziqi Zhao <[email protected]>

* TestHeadLabelValuesWithMatchers: Add test case (#13414)

Add test case to TestHeadLabelValuesWithMatchers, while fixing a couple
of typos in other test cases. Also enclosing some implicit sub-tests in a
`t.Run` call to make them explicitly sub-tests.

Signed-off-by: Arve Knudsen <[email protected]>

* update all go dependencies (#13438)

Signed-off-by: Augustin Husson <[email protected]>

* build(deps): bump the k8s-io group with 2 updates (#13454)

Bumps the k8s-io group with 2 updates: [k8s.io/api](https://github.com/kubernetes/api) and [k8s.io/client-go](https://github.com/kubernetes/client-go).


Updates `k8s.io/api` from 0.28.4 to 0.29.1
- [Commits](https://github.com/kubernetes/api/compare/v0.28.4...v0.29.1)

Updates `k8s.io/client-go` from 0.28.4 to 0.29.1
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kubernetes/client-go/compare/v0.28.4...v0.29.1)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-io
- dependency-name: k8s.io/client-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-io
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump the go-opentelemetry-io group with 1 update (#13453)

Bumps the go-opentelemetry-io group with 1 update: [go.opentelemetry.io/collector/semconv](https://github.com/open-telemetry/opentelemetry-collector).


Updates `go.opentelemetry.io/collector/semconv` from 0.92.0 to 0.93.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-collector/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-collector/blob/main/CHANGELOG-API.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-collector/compare/v0.92.0...v0.93.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/collector/semconv
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-opentelemetry-io
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/upload-artifact from 3.1.3 to 4.0.0 (#13355)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/a8a3f3ad30e3422c9c7b888a15615d19a852ae32...c7d193f32edcb7bfad88892161225aeda64e9392)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump bufbuild/buf-push-action (#13357)

Bumps [bufbuild/buf-push-action](https://github.com/bufbuild/buf-push-action) from 342fc4cdcf29115a01cf12a2c6dd6aac68dc51e1 to a654ff18effe4641ebea4a4ce242c49800728459.
- [Release notes](https://github.com/bufbuild/buf-push-action/releases)
- [Commits](https://github.com/bufbuild/buf-push-action/compare/342fc4cdcf29115a01cf12a2c6dd6aac68dc51e1...a654ff18effe4641ebea4a4ce242c49800728459)

---
updated-dependencies:
- dependency-name: bufbuild/buf-push-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Labels: Add DropMetricName function, used in PromQL (#13446)

This function is called very frequently when executing PromQL functions,
and we can do it much more efficiently inside Labels.

In the common case that `__name__` comes first in the labels, we simply
re-point to start at the next label, which is nearly free.

`DropMetricName` is now so cheap I removed the cache - benchmarks show
everything still goes faster.

Signed-off-by: Bryan Boreham <[email protected]>

* tsdb: simplify internal series delete function (#13261)

Lifting an optimisation from Agent code, `seriesHashmap.del` can use
the unique series reference, doesn't need to check Labels.
Also streamline the logic for deleting from `unique` and `conflicts` maps,
and add some comments to help the next person.

Signed-off-by: Bryan Boreham <[email protected]>

* otlptranslator/update-copy.sh: Fix sed command lines

Signed-off-by: Arve Knudsen <[email protected]>

* Rollback k8s.io requirements (#13462)

Rollback k8s.io Go modules to v0.28.6 to avoid forcing upgrade of Go to
1.21. This allows us to keep compatibility with the currently supported
upstream Go releases.

Signed-off-by: SuperQ <[email protected]>

* Make update-copy.sh work for both OSX and GNU sed

Signed-off-by: Arve Knudsen <[email protected]>

* Name @beorn7 and @krajorama as maintainers for native histograms

I have been the de-facto maintainer for native histograms from the
beginning. So let's put this into MAINTAINERS.md.

In addition, I hereby proposose George Krajcsovits AKA Krajo as a
co-maintainer. He has contributed a lot of native histogram code, but
more importantly, he has contributed substantially to reviewing other
contributors' native histogram code, up to a point where I was merely
rubberstamping the PRs he had already reviewed. I'm confident that he
is ready to to be granted commit rights as outlined in the
"Maintainers" section of the governance:
https://prometheus.io/governance/#maintainers

According to the same section of the governance, I will announce the
proposed change on the developers mailing list and will give some time
for lazy consensus before merging this PR.

Signed-off-by: beorn7 <[email protected]>

* ui/fix: correct url handling for stacked graphs (#13460)

Signed-off-by: Yury Moladau <[email protected]>

* tsdb: use cheaper Mutex on series

Mutex is 8 bytes; RWMutex is 24 bytes and much more complicated. Since
`RLock` is only used in two places, `UpdateMetadata` and `Delete`,
neither of which are hotspots, we should use the cheaper one.

Signed-off-by: Bryan Boreham <[email protected]>

* Fix last_over_time for native histograms

The last_over_time retains a histogram sample without making a copy.
This sample is now coming from the buffered iterator used for windowing functions,
and can be reused for reading subsequent samples as the iterator progresses.

I would propose copying the sample in the last_over_time function, similar to
how it is done for rate, sum_over_time and others.

Signed-off-by: Filip Petkovski <[email protected]>

* Implementation

NOTE:
Rebased from main after refactor in #13014

Signed-off-by: Danny Kopping <[email protected]>

* Add feature flag

Signed-off-by: Danny Kopping <[email protected]>

* Refactor concurrency control

Signed-off-by: Danny Kopping <[email protected]>

* Optimising dependencies/dependents funcs to not produce new slices each request

Signed-off-by: Danny Kopping <[email protected]>

* Refactoring

Signed-off-by: Danny Kopping <[email protected]>

* Rename flag

Signed-off-by: Danny Kopping <[email protected]>

* Refactoring for performance, and to allow controller to be overridden

Signed-off-by: Danny Kopping <[email protected]>

* Block until all rules, both sync & async, have completed evaluating
Updated & added tests
Review feedback nits
Return empty map if not indeterminate
Use highWatermark to track inflight requests counter
Appease the linter
Clarify feature flag

Signed-off-by: Danny Kopping <[email protected]>

* Fix typo in CLI flag description

Signed-off-by: Marco Pracucci <[email protected]>

* Fixed auto-generated doc

Signed-off-by: Marco Pracucci <[email protected]>

* Improve doc

Signed-off-by: Marco Pracucci <[email protected]>

* Simplify the design to update concurrency controller once the rule evaluation has done

Signed-off-by: Marco Pracucci <[email protected]>

* Add more test cases to TestDependenciesEdgeCases

Signed-off-by: Marco Pracucci <[email protected]>

* Added more test cases to TestDependenciesEdgeCases

Signed-off-by: Marco Pracucci <[email protected]>

* Improved RuleConcurrencyController interface doc

Signed-off-by: Marco Pracucci <[email protected]>

* Introduced sequentialRuleEvalController

Signed-off-by: Marco Pracucci <[email protected]>

* Remove superfluous nil check in Group.metrics

Signed-off-by: Marco Pracucci <[email protected]>

* api: Serialize discovered and target labels into JSON directly (#13469)

Converted maps into labels.Labels to avoid a lot of copying of data which leads to very high memory consumption while opening the /service-discovery endpoint in the Prometheus UI

Signed-off-by: Leegin <[email protected]>

* api: Serialize discovered labels into JSON directly in dropped targets (#13484)

Converted maps into labels.Labels to avoid a lot of copying of data which leads to very high memory consumption while opening the /service-discovery endpoint in the Prometheus UI

Signed-off-by: Leegin <[email protected]>

* Add ShardedPostings() support to TSDB (#10421)

This PR is a reference implementation of the proposal described in #10420.

In addition to what described in #10420, in this PR I've introduced labels.StableHash(). The idea is to offer an hashing function which doesn't change over time, and that's used by query sharding in order to get a stable behaviour over time. The implementation of labels.StableHash() is the hashing function used by Prometheus before stringlabels, and what's used by Grafana Mimir for query sharding (because built before stringlabels was a thing).

Follow up work
As mentioned in #10420, if this PR is accepted I'm also open to upload another foundamental piece used by Grafana Mimir query sharding to accelerate the query execution: an optional, configurable and fast in-memory cache for the series hashes.

Signed-off-by: Marco Pracucci <[email protected]>

* storage/remote: document why two benchmarks are skipped

One was silently doing nothing; one was doing something but the work
didn't go up linearly with iteration count.

Signed-off-by: Bryan Boreham <[email protected]>

* Pod status changes not discovered by Kube Endpoints SD (#13337)

* fix(discovery/kubernetes/endpoints): react to changes on Pods because some modifications can occur on them without triggering an update on the related Endpoints (The Pod phase changing from Pending to Running e.g.).

---------

Signed-off-by: machine424 <[email protected]>
Co-authored-by: Guillermo Sanchez Gavier <[email protected]>

* Small improvements, add const, remove copypasta (#8106)

Signed-off-by: Mikhail Fesenko <[email protected]>
Signed-off-by: Jesus Vazquez <[email protected]>

* Proposal to improve FPointSlice and HPointSlice allocation. (#13448)

* Reusing points slice from previous series when the slice is under utilized
* Adding comments on the bench test

Signed-off-by: Alan Protasio <[email protected]>

* lint

Signed-off-by: Nicolás Pazos <[email protected]>

* go mod tidy

Signed-off-by: Nicolás Pazos <[email protected]>

---------

Signed-off-by: Julian Wiedmann <[email protected]>
Signed-off-by: Bryan Boreham <[email protected]>
Signed-off-by: Erik Sommer <[email protected]>
Signed-off-by: Linas Medziunas <[email protected]>
Signed-off-by: bwplotka <[email protected]>
Signed-off-by: Arianna Vespri <[email protected]>
Signed-off-by: machine424 <[email protected]>
Signed-off-by: Daniel Nicholls <[email protected]>
Signed-off-by: Daniel Kerbel <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Jan Fajerski <[email protected]>
Signed-off-by: Kevin Mingtarja <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Giedrius Statkevičius <[email protected]>
Signed-off-by: Augustin Husson <[email protected]>
Signed-off-by: Jeanette Tan <[email protected]>
Signed-off-by: Bartlomiej Plotka <[email protected]>
Signed-off-by: Kumar Kalpadiptya Roy <[email protected]>
Signed-off-by: Marco Pracucci <[email protected]>
Signed-off-by: tyltr <[email protected]>
Signed-off-by: Ted Robertson [email protected]
Signed-off-by: Ivan Babrou <[email protected]>
Signed-off-by: Arve Knudsen <[email protected]>
Signed-off-by: Israel Blancas <[email protected]>
Signed-off-by: Ziqi Zhao <[email protected]>
Signed-off-by: Björn Rabenstein <[email protected]>
Signed-off-by: Goutham <[email protected]>
Signed-off-by: Rewanth Tammana <[email protected]>
Signed-off-by: Chris Marchbanks <[email protected]>
Signed-off-by: Ben Ye <[email protected]>
Signed-off-by: Oleg Zaytsev <[email protected]>
Signed-off-by: SuperQ <[email protected]>
Signed-off-by: Ben Kochie <[email protected]>
Signed-off-by: Matthieu MOREL <[email protected]>
Signed-off-by: Paulin Todev <[email protected]>
Signed-off-by: Filip Petkovski <[email protected]>
Signed-off-by: beorn7 <[email protected]>
Signed-off-by: Augustin Husson <[email protected]>
Signed-off-by: Yury Moladau <[email protected]>
Signed-off-by: Danny Kopping <[email protected]>
Signed-off-by: Leegin <[email protected]>
Signed-off-by: Mikhail Fesenko <[email protected]>
Signed-off-by: Jesus Vazquez <[email protected]>
Signed-off-by: Alan Protasio <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>
Co-authored-by: Julian Wiedmann <[email protected]>
Co-authored-by: Bryan Boreham <[email protected]>
Co-authored-by: Erik Sommer <[email protected]>
Co-authored-by: Linas Medziunas <[email protected]>
Co-authored-by: Bartlomiej Plotka <[email protected]>
Co-authored-by: Arianna Vespri <[email protected]>
Co-authored-by: machine424 <[email protected]>
Co-authored-by: daniel-resdiary <[email protected]>
Co-authored-by: Daniel Kerbel <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jan Fajerski <[email protected]>
Co-authored-by: Kevin Mingtarja <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Marc Tudurí <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Giedrius Statkevičius <[email protected]>
Co-authored-by: Augustin Husson <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>
Co-authored-by: zenador <[email protected]>
Co-authored-by: gotjosh <[email protected]>
Co-authored-by: Ben Kochie <[email protected]>
Co-authored-by: Kumar Kalpadiptya Roy <[email protected]>
Co-authored-by: Marco Pracucci <[email protected]>
Co-authored-by: tyltr <[email protected]>
Co-authored-by: Ted Robertson <[email protected]>
Co-authored-by: Julien Pivotto <[email protected]>
Co-authored-by: Matthias Loibl <[email protected]>
Co-authored-by: Ivan Babrou <[email protected]>
Co-authored-by: Arve Knudsen <[email protected]>
Co-authored-by: Israel Blancas <[email protected]>
Co-authored-by: Ziqi Zhao <[email protected]>
Co-authored-by: George Krajcsovits <[email protected]>
Co-authored-by: Björn Rabenstein <[email protected]>
Co-authored-by: Goutham <[email protected]>
Co-authored-by: Rewanth Tammana <[email protected]>
Co-authored-by: Chris Marchbanks <[email protected]>
Co-authored-by: Ben Ye <[email protected]>
Co-authored-by: Oleg Zaytsev <[email protected]>
Co-authored-by: Matthieu MOREL <[email protected]>
Co-authored-by: Paulin Todev <[email protected]>
Co-authored-by: Filip Petkovski <[email protected]>
Co-authored-by: Yury Molodov <[email protected]>
Co-authored-by: Danny Kopping <[email protected]>
Co-authored-by: Leegin <[email protected]>
Co-authored-by: Guillermo Sanchez Gavier <[email protected]>
Co-authored-by: Mikhail Fesenko <[email protected]>
Co-authored-by: Alan Protasio <[email protected]>

* remote write 2.0 - follow up improvements (#13478)

* move remote write proto version config from a remote storage config to a
per remote write configuration option

Signed-off-by: Callum Styan <[email protected]>

* rename scrape config for metadata, fix 2.0 header var name/value (was
1.1), and more clean up

Signed-off-by: Callum Styan <[email protected]>

* address review comments, mostly lint fixes

Signed-off-by: Callum Styan <[email protected]>

* another lint fix

Signed-off-by: Callum Styan <[email protected]>

* lint imports

Signed-off-by: Callum Styan <[email protected]>

---------

Signed-off-by: Callum Styan <[email protected]>

* go mod tidy

Signed-off-by: Nicolás Pazos <[email protected]>

* Added commmentary to RW 2.0 protocol for easier adoption and explicit semantics. (#13502)

* Added commmentary to RW 2.0 protocol for easier adoption and explicit semantics.

Signed-off-by: bwplotka <[email protected]>

* Apply suggestions from code review

Co-authored-by: Nico Pazos <[email protected]>
Signed-off-by: Callum Styan <[email protected]>

---------

Signed-off-by: bwplotka <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Co-authored-by: Callum Styan <[email protected]>
Co-authored-by: Nico Pazos <[email protected]>

* prw2.0: Added support for "custom" layouts for native histogram proto (#13558)

* prw2.0: Added support for "custom" layouts for native histogram.

Result of the discussions:
* https://github.com/prometheus/prometheus/issues/13475#issuecomment-1931496924
* https://cloud-native.slack.com/archives/C02KR205UMU/p1707301006347199

Signed-off-by: bwplotka <[email protected]>

* prw2.0: Added support for "custom" layouts for native histogram.

Result of the discussions:
* https://github.com/prometheus/prometheus/issues/13475#issuecomment-1931496924
* https://cloud-native.slack.com/archives/C02KR205UMU/p1707301006347199

Signed-off-by: bwplotka <[email protected]>

# Conflicts:
#	prompb/write/v2/types.pb.go

* Update prompb/write/v2/types.proto

Co-authored-by: George Krajcsovits <[email protected]>
Signed-off-by: Bartlomiej Plotka <[email protected]>

* Addressed comments, fixed test.

Signed-off-by: bwplotka <[email protected]>

---------

Signed-off-by: bwplotka <[email protected]>
Signed-off-by: Bartlomiej Plotka <[email protected]>
Co-authored-by: George Krajcsovits <[email protected]>

* first draft of content negotiation

Signed-off-by: Alex Greenbank <[email protected]>

* Lint

Signed-off-by: Alex Greenbank <[email protected]>

* Fix race in test

Signed-off-by: Alex Greenbank <[email protected]>

* Fix another test race

Signed-off-by: Alex Greenbank <[email protected]>

* Almost done with lint

Signed-off-by: Alex Greenbank <[email protected]>

* Fix todos around 405 HEAD handling

Signed-off-by: Alex Greenbank <[email protected]>

* Changes based on review comments

Signed-off-by: Alex Greenbank <[email protected]>

* Update storage/remote/client.go

Co-authored-by: Bartlomiej Plotka <[email protected]>
Signed-off-by: Alex Greenbank <[email protected]>

* Latest updates to review comments

Signed-off-by: Alex Greenbank <[email protected]>

* latest tweaks

Signed-off-by: Alex Greenbank <[email protected]>

* remote write 2.0 - content negotiation remediation (#13921)

* Consolidate renegotiation error into one, fix tests

Signed-off-by: Alex Greenbank <[email protected]>

* fix metric name and actuall increment counter

Signed-off-by: Alex Greenbank <[email protected]>

---------

Signed-off-by: Alex Greenbank <[email protected]>

* Fixes after main sync.

Signed-off-by: bwplotka <[email protected]>

* [PRW 2.0] Moved rw2 proto to the full path (both package name and placement) (#13973)

undefined

* [PRW2.0] Remove benchmark scripts (#13949)

See rationales on https://docs.google.com/document/d/1Bpf7mYjrHUhPHkie0qlnZFxzgqf_L32kM8ZOknSdJrU/edit

Signed-off-by: bwplotka <[email protected]>

* rw20: Update prw commentary after Callum spec review (#14136)

* rw20: Update prw commentary after Callum spec review

Signed-off-by: Bartlomiej Plotka <[email protected]>

* Update types.proto

Signed-off-by: Bartlomiej Plotka <[email protected]>

---------

Signed-off-by: Bartlomiej Plotka <[email protected]>

* [PRW 2.0] Updated spec proto (2.0-rc.1); deterministic v1 interop; to be sympathetic with implementation. (#14330)

* [PRW 2.0] Updated spec proto (2.0-rc.1); deterministic v1 interop; to be sympathetic with implementation.

Signed-off-by: bwplotka <[email protected]>

* update custom marshalling

Signed-off-by: bwplotka <[email protected]>

* Removed confusing comments.

Signed-off-by: bwplotka <[email protected]>

---------

Signed-off-by: bwplotka <[email protected]>

* [PRW-2.0] (chain1) New Remote Write 2.0 Config options for 2.0-rc.1 spec. (#14335)

NOTE: For simple review this change does not touch remote/ packages, only main and configs.

Spec: https://prometheus.io/docs/specs/remote_write_spec_2_0

Supersedes https://github.com/prometheus/prometheus/pull/13968

Signed-off-by: bwplotka <[email protected]>

* [PRW-2.0] (part 2) Removed automatic negotiation, updates for the latest spec semantics in remote pkg (#14329)

* [PRW-2.0] (part2) Moved to latest basic negotiation & spec semantics.

Spec: https://github.com/prometheus/docs/pull/2462

Supersedes https://github.com/prometheus/prometheus/pull/13968

Signed-off-by: bwplotka <[email protected]>

# Conflicts:
#	config/config.go
#	docs/configuration/configuration.md
#	storage/remote/queue_manager_test.go
#	storage/remote/write.go
#	web/api/v1/api.go

* Addressed comments.

Signed-off-by: bwplotka <[email protected]>

---------

Signed-off-by: bwplotka <[email protected]>

* lint

Signed-off-by: Nicolás Pazos <[email protected]>

* storage/remote tests: refactor: extract function newTestQueueManager

To reduce repetition.

Signed-off-by: Bryan Boreham <[email protected]>
Signed-off-by: Nicolás Pazos <[email protected]>

* use newTestQueueManager for test

Signed-off-by: Nicolás Pazos <[email protected]>

* go mod tidy

Signed-off-by: Nicolás Pazos <[email protected]>

* [PRW 2.0] (part3) moved type specific conversions to prompb and writev2 codecs.

Signed-off-by: bwplotka <[email protected]>

* Added test for rwProtoMsgFlagParser; fixed TODO comment.

Signed-off-by: bwplotka <[email protected]>

* Renamed DecodeV2WriteRequestStr to DecodeWriteV2Request (with tests).

Signed-off-by: bwplotka <[email protected]>

* Addressed comments on remote_storage example, updated it for 2.0

Signed-off-by: bwplotka <[email protected]>

* Fixed `--enable-feature=metadata-wal-records` docs and error when using PRW 2.0 without it.

Signed-off-by: bwplotka <[email protected]>

* Addressed Callum comments on custom*.go

Signed-off-by: bwplotka <[email protected]>

* Added TODO to genproto.

Signed-off-by: bwplotka <[email protected]>

* Addressed Callum comments in remote pkg.

Signed-off-by: bwplotka <[email protected]>

* Added metadata validation to write handler test; fixed ToMetadata.

Signed-off-by: bwplotka <[email protected]>

* Addressed rest of Callum comments.

Signed-off-by: bwplotka <[email protected]>

* Fixed writev2.FromMetadataType (was wrongly using prompb).

Signed-off-by: bwplotka <[email protected]>

* fix a few import whitespaces

Signed-off-by: Callum Styan <[email protected]>

* add a default case with an error to the example RW receiver

Signed-off-by: Callum Styan <[email protected]>

* more minor import whitespace chagnes

Signed-off-by: Callum Styan <[email protected]>

* Apply suggestions from code review

Signed-off-by: Bartlomiej Plotka <[email protected]>

* Update storage/remote/queue_manager_test.go

Signed-off-by: Bartlomiej Plotka <[email protected]>

---------

Signed-off-by: Nicolás Pazos <[email protected]>
Signed-off-by: Callum Styan <[email protected]>
Signed-off-by: bwplotka <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Julian Wiedmann <[email protected]>
Signed-off-by: Bryan Boreham <[email protected]>
Signed-off-by: Erik Sommer <[email protected]>
Signed-off-by: Linas Medziunas <[email protected]>
Signed-off-by: Arianna Vespri <[email protected]>
Signed-off-by: machine424 <[email protected]>
Signed-off-by: Daniel Nicholls <[email protected]>
Signed-off-by: Daniel Kerbel <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Jan Fajerski <[email protected]>
Signed-off-by: Kevin Mingtarja <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Marc Tuduri <[email protected]>
Signed-off-by: Paschalis Tsilias <[email protected]>
Signed-off-by: Giedrius Statkevičius <[email protected]>
Signed-off-by: Augustin Husson <[email protected]>
Signed-off-by: Jeanette Tan <[email protected]>
Signed-off-by: Bartlomiej Plotka <[email protected]>
Signed-off-by: Kumar Kalpadiptya Roy <[email protected]>
Signed-off-by: Marco Pracucci <[email protected]>
Signed-off-by: tyltr <[email protected]>
Signed-off-by: Ted Robertson [email protected]
Signed-off-by: Ivan Babrou <[email protected]>
Signed-off-by: Arve Knudsen <[email protected]>
Signed-off-by: Israel Blancas <[email protected]>
Signed-off-by: Ziqi Zhao <[email protected]>
Signed-off-by: Björn Rabenstein <[email protected]>
Signed-off-by: Goutham <[email protected]>
Signed-off-by: Rewanth Tammana <[email protected]>
Signed-off-by: Chris Marchbanks <[email protected]>
Signed-off-by: Ben Ye <[email protected]>
Signed-off-by: Oleg Zaytsev <[email protected]>
Signed-off-by: SuperQ <[email protected]>
Signed-off-by: Ben Kochie <[email protected]>
Signed-off-by: Matthieu MOREL <[email protected]>
Signed-off-by: Paulin Todev <[email protected]>
Signed-off-by: Filip Petkovski <[email protected]>
Signed-off-by: beorn7 <[email protected]>
Signed-off-by: Augustin Husson <[email protected]>
Signed-off-by: Yury Moladau <[email protected]>
Signed-off-by: Danny Kopping <[email protected]>
Signed-off-by: Leegin <[email protected]>
Signed-off-by: Mikhail Fesenko <[email protected]>
Signed-off-by: Jesus Vazquez <[email protected]>
Signed-off-by: Alan Protasio <[email protected]>
Signed-off-by: Alex Greenbank <[email protected]>
Co-authored-by: Nicolás Pazos <[email protected]>
Co-authored-by: Callum Styan <[email protected]>
Co-authored-by: Nicolás Pazos <[email protected]>
Co-authored-by: alexgreenbank <[email protected]>
Co-authored-by: Marco Pracucci <[email protected]>
Co-authored-by: Paschalis Tsilias <[email protected]>
Co-authored-by: Julian Wiedmann <[email protected]>
Co-authored-by: Bryan Boreham <[email protected]>
Co-authored-by: Erik Sommer <[email protected]>
Co-authored-by: Linas Medziunas <[email protected]>
Co-authored-by: Arianna Vespri <[email protected]>
Co-authored-by: machine424 <[email protected]>
Co-authored-by: daniel-resdiary <[email protected]>
Co-authored-by: Daniel Kerbel <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot…
fbegyn pushed a commit to fbegyn/prometheus that referenced this pull request Jul 11, 2024
…ometheus#13242)

* tsdb/{index,compact}: allow using custom postings encoding format

We would like to experiment with a different postings encoding format in
Thanos so in this change I am proposing adding another argument to
`NewWriter` which would allow users to change the format if needed.
Also, wire the leveled compactor so that it would be possible to change
the format there too.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb/compact: use a struct for leveled compactor options

As discussed on Slack, let's use a struct for the options in leveled
compactor.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* tsdb: make changes after Bryan's review

- Make changes less intrusive
- Turn the postings encoder type into a function
- Add NewWriterWithEncoder()

Signed-off-by: Giedrius Statkevičius <[email protected]>

---------

Signed-off-by: Giedrius Statkevičius <[email protected]>
fbegyn pushed a commit to fbegyn/prometheus that referenced this pull request Jul 11, 2024
coleenquadros added a commit to stolostron/thanos that referenced this pull request Jul 24, 2024
* CI: increase e2e test parallelism (#6875)

Signed-off-by: Michael Hoffmann <[email protected]>

* compact: hook nodownsamplemarkfilter into filters chain (#6893)

We have a NoDownsampleMarkFilter that we were not using before in the
compactor for some reason. Hook it into the filters chain if
downsampling is enabled and then trim matching ULIDs from the
downsampling process. Add a test to cover this scenario.

Fixes https://github.com/thanos-io/thanos/issues/6179.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* e2e/compact: fix assertion values (#6909)

I think the original values were simply too small there - if the runner
is slow then it can see smaller metrics values. If the runner works well
then the values can go to these bigger values and then the test fails.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* exposes asyncOperationProcessor (#6908)

expose struct



fix lint

Signed-off-by: Ben Ye <[email protected]>

* Removed the gitpod from the contribution.md (#6907)

Signed-off-by: MeenuyD <[email protected]>

* .circleci: cache tool deps (#6910)

I have noticed that downloading tool deps takes ~5 min in CI each time.
We should be able to also cache those tool deps.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* MAINTAINERS.md: add myself as maintainer (#6911)

Signed-off-by: Michael Hoffmann <[email protected]>

* blog: Introducing ThanosCon in Paris KubeCon EU 2024 (#6912)

* blog: Introducing ThanosCon in Paris KubeCon EU 2024

Signed-off-by: Saswata Mukherjee <[email protected]>

* Add image

Signed-off-by: Saswata Mukherjee <[email protected]>

* make docs

Signed-off-by: Saswata Mukherjee <[email protected]>

* Apply suggestions

Co-authored-by: Matej Gera <[email protected]>
Co-authored-by: Bartlomiej Plotka <[email protected]>
Signed-off-by: Saswata Mukherjee <[email protected]>

* Apply suggestions

Co-authored-by: Bartlomiej Plotka <[email protected]>
Signed-off-by: Saswata Mukherjee <[email protected]>

* Add link to slack channel

Signed-off-by: Saswata Mukherjee <[email protected]>

---------

Signed-off-by: Saswata Mukherjee <[email protected]>
Co-authored-by: Matej Gera <[email protected]>
Co-authored-by: Bartlomiej Plotka <[email protected]>

* Update 2023-20-11-thanoscon.md (typo) (#6915)

Signed-off-by: Bartlomiej Plotka <[email protected]>

* Added info about ThanosCon to website and Readme. (#6917)

* Added info about ThanosCon to website and Readme.

Signed-off-by: bwplotka <[email protected]>

* Update website/layouts/index.html

Co-authored-by: Saswata Mukherjee <[email protected]>
Signed-off-by: Bartlomiej Plotka <[email protected]>

---------

Signed-off-by: bwplotka <[email protected]>
Signed-off-by: Bartlomiej Plotka <[email protected]>
Co-authored-by: Saswata Mukherjee <[email protected]>

* Objstore: Bump Objstore for Azure Workload Identity support (#6891)

* Bump objstore for Azure Workload Identity support

Signed-off-by: Rikhil Shah <[email protected]>

* make check-docs

Signed-off-by: Rikhil Shah <[email protected]>

* Add changelog entry

Signed-off-by: Rikhil Shah <[email protected]>

* Update Azure client docs

Signed-off-by: Rikhil Shah <[email protected]>

* make check-docs

Signed-off-by: Rikhil Shah <[email protected]>

* Move changelog entry to 0.33.0 release

Signed-off-by: Rikhil Shah <[email protected]>

* Move changelog entry

Signed-off-by: Rikhil Shah <[email protected]>

---------

Signed-off-by: Rikhil Shah <[email protected]>
Signed-off-by: Michael Hoffmann <[email protected]>

* update compactor backlog doc for checking halt (#6906)

Signed-off-by: Ben Ye <[email protected]>

* Update LabyrintLabs logo

Signed-off-by: Martin Hauskrecht <[email protected]>

* Support reload using signal (#6453)

* Support reload using signal

Signed-off-by: Simon Pasquier <[email protected]>

* Add --reloader.method option to sidecar

This option allows to tell the sidecar to send a SIGHUP signal to the
monitored process to reload its configuration instead of the default
HTTP-based method.

Signed-off-by: Simon Pasquier <[email protected]>

* Update docs and CHANGELOG.md

Signed-off-by: Simon Pasquier <[email protected]>

---------

Signed-off-by: Simon Pasquier <[email protected]>

* Support float histogram in store gateway (#6925)

* support float histogram in store gateway

Signed-off-by: Ben Ye <[email protected]>

* fix lint

Signed-off-by: Ben Ye <[email protected]>

* fix e2e test

Signed-off-by: Ben Ye <[email protected]>

* update prompb

Signed-off-by: Ben Ye <[email protected]>

* add changelog

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* chore: add truelayer to the adopters (#6933)

Signed-off-by: Matteo Martellini <[email protected]>

* Fetcher: Add a BlockIDsFetcher Interface to BaseFetcher (#6902)

* add BlockIDsFetcher to BaseFetcher

Signed-off-by: Wen Xu <[email protected]>

* fix lint

Signed-off-by: Wen Xu <[email protected]>

* use chan in the interface method to accept active block ids

Signed-off-by: Wen Xu <[email protected]>

* fix comments

Signed-off-by: Wen Xu <[email protected]>

* fix lint

Signed-off-by: Wen Xu <[email protected]>

* add description of active and parital blocks and modify changelog

Signed-off-by: Wen Xu <[email protected]>

* fix interface description

Signed-off-by: Wen Xu <[email protected]>

* remove entry in changelog

Signed-off-by: Wen Xu <[email protected]>

---------

Signed-off-by: Wen Xu <[email protected]>

* Update hugo file (#6927)

* Update hugo file #6889

Signed-off-by: Kartikay <[email protected]>

* Version 0.33 removed

Signed-off-by: Kartikay <[email protected]>

---------

Signed-off-by: Kartikay <[email protected]>

* Updates busybox SHA (#6897) (#6937)

Signed-off-by: GitHub <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: fpetkovski <[email protected]>

* Fix hotstar logo (#6938)

* Fix hotstar logo

Signed-off-by: Kartikay <[email protected]>

* Delete website/.hugo_build.lock

Signed-off-by: Kartikay <[email protected]>

---------

Signed-off-by: Kartikay <[email protected]>
Signed-off-by: Kartikay <[email protected]>

* errutil: fix deadlock

Fix deadlock in the Add() function - it accidentally was calling itself
recursively. This struct wraps a `MultiError` so we need to call `Add()`
on that `MultiError` inside.

This deadlock can manifest in Receive - million+ leaking goroutines, all
stuck on the MultiTSDB lock.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* update runtime/CloseWithErrCapture comment (#6952)

* update runtime/CloseWithErrCapture comment

Signed-off-by: Sagnik Das <[email protected]>

* fix lint

Signed-off-by: Sagnik Das <[email protected]>

---------

Signed-off-by: Sagnik Das <[email protected]>

* Added a new flag for maximum retention bytes for thanos (#6944)

* changes

Signed-off-by: Kartikay <[email protected]>

* Changed Int64 to BytesVar

Signed-off-by: Kartikay <[email protected]>

* Updated Changelog for new flag in receive

Signed-off-by: Kartikay <[email protected]>

---------

Signed-off-by: Kartikay <[email protected]>
Signed-off-by: Kartikay <[email protected]>

* fix store gateway span name (#6953)

Signed-off-by: Ben Ye <[email protected]>

* Upgrade prometheus to latest main (#6950)

* upgrade prometheus to latest main

Signed-off-by: Ben Ye <[email protected]>

* upgrade again

Signed-off-by: Ben Ye <[email protected]>

* fix test

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* Improve filtered index cache filtering (#6955)

* improve filtered index cache filtering

Signed-off-by: Ben Ye <[email protected]>

* make inline

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* store: fix misc label_value issues related to external labels (#6879)

Signed-off-by: Michael Hoffmann <[email protected]>

* receive: fix adding fields to logger

Fix adding fields to the logger because otherwise it looks like
"[tenant foo]: (UNDEFINED)".

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Copy labels coming from remote engines (#6957)

* Copy labels coming from remote engines

When running in distributed mode, the remote engine will use an unsafe
cast from ZLabels to Prometheus labels to avoid making new allocations.
This makes it hard to use the new gRPC shared buffer pool for receiving
and decompressing messages since memory gets retained beyond the scope
of a Recv() call.

This commit removes the unsafe cast and makes an explicit memory copy
of received series labels. Since remote queries are already aggregated
series, the amount of data we receive should be small anyway, and the copies
on average should have a small impact.

Signed-off-by: Filip Petkovski <[email protected]>

* Use clone on strings

Signed-off-by: Filip Petkovski <[email protected]>

---------

Signed-off-by: Filip Petkovski <[email protected]>

* Add tracing index cache (#6954)

* add tracing index cache

Signed-off-by: Ben Ye <[email protected]>

* changelog

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* Change order of log for finished compacting blocks (#6966)

Signed-off-by: Daniel Deluiggi <[email protected]>

* Update MAINTAINERS.md (#6967)

Signed-off-by: Matej Gera <[email protected]>

* Add `keep_firing_for` support to alerting rule (#6943)

* Add keep_firing_for to alert rules

Signed-off-by: JHeil <[email protected]>

* Updating changelog

Signed-off-by: JHeil <[email protected]>

* Re-order keepFiringFor at the end of the struct

Signed-off-by: JHeil <[email protected]>

---------

Signed-off-by: JHeil <[email protected]>
Signed-off-by: JHeil <[email protected]>

* Use registerer for gRPC opts and endpoints (#6971)

The EndpointSet and StoreGRPC options accept concrete *prometheus.Registry type.
This makes it hard to create multiple instances of them because they will try
to register the same metrics and the registry will panic.

This commit changes the type to a prometheus.Registerer which allows clients
to inject a prefixed registry and get metrics for each instance.

Signed-off-by: Filip Petkovski <[email protected]>

* receive: upload compacted blocks if OOO enabled (#6974)

* Add streaming series limit at block series client (#6972)

* add series limit that is applied when streaming using block series client

Signed-off-by: Ben Ye <[email protected]>

* changelog

Signed-off-by: Ben Ye <[email protected]>

* add unit tests

Signed-off-by: Ben Ye <[email protected]>

* address comments

Signed-off-by: Ben Ye <[email protected]>

* fix comment

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* Updated the defaultChecked property in checkbox element (#6976)

Signed-off-by: lpreethvika-samsung <[email protected]>

* Update prometheus to d0c2d9c (#6978)

* Update prometheus to d0c2d9c

This commit updates Prometheus to commit d0c2d9c which contains
the loser-tree based postings merge. Note that we cannot update to
latest main since there is currently a bug in PromQL when querying
native histograms introduced by https://github.com/prometheus/prometheus/pull/13276.
This issue should be fixed by https://github.com/prometheus/prometheus/pull/13289.

This commit also updates the Thanos PromQL engine to latest main.

Signed-off-by: Filip Petkovski <[email protected]>

* Fix handler_test.go

Signed-off-by: Filip Petkovski <[email protected]>

* Fix manager_test.go

Signed-off-by: Filip Petkovski <[email protected]>

* Use empty registry for file discovery

Signed-off-by: Filip Petkovski <[email protected]>

---------

Signed-off-by: Filip Petkovski <[email protected]>

* Updates busybox SHA (#6982)

Signed-off-by: GitHub <[email protected]>
Co-authored-by: fpetkovski <[email protected]>

* Updates busybox SHA (#6982)

Signed-off-by: GitHub <[email protected]>
Co-authored-by: fpetkovski <[email protected]>

* VERSION: Bump version for release

Signed-off-by: Michael Hoffmann <[email protected]>

* rule: native histogram support (#6390)

* Added native histogram support for ruler

Signed-off-by: Sebastian Rabenhorst <[email protected]>

Formatted imports

Signed-off-by: Sebastian Rabenhorst <[email protected]>

Fixed imports

Signed-off-by: Sebastian Rabenhorst <[email protected]>

Formated imports

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Fixed native histogram tests

Signed-off-by: Sebastian Rabenhorst <[email protected]>

Fixed receiver type

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Fix for rebase

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Added docs for query endpoints differences

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Fixed comments and naming

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* made HTTPConfig optional

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* made HTTPConfig optional

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Reverted and added check

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Fixes from comments

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* renamed queryconfig to clientconfig

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* common prepareEndpointSet

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* fixed lint

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Fixed sidecar

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* Fixed tests

Signed-off-by: Sebastian Rabenhorst <[email protected]>

---------

Signed-off-by: Sebastian Rabenhorst <[email protected]>

* mdox ignore checking twitter urls (#7001)

Signed-off-by: Ben Ye <[email protected]>

* Updated Grofers logo (#7006)

Signed-off-by: Kartikay <[email protected]>

* TraceID : Fetching TraceID (#6973)

* docs: add promcon 2023 thanos talks

Signed-off-by: Michael Hoffmann <[email protected]>

* Added website page for companies who offer consultancy and enterprise… (#7000)

* Added website page for companies who offer consultancy and enterprise support for Thanos

Signed-off-by: Kartikay <[email protected]>

* adopters.yml revert

Signed-off-by: Kartikay <[email protected]>

* retrigger checks

Signed-off-by: Kartikay <[email protected]>

* added a new line in welcome.md

Signed-off-by: Kartikay <[email protected]>

* retrigger checks

Signed-off-by: Kartikay <[email protected]>

---------

Signed-off-by: Kartikay <[email protected]>

* Lazy downloaded index header (#6984)

* lazy downloaded index header

Signed-off-by: Ben Ye <[email protected]>

* update tests

Signed-off-by: Ben Ye <[email protected]>

* address comments

Signed-off-by: Ben Ye <[email protected]>

* address comments

Signed-off-by: Ben Ye <[email protected]>

* changelog

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* tests: use remote write in query frontend tests (#6998)

* query-frontend: Added support of auto_discovery for memcached (#7004)

* query-frontend: Added support of auto_discovery for memcached

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

* adjustments to build on main branch

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

* CHANGELOG.md

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

* typo fixed

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

* minor fixex after review

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

---------

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

* Fix URI encoding of strings

Signed-off-by: Kartikay <[email protected]>

* ui: enable partial response strategy by default

Rebuild

Signed-off-by: Vanshika <[email protected]>

* Added negative offset check for caching queries (#7011)

Signed-off-by: pawarpranav83 <[email protected]>
Co-authored-by: pawarpranav83 <[email protected]>

* Update MAINTAINERS.md (Bartek's company)

Should be done in January last year...

Signed-off-by: Bartlomiej Plotka <[email protected]>

* store: add chunksize tests to acceptance tests

* add chunk size tests to acceptance tests
* refactor acceptance tests slightly

Signed-off-by: Michael Hoffmann <[email protected]>

* added tasrie it services as support partner (#7023)

* added tasrie it services as support partner

Signed-off-by: Tasrie IT Services <[email protected]>

* added the link in the list.html page

Signed-off-by: Tasrie IT Services <[email protected]>

* fixed the logo resolution to 190x70

Signed-off-by: Tasrie IT Services <[email protected]>

* Remove extraneous text

Signed-off-by: Saswata Mukherjee <[email protected]>

---------

Signed-off-by: Tasrie IT Services <[email protected]>
Signed-off-by: Saswata Mukherjee <[email protected]>
Co-authored-by: Saswata Mukherjee <[email protected]>

* Query Frontend: Add tenant label to metrics (#6887)

This commit adds a tenant label to the HTTP metrics which are exported
by the Query Frontend.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* tests: use remote write in query frontend tests (#7017)

* resolved issue #7024

Signed-off-by: Pratham Agarwal <[email protected]>

* QueryFrontend|Query: Create new arg to enable extended functions (#7028)

* Adding new parameter for extended functions in querier

Signed-off-by: Pedro Tanaka <[email protected]>

* Adding new flag for QFE

Signed-off-by: Pedro Tanaka <[email protected]>

* improve argument passing in query side

Signed-off-by: Pedro Tanaka <[email protected]>

* Adding changelog

Signed-off-by: Pedro Tanaka <[email protected]>

* Adding e2e test for query

Signed-off-by: Pedro Tanaka <[email protected]>

* undoing uneeded changes

Signed-off-by: Pedro Tanaka <[email protected]>

* fixing docs

Signed-off-by: Pedro Tanaka <[email protected]>

* fixing e2e tests

Signed-off-by: Pedro Tanaka <[email protected]>

* Fixing backward compat test

Signed-off-by: Pedro Tanaka <[email protected]>

* changes from CR

Signed-off-by: Pedro Tanaka <[email protected]>

---------

Signed-off-by: Pedro Tanaka <[email protected]>
Signed-off-by: Pedro Tanaka <[email protected]>

* receive: respect forward timeout in http handler buckets (#7030)

Forward timeout is what ultimately decides how long a HTTP request might
take so it doesn't make sense to hard-code max value of 5. In this pull
request I propose respecting the configured forward timeout and adding
extra buckets if the default buckets don't cover it completely.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* receive: do not leak grpc connections (#7031)

* receive: do not leak grpc connections

Prevent a leak in gRPC connections by garbage collecting old ones when
the hashring changes. For that purpose, I propose adding a `Nodes()
string` method so that it would be possible to know what nodes do not
exist in the hashring anymore.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* receive: change order of operations

Signed-off-by: Giedrius Statkevičius <[email protected]>

---------

Signed-off-by: Giedrius Statkevičius <[email protected]>

* fix multi-tenancy link (#7032)

Signed-off-by: Alec Rajeev <[email protected]>

* removing todo comments from query docs

Signed-off-by: Harsh Pratap Singh <[email protected]>

* Query: add optional tenancy enforcement (#6756)

* Query: add optional tenancy enforcement

With this commit it's now possible to enable enforcement of tenancy. If
tenancy is enabled, a tenant label will be added to queries based on the
tenant information provided by the tenant header, and the
tenant-label-name.

The implementation for query APIs are done by using prom-label-proxy as
library, while the implementation for non-query APIs are written from
scratch.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Add changelog entry

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Query: Add non-default tenant testcase

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Test: make query a constant to make linter happy

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Address review comments

- Remove empty lines
- If multiple tenant matchers are found in the original query, we only
  replace the first one with the header provided tenant, and remove any
  subsequent ones.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Address review comments

- `--enable-tenancy` -> `--enforce-tenancy`
- Create `RewritePromQL` and `RewriteLabelMatchers` to clean up code in
  query api. Also move getLabelMatchers to tenancy pkg.
- Use prom-label-proxys `EnforceMatchers` to rewrite labels on non-query
  APIs instead of own solution
- Don't specifically handle `illegalLabelMatcherError`

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Re-arrage go.mod to make linter happy.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Address review comments

Minor changes to CLI docs, code-comments and changelog.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Query: Add tenancy docs

This commit adds documentation for the tenancy features.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Update docs/components/query.md

Review comment

Co-authored-by: Saswata Mukherjee <[email protected]>
Signed-off-by: Jacob Baungård Hansen <[email protected]>

---------

Signed-off-by: Jacob Baungard Hansen <[email protected]>
Signed-off-by: Jacob Baungård Hansen <[email protected]>
Co-authored-by: Saswata Mukherjee <[email protected]>

* Tests: unique docker env name for tenant tests (#7038)

The e2e tests would occasionally fail due to non-unqiue docker environment
names. With this commit the tests are environments are given unique names
to avoid these failures.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* changed default 3m to 15m

Signed-off-by: Player256 <[email protected]>

* Fix docs (#7039)

Fix docs post #6539 merge.

Signed-off-by: Filip Petkovski <[email protected]>

* Revert "receive: upload compacted blocks if OOO enabled (#6974)" (#7053)

This reverts commit 7b8eb86c0ff3b1144aa1cea392806afa40a4cdf8.

Proper way to handle this is to disable vertical compaction. I am trying
to add this functionality here:
https://github.com/prometheus/prometheus/pull/13393

Signed-off-by: Giedrius Statkevičius <[email protected]>

* [CHORE] adding thanos upload-snapshot command (#6884)

Signed-off-by: Nicolas Takashi <[email protected]>

* fix docs error

Signed-off-by: Kartikay <[email protected]>

* cmd: make bucket upload command take lset from flags (#7059)

Signed-off-by: Michael Hoffmann <[email protected]>

* CHANGELOG: mark 0.34 as in progress

Signed-off-by: Michael Hoffmann <[email protected]>

* VERSION: cut release 0.34.0-rc.0

Signed-off-by: Michael Hoffmann <[email protected]>

* UI: Don't always force tracing (#7062)

Forced tracing was.. Forced true always, even if the checkbox in the UI
to enable tracing was not actually checked.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* go.mod: update Prometheus version (#7047)

Update Prometheus version to include
https://github.com/prometheus/prometheus/pull/13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Make RetryError and HaltError able to be fetched for root cause (#7043)

* Make RetryError and HaltError able to be fetched for root cause

Signed-off-by: Alex Le <[email protected]>

* Added unit test

Signed-off-by: Alex Le <[email protected]>

* fix lint

Signed-off-by: Alex Le <[email protected]>

* fixed IsRetryError and IsHaltError functions

Signed-off-by: Alex Le <[email protected]>

---------

Signed-off-by: Alex Le <[email protected]>

* receive: disable overlapping compaction

Use the new TSDB flag to disable overlapping compaction to fix OOO
samples handling in the Receive component.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* CI: Ensure static react-app is checked in (#7063)

* CI: Ensure static react-app is checked in

With this commit the CI system should fail if changes to the react-app
has been made without checking in the changes.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Add `react-app` as dependency `check-react-app`

To ensure the react-app is rebuilt before checking for changes.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

---------

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Receive: refactor handler for improved readability and organization (#6898)

* [wip] First checkpoint

Signed-off-by: Douglas Camata <[email protected]>

* [wip] Second checkpoint

All tests passing, unit and e2e.

Signed-off-by: Douglas Camata <[email protected]>

* Small random refactors

Signed-off-by: Douglas Camata <[email protected]>

* Add some useful trace tags

Signed-off-by: Douglas Camata <[email protected]>

* Concurrent and traced local writes

Signed-off-by: Douglas Camata <[email protected]>

* Improve variable names in remote writes

Signed-off-by: Douglas Camata <[email protected]>

* Rename `newFanoutForward` function

Signed-off-by: Douglas Camata <[email protected]>

* More refactors

Signed-off-by: Douglas Camata <[email protected]>

* Fix linting issue

Signed-off-by: Douglas Camata <[email protected]>

* Add a quorum test with sloppy quorum

Signed-off-by: Douglas Camata <[email protected]>

* [wip] Try to make retries work

Signed-off-by: Douglas Camata <[email protected]>

* [wip] Checkpoint: wait group still hanging

Signed-off-by: Douglas Camata <[email protected]>

* Some refactors

Signed-off-by: Douglas Camata <[email protected]>

* Add some commented code so I don't lose it

Signed-off-by: Douglas Camata <[email protected]>

* Adapt tests

Signed-off-by: Douglas Camata <[email protected]>

* Remove sloppy quorum code

Signed-off-by: Douglas Camata <[email protected]>

* Move some code around

Signed-off-by: Douglas Camata <[email protected]>

* Remove even more leftover of sloppy quorum

Signed-off-by: Douglas Camata <[email protected]>

* Extract a type to hold function params

Signed-off-by: Douglas Camata <[email protected]>

* Remove unused struct field

Signed-off-by: Douglas Camata <[email protected]>

* Remove useless variable

Signed-off-by: Douglas Camata <[email protected]>

* Remove type that wasn't used enough

Signed-off-by: Douglas Camata <[email protected]>

* Delete function to tighten up max buffered responses

Signed-off-by: Douglas Camata <[email protected]>

* Add comments to some functions

Signed-off-by: Douglas Camata <[email protected]>

* Fix peer up check

Signed-off-by: Douglas Camata <[email protected]>

* Fix size of replication tracking slices

Signed-off-by: Douglas Camata <[email protected]>

* Rename context

Signed-off-by: Douglas Camata <[email protected]>

* Don't do local writes concurrently

Signed-off-by: Douglas Camata <[email protected]>

* Remove extra error logging

Signed-off-by: Douglas Camata <[email protected]>

* Fix syntax after merge

Signed-off-by: Douglas Camata <[email protected]>

* Add missing methods to peersContainer

Signed-off-by: Douglas Camata <[email protected]>

* Fix handler test

Signed-off-by: Douglas Camata <[email protected]>

* Reset peers state on hashring changes

Signed-off-by: Douglas Camata <[email protected]>

* Handle PR comment regarding waitgroup

Signed-off-by: Douglas Camata <[email protected]>

* Set span tags to help debug

Signed-off-by: Douglas Camata <[email protected]>

* Fix concurrency issue

We close the request as soon as quorum is reached and leave a few Go routines running to finish replication and so cleanups.

This means that the context from the HTTP request is cancelled... which ends up also cancelling the pending replication requests.

Signed-off-by: Douglas Camata <[email protected]>

* Fix request ID middleware

Signed-off-by: Douglas Camata <[email protected]>

* Fix `distributeTimeseriesToReplicas` comment

Signed-off-by: Douglas Camata <[email protected]>

* Extract var with 1-indexed replication index

Signed-off-by: Douglas Camata <[email protected]>

* Rename methods in peersContainer interface

Signed-off-by: Douglas Camata <[email protected]>

* Make peerGroup `getConnection` check if peers are up

Signed-off-by: Douglas Camata <[email protected]>

* Remove yet one more not useful log

Signed-off-by: Douglas Camata <[email protected]>

* Remove logger from `h.sendWrites`

Signed-off-by: Douglas Camata <[email protected]>

---------

Signed-off-by: Douglas Camata <[email protected]>

* Upgrade grpc to 1.57.2 (#7078)

1、In the replace of go.mod, due to weaveworks/common#239, The grpc version is 1.45.0, but there are vulnerabilities in this version. In order to fix CVE-2023-44478, the grpc version needs to be upgraded to 1.57.2
2、In order to upgrade GRPC, the version of weaveworks/common also needs to be upgraded, otherwise the build will fail

Signed-off-by: hanyuting8 <[email protected]>

* Store: acceptance test for proxy store (#7084)

* Add basic acceptance tests for proxy store
* Fix bug where invalid requests got ignored because of partial response
  strategy

Signed-off-by: Michael Hoffmann <[email protected]>

* Fix lazy postings with zero length (#7083)

* fix lazy postings with zero length

Signed-off-by: Ben Ye <[email protected]>

* changelog

Signed-off-by: Ben Ye <[email protected]>

* unit tests

Signed-off-by: Ben Ye <[email protected]>

* fix doc

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* Store: fix label values edge case (#7082)

If the requested label is an external label and we have series matchers
we should only return results if the series matchers actually match a
series.

Signed-off-by: Michael Hoffmann <[email protected]>

* VERSION: cut release 0.34.0-rc.1

Signed-off-by: Michael Hoffmann <[email protected]>

* receive: race condition in handler Close() when stopped early (#7087)

Receiver hangs waiting for the HTTP Hander to shutdown if an error occurs
before Handler is initialized. This might happen, for example, if the hashring
is too small for a given replication factor.

Signed-off-by: Mikhail Nozdrachev <[email protected]>

* receive: use async remote writing (#7045)

* CHANGELOG: cut release 0.34 (#7095)

Signed-off-by: Michael Hoffmann <[email protected]>

* Stores: convert tests to not rely on slice labels (#7098)

Signed-off-by: Michael Hoffmann <[email protected]>

* all: get rid of query pushdown to simplify query path (#7014)

Signed-off-by: Michael Hoffmann <[email protected]>

* Store: dont rely on slice labels continued

Signed-off-by: Michael Hoffmann <[email protected]>

* Update prometheus/prometheus (#7096)

* Update prometheus/prometheus

This commit updates prometheus/prometheus to latest main (60b6266e).

Signed-off-by: Filip Petkovski <[email protected]>

* Fix file discovery

Signed-off-by: Filip Petkovski <[email protected]>

---------

Signed-off-by: Filip Petkovski <[email protected]>

* receive/handler: fix locking twice (#7112)

Fix bug introduced in https://github.com/thanos-io/thanos/pull/6898: we
were RLock()ing twice. This leads to a deadlock in some situations.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* fix minio store gateway err (#7114)

Signed-off-by: Kartikay <[email protected]>

* receive/handler: do not double lock (#7124)

markPeerUnavailable was always taking a lock and in one case we were
calling it with a lock already taken. Fix this.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* default to alertmanager v2 api (#7123)

Signed-off-by: Jake Keeys <[email protected]>

* Receive: dont rely on slice labels (#7100)

Signed-off-by: Michael Hoffmann <[email protected]>

* Upgrade grpc to 1.57.2 (#7078)

1、In the replace of go.mod, due to weaveworks/common#239, The grpc version is 1.45.0, but there are vulnerabilities in this version. In order to fix CVE-2023-44478, the grpc version needs to be upgraded to 1.57.2
2、In order to upgrade GRPC, the version of weaveworks/common also needs to be upgraded, otherwise the build will fail

Signed-off-by: hanyuting8 <[email protected]>
Signed-off-by: Michael Hoffmann <[email protected]>

* VERSION: cut release 0.34.1

Signed-off-by: Michael Hoffmann <[email protected]>

* docs: update helm installation instruction

the prometheus helm chart is a community maintained chart since a few
years. With that, the old example pointed to an old chart and the
provided example values aren't also working anymore.

This update the documentation.

Signed-off-by: Mario Constanti <[email protected]>

* docs: fix link (#7129)

The link has moved to another since Cisco bought Banzai Cloud.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* docs: run make docs for helm installation instruction

Signed-off-by: Mario Constanti <[email protected]>

* Fixing log line for remote engine in debug mode (#7133)

Signed-off-by: Pedro Tanaka <[email protected]>

* Adding new method on BucketedBytes to expose used memory (#7137)

* Adding new method on bucketed bytes to expose used

Signed-off-by: Pedro Tanaka <[email protected]>

* Removing interface, using RWMutex

Signed-off-by: Pedro Tanaka <[email protected]>

---------

Signed-off-by: Pedro Tanaka <[email protected]>

* Adding InfraCloud as Enterprise support partner (#7141)

* adding InfraCloud as Enterprise support partner

Signed-off-by: Chetan Deshmukh <[email protected]>

* replaced svg file to match layout

Signed-off-by: Chetan Deshmukh <[email protected]>

* added alt-text and horizontal image

Signed-off-by: Chetan Deshmukh <[email protected]>

---------

Signed-off-by: Chetan Deshmukh <[email protected]>

* docs: fix link (#7129)

The link has moved to another since Cisco bought Banzai Cloud.

Signed-off-by: Giedrius Statkevičius <[email protected]>
Signed-off-by: Michael Hoffmann <[email protected]>

* cache: attach object storage hash to iter key (#6880)

Attach object storage hash to the iter key so that it would be possible
to reuse the same cache storage e.g. Redis for different buckets.
Without this, the results are funny to say the least if you accidentally
attempt to do that. Thus, let's add the hash to reduce the possibility
of an accident for our users.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Add support for extended promql functions in rule (#7105)

Adds a flag to register the extended promql functions supported by the thanos
query engine when running the rule component.  This will allow rule config
files containing query expressions with (xrate / xincrease / xdelta) to pass
validation.  This will only work if the query endpoint in use is running the
thanos engine.

Signed-off-by: Samuel Dufel <[email protected]>

* Extended func support - doc update (#7161)

* Add support for extended promql functions in rule

Adds a flag to register the extended promql functions supported by the thanos
query engine when running the rule component.  This will allow rule config
files containing query expressions with (xrate / xincrease / xdelta) to pass
validation.  This will only work if the query endpoint in use is running the
thanos engine.

Signed-off-by: Samuel Dufel <[email protected]>

* Update rendered docs with added flag

Signed-off-by: Samuel Dufel <[email protected]>

---------

Signed-off-by: Samuel Dufel <[email protected]>

* Copy labels from remote instant queries (#7151)

Similar to https://github.com/thanos-io/thanos/pull/6957, we should copy
labels from remote instant queries so that memory does not get overwritten
when processing series in a central engine.

Signed-off-by: Filip Petkovski <[email protected]>

* e2e/query_frontend: add tests for explain/analyze (#7160)

Adding tests for explain/analyze with QFE. Will add fixes as separate
PR.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* cache/caching_bucket: add path to hash (#7158)

Add path to the hash. This allows identifying difference instances by
different config paths.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Allow using different listing strategies (#7134)

* Allow using different listing strategies

Signed-off-by: Filip Petkovski <[email protected]>

* Expose flags for block list strategy

Signed-off-by: Filip Petkovski <[email protected]>

* Run make docs

Signed-off-by: Filip Petkovski <[email protected]>

* Fix whitespace

Signed-off-by: Filip Petkovski <[email protected]>

* Add CHANGELOG entry

Signed-off-by: Filip Petkovski <[email protected]>

---------

Signed-off-by: Filip Petkovski <[email protected]>

* cache: implement the circuit breaker pattern for asynchronous set operations in the cache client (#7010)

* Implement the circuit breaker pattern for asynchronous set operations in the cache client

Signed-off-by: Xiaochao Dong (@damnever) <[email protected]>

* Add feature flag for circuitbreaker

Signed-off-by: Xiaochao Dong (@damnever) <[email protected]>

* Sync docs

Signed-off-by: Xiaochao Dong (@damnever) <[email protected]>

* Skip configuration validation if the circuit breaker is disabled

Signed-off-by: Xiaochao Dong (@damnever) <[email protected]>

* Make lint happy

Signed-off-by: Xiaochao Dong (@damnever) <[email protected]>

* Abstract the logic of the circuit breaker

Signed-off-by: Xiaochao Dong (@damnever) <[email protected]>

---------

Signed-off-by: Xiaochao Dong (@damnever) <[email protected]>

* queryfrontend: fix analysis after API changes

Fix the analysis functionality with query-frontend after the recent
changes. Added tests for this.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* bugfix: lazy posting optimization with wrong cardinality for estimation (#7122)

* bugfix: catch lazy posting optimization using wrong cardinality for estimation

Signed-off-by: Ben Ye <[email protected]>

* update changelog

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* *: properly treat native histogram deduplication in chunk series merger

We have detected a problem in the chunk seriers merger where it will
panic in case it encounters native histogram chunks.
I am using thanos as a library for a project and wanted to use the
penalty function to dedup blocks from Prometheus instances.

Signed-off-by: Pedro Tanaka <[email protected]>

* Query UI: Add tenant box (#6867)

* Query UI: Add tenant box

With this commit as tenant box is added to the query UI. It can be used
to specify which tenant to use when making a query.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Re-compile static react app

Recompiles the static react app as now needed following:
https://github.com/thanos-io/thanos/pull/6900

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Move changelog item to appropiate future release

After merging it was under the 0.34 release.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Move query path tenancy proposal to done

Signed-off-by: Jacob Baungard Hansen <[email protected]>

---------

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* receive: add support for globbing tenant specifiers (#7155)

We want to be able to route all tenants which begin with certain letters
to some receivers so we need to have some kind of globbing/regex support
in the hashring. This PR adds that functionality. We've been using this
in prod successfully.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* .circleci: bump setup_docker_version version (#7177)

The current image is deprecated. See
https://discuss.circleci.com/t/remote-docker-image-deprecations-and-eol-for-2024/50176.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Unhide distributed execution mode

This commit exposes the distributed query execution mode to end-users by unhiding the
flag used to toggle this feature.

The commit also adds documentation on when the mode is appropriate to be used.

Signed-off-by: Filip Petkovski <[email protected]>

* Add changelog entry

Signed-off-by: Filip Petkovski <[email protected]>

* cortex/querier: fix analysis merging (#7179)

We were not merging analysis properly - mergo was overwriting data.
Instead of using a whole library for this, just write two small
functions and use them. Add test to cover this.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Fix docs

Fixes docs formatting and updates the distributed execution link to the done proposal.

Signed-off-by: Filip Petkovski <[email protected]>

* Added platformengineers

Signed-off-by: Munir Khakhi <[email protected]>

* Added platformengineers (#7181)

Signed-off-by: Munir Khakhi <[email protected]>

* Bump google.golang.org/protobuf to v1.33.0 (#7191)

This PR bumps the version of google.golang.org/protobuf to v1.33.0 fix a
potential vulnerability in the protojson.Unmarhsl function [1] that can
occure when unmarshaling a message with a protobuf value.

Even if the function isn't used directly in Thanos it would be safer to
just bump it directly.

[1] https://pkg.go.dev/vuln/GO-2024-2611

Signed-off-by: Daniel Mellado <[email protected]>

* fix: make responsive support page and change size of platform-engineer logo

fix: add anchor tag to all images
Signed-off-by: Payal17122000 <[email protected]>

* downsample: retry objstore related errors

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

* downsample: retry objstore related errors

Signed-off-by: Vasiliy Rumyantsev <[email protected]>

* rule: do not turn off if resolving fails (#7192)

Do not turn off Ruler if resolving fails. We can still (try to) evaluate
rules even if Alertmanager is not available.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Query UI: Only show tenant box with enforcement on (#7186)

With this commit we only show the tenant-ui box when enforcement of
tenancy is on, as it is not needed otherwise.

Signed-off-by: Jacob Baungard Hansen <[email protected]>

* Reloader: Add support for watching and decompressing Prometheus configuration directories (#7199)

Signed-off-by: Daniel Hrabovcak <[email protected]>

* [FEAT] Adding blog post (#7202)

Signed-off-by: Helia Barroso <[email protected]>
Co-authored-by: Helia Barroso <[email protected]>

* storepb: make ServerAsClient channels unbuffered

Signed-off-by: Michael Hoffmann <[email protected]>

* Add support for TSDB selector in querier (#7200)

* Add support for TSDB selector in querier

This PR allows using the query distributed mode against a set of multi-tenant receivers
as described in https://github.com/thanos-io/thanos/blob/main/docs/proposals-done/202301-distributed-query-execution.md#distributed-execution-against-receive-components.

The feature is enabled by a selector.relabel-config flag in the Query component
which allows it to select a subset of TSDBs to query based on their external labels.

Signed-off-by: Filip Petkovski <[email protected]>

* Add CHANGELOG entry and fix docs

Signed-off-by: Filip Petkovski <[email protected]>

* Fix tests

Signed-off-by: Filip Petkovski <[email protected]>

* Add comments

Signed-off-by: Filip Petkovski <[email protected]>

* Add test case for MatchersForLabelSets

Signed-off-by: Filip Petkovski <[email protected]>

* Fix failing test

Signed-off-by: Filip Petkovski <[email protected]>

* Use an unbuffered channel

Signed-off-by: Filip Petkovski <[email protected]>

* Change flag description

Signed-off-by: Filip Petkovski <[email protected]>

* Remove parameter from ServerAsClient

Signed-off-by: Filip Petkovski <[email protected]>

---------

Signed-off-by: Filip Petkovski <[email protected]>

* Update thanos-io/promql-engine (#7215)

* Update thanos-io/promql-engine

This commit updates the promql-engine module to latest main and modifies
to remote engine based on the breaking change.

Signed-off-by: Filip Petkovski <[email protected]>

* Fix lint

Signed-off-by: Filip Petkovski <[email protected]>

---------

Signed-off-by: Filip Petkovski <[email protected]>

* expose NewPromSeriesSet (#7214)

Signed-off-by: Ben Ye <[email protected]>

* [CHORE] adding auto GOMEMLIMIT flag (#7223)

Co-authored-by: Filip Petkovski <[email protected]>

* bump objstore package version to latest main (#7228)

Signed-off-by: Ben Ye <[email protected]>

* Query-frontend: fix missing redis username config (#7224)

* add username cfg to rueidis client

Signed-off-by: Thibault Mange <[email protected]>

* update changelog

Signed-off-by: Thibault Mange <[email protected]>

---------

Signed-off-by: Thibault Mange <[email protected]>

* UI: Showing Block Size Stats (#7233)

* feat(ui): added BlockSizeStats calculation to blocks page

A block can have a list of contained files set in `.thanos.files`.
If the `files` array is set, all referenced files with `size_bytes` set are counted:
- sum of all `chunk/*` file sizes
- size of index file
- total size (sum of both)

Shows statistics about the selected block in the block details view:
- Total size of block
- Size of index (and percentage of total)
- Size of all chunks (and percentage of total)
- Daily growth, based on total size and block duration

Output is humanized up to Pebibytes and fixed to two decimal places;
raw bytes are accessible through mouse over / title text.

Signed-off-by: Markus Möslinger <[email protected]>

* feat(ui): added aggregated BlockSizeStats to blocks row title

Added total size of all blocks from a source to the row title, beneath the source name.

The shown total size is humanized up to pebibytes and fixed to two decimal places;
raw bytes value is accessible through mouse over / title text.

The shown value will refresh with selected compaction levels, but doesn't take block filter into account.

I thought about showing daily growth as well, but just summing all milliseconds of all blocks doesn't work with overlapping blocks / multiple resolutions.

Signed-off-by: Markus Möslinger <[email protected]>

* chore(docs): added UI block size PR to CHANGELOG.md

Signed-off-by: Markus Möslinger <[email protected]>

* chore(ui): removed comments

Automatic code formatting duplicated some comments near import statements.

Signed-off-by: Markus Möslinger <[email protected]>

---------

Signed-off-by: Markus Möslinger <[email protected]>

* Fix lazy expanded postings cache and bug of non equal matcher (#7220)

* fix lazy expanded postings cache and bug of non equal matcher with non existent values

Signed-off-by: Ben Ye <[email protected]>

* test case for remove keys noop

Signed-off-by: Ben Ye <[email protected]>

* add promqlsmith fuzz test

Signed-off-by: Ben Ye <[email protected]>

* update

Signed-off-by: Ben Ye <[email protected]>

* changelog

Signed-off-by: Ben Ye <[email protected]>

* fix go mod

Signed-off-by: Ben Ye <[email protected]>

* rename test

Signed-off-by: Ben Ye <[email protected]>

* fix series request timestamp

Signed-off-by: Ben Ye <[email protected]>

* skip e2e test

Signed-off-by: Ben Ye <[email protected]>

* handle non lazy expanded case

Signed-off-by: Ben Ye <[email protected]>

* update comment

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* Bump Prometheus to include new label regex optimization (#7232)

* bump Prometheus version to include new label matcher regex value optimization

Signed-off-by: Ben Ye <[email protected]>

* update

Signed-off-by: Ben Ye <[email protected]>

* fix again

Signed-off-by: Ben Ye <[email protected]>

* include latest fix

Signed-off-by: Ben Ye <[email protected]>

* update go mod

Signed-off-by: Ben Ye <[email protected]>

* fix explain test

Signed-off-by: Ben Ye <[email protected]>

* fix test again

Signed-off-by: Ben Ye <[email protected]>

* update again

Signed-off-by: Ben Ye <[email protected]>

* update

Signed-off-by: Ben Ye <[email protected]>

* fix tests so far

Signed-off-by: Ben Ye <[email protected]>

* fix compactor tests

Signed-off-by: Ben Ye <[email protected]>

* use own out of order chunk index

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* update docs for receive routing only with limits (#7241)

Signed-off-by: Alec Rajeev <[email protected]>

* docs: add thanoscon 2024 talks (#7243)

Signed-off-by: Michael Hoffmann <[email protected]>

* remove write method from Compactor interface (#7246)

Signed-off-by: Ben Ye <[email protected]>

* change shipper to not overwrite all external labels (#7247)

Signed-off-by: Ben Ye <[email protected]>

* fix(changelog): fix GOMEMLIMIT pull request reference

Signed-off-by: roth-wine <[email protected]>

* Update kakkoyun's affiliation (#7251)

* Added Shield in adopters (#7254)

* Added Shield in adopters

Signed-off-by: suhas.chikkanna.shield <[email protected]>

* Upload compatible image 

Signed-off-by: suhas-chikkanna <[email protected]>

---------

Signed-off-by: suhas.chikkanna.shield <[email protected]>
Signed-off-by: suhas-chikkanna <[email protected]>
Co-authored-by: suhas.chikkanna.shield <[email protected]>

* Tracing: added missing sampler types (#7231)

* added missing sampler types

Signed-off-by: Neeraj Nagure <[email protected]>

* added changelog entry

Signed-off-by: Neeraj Nagure <[email protected]>

* fixed changelog entry

Signed-off-by: Neeraj Nagure <[email protected]>

* Fixed changelog entry conflict

Signed-off-by: Neeraj Nagure <[email protected]>

---------

Signed-off-by: Neeraj Nagure <[email protected]>

* fix query_test when --race enabled (#7258)

Signed-off-by: Yi Jin <[email protected]>

* go.mod: bump promql-engine (#7263)

Bump promql-engine version to include samples counting.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Fix 7244 error targets page (#7245)

* added UNKNOWN to TargetHealth_value at targets proto

Signed-off-by: Tidhar Klein Orbach <[email protected]>

* added TargetHealth_value UNKNOWN to rpc.pb.go

Signed-off-by: Tidhar Klein Orbach <[email protected]>

---------

Signed-off-by: Tidhar Klein Orbach <[email protected]>

* clarify documentation around selecor.relabel-config option

Signed-off-by: notafile <[email protected]>

* clarify writing around sharding

Signed-off-by: notafile <[email protected]>

* don't halt compaction due to overlapping sources when vertical compaction is enabled (#7225)

Signed-off-by: Ben Ye <[email protected]>

* Propagate the query plan

* Serialize the plan for remote executions

latest engine

Signed-off-by: Pedro Tanaka <[email protected]>

Propagate marshaled plan and introduce optimizer

Propagating the query plan in the remote engine requests and introduce new SetProjectionColumns optimizer

Signed-off-by: Pedro Tanaka <[email protected]>

* Fixing passing down of plan

Signed-off-by: Pedro Tanaka <[email protected]>

* go mod tidy

Signed-off-by: Pedro Tanaka <[email protected]>

* avoid panics

Signed-off-by: Pedro Tanaka <[email protected]>

* delete dev file

Signed-off-by: Pedro Tanaka <[email protected]>

* undo small refactor

Signed-off-by: Pedro Tanaka <[email protected]>

* improve test

Signed-off-by: Pedro Tanaka <[email protected]>

---------

Signed-off-by: Pedro Tanaka <[email protected]>

generating protos

Signed-off-by: Pedro Tanaka <[email protected]>

fixing v1

Signed-off-by: Pedro Tanaka <[email protected]>

delete unused method

Signed-off-by: Pedro Tanaka <[email protected]>

Set projection labels after distributing queries

* removing second precision engine, upstream already truncates

Signed-off-by: Pedro Tanaka <[email protected]>

* Passing the plan along as the query in remote executions

Signed-off-by: Pedro Tanaka <[email protected]>

* Using proper constructors passing the query plan

Signed-off-by: Pedro Tanaka <[email protected]>

* Refactor query creation from plan

Signed-off-by: Pedro Tanaka <[email protected]>

* fallback in case we cant use plan

Signed-off-by: Pedro Tanaka <[email protected]>

* refactor, add tests

Signed-off-by: Pedro Tanaka <[email protected]>

* Refactor to method

Signed-off-by: Pedro Tanaka <[email protected]>

* last nits

Signed-off-by: Pedro Tanaka <[email protected]>

* api/ui: show peak/total samples in analyze (#7269)

Show the new peak/total fields in analyze output next to each operator.
Add tooltips to explain what is the meaning of each field.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* receive/handler: implement tenant label splitting (#7256)

* receive/handler: implement tenant label splitting

Implement splitting incoming HTTP requests along some label inside of
the timeseries themselves. This functionality is useful when you have
one big application exposing lots of series and, for instance, you have
a label `team` that identifies different owners of metrics in that
application. Then using this you can use that `team` label to have
different tenants in Thanos.

Only negative thing that I could spot is that if after splitting one of
the requests fails then that code is used for all tenants and that skews
the Receiver metrics a little bit. I think that can be left as a TODO
task.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* test/e2e: add more receiver tests

Signed-off-by: Giedrius Statkevičius <[email protected]>

* thanos/receive: note that splitting takes precendence over HTTP

Signed-off-by: Giedrius Statkevičius <[email protected]>

* thanos/receive: fix typo

Signed-off-by: Giedrius Statkevičius <[email protected]>

---------

Signed-off-by: Giedrius Statkevičius <[email protected]>
Signed-off-by: Giedrius Statkevičius <[email protected]>

* query: fixing dedup iterator when working on mixed sample types (#7271)

* query: fixing dedup iterator when working on mixed sample types

There was a panic in case the dedupiterator worked on two chunks with both Native Histograms and Float (XOR encoded).

Co-authored-by: Sebastian Rabenhorst <[email protected]>
Signed-off-by: Pedro Tanaka <[email protected]>

* Adding changelog

Signed-off-by: Pedro Tanaka <[email protected]>

* fixing lint

Signed-off-by: Pedro Tanaka <[email protected]>

* removing comments

Signed-off-by: Pedro Tanaka <[email protected]>

* Fixing repro test case

Signed-off-by: Pedro Tanaka <[email protected]>

* fixing initialization

Signed-off-by: Pedro Tanaka <[email protected]>

* fixing changelog

Signed-off-by: Pedro Tanaka <[email protected]>

* adding header to new file

Signed-off-by: Pedro Tanaka <[email protected]>

* using t.Run

Signed-off-by: Pedro Tanaka <[email protected]>

* fixing ordering of samples in tests

Signed-off-by: Pedro Tanaka <[email protected]>

---------

Signed-off-by: Pedro Tanaka <[email protected]>
Co-authored-by: Sebastian Rabenhorst <[email protected]>

* change the reflect package to an unsafe package (#7143)

- as 'reflect.String.Header' is deprecated, it is replaced with an unsafe package.

Signed-off-by: Youngjun <[email protected]>

* Receive: fix issue-7248 with parallel receive_forward (#7267)

* Receive: fix issue-7248 by introducing a worker pool

Signed-off-by: Yi Jin <[email protected]>

* fix unit test bug

Signed-off-by: Yi Jin <[email protected]>

* fix CLI flags not pass into the receive handler

Signed-off-by: Yi Jin <[email protected]>

* address comments

Signed-off-by: Yi Jin <[email protected]>

* init context in constructor

Signed-off-by: Yi Jin <[email protected]>

---------

Signed-off-by: Yi Jin <[email protected]>

* Fix incorrect comments (#7268)

Signed-off-by: Magiceses <[email protected]>

* [CHORE] adding user agent (#7281)

Signed-off-by: Nicolas Takashi <[email protected]>

* receive/multitsdb: do not delete not uploaded blocks (#7166)

* receive/multitsdb: do not delete not uploaded blocks

If a block hasn't been uploaded yet then tell the TSDB layer not to
delete them. This prevents a nasty race where the TSDB layer can delete
a block before the shipper gets to it. I saw this happen with a very
small block.

Signed-off-by: Giedrius Statkevičius <[email protected]>

* receive/multitsdb: change order

Signed-off-by: Giedrius Statkevičius <[email protected]>

* shipper/receive: just use a single lock

Signed-off-by: Giedrius Statkevičius <[email protected]>

---------

Signed-off-by: Giedrius Statkevičius <[email protected]>

* Compact: Replace group with resolution in ownsample metrics (#7283)

Compaction dowsnample metrics have too high a cardinality, causing metric
bloat on large installations. The group information is better suited to logs.
* Replace with a resolution label to reduce cardinality.

Fixes: #5841

Signed-off-by: SuperQ <[email protected]>

* Propagate warnings from instant queries

Warnings from remote instant queries get turned into errors, which
is a bug. It should be up to the root client to decide whether warnings
should be show as such, or converted to errors.

Signed-off-by: Filip Petkovski <[email protected]>

* Add CHANGELOG entry

Signed-off-by: Filip Petkovski <[email protected]>

* Receive: stop relying on grpc server config to set grpc client secure/skipVerify

Signed-off-by: Guillaume Lecerf <[email protected]>

* Show warnings in query frontend (#7289)

* Show warnings in query frontend

QFE currently does not parse warnings from downstream queriers.
This commit fixes that by adding the field to proto messages and
modifies the merge function to take warnings into account.

Signed-off-by: Filip Petkovski <[email protected]>

* Add CHANGELOG entry

Signed-off-by: Filip Petkovski <[email protected]>

* Omit empty warnings

Signed-off-by: Filip Petkovski <[email protected]>

---------

Signed-off-by: Filip Petkovski <[email protected]>

* Optimize empty posting check in lazy posting (#7298)

* change lazy postings empty posting check to use cardinality

Signed-off-by: Ben Ye <[email protected]>

* update lazy posting test

Signed-off-by: Ben Ye <[email protected]>

---------

Signed-off-by: Ben Ye <[email protected]>

* Sidecar: mark as unqueryable if prometheus is down (#7297)

If the prometheus that belongs to a sidecar is down we dont need to
query the sidecar. This PR makes it so that we take the sidecar out of
the endpoint set then. We do the same for all other store APIs by
retuning an error in the info/Info gRPC call if they are marked as not
ready.

Signed-off-by: Michael Hoffmann <[email protected]>

* [CHORE] considering X-Forwarded-For on HTTP Logging (#7303)

Signed-off-by: Nicolas Takashi <[email protected]>

* Query|Receiver: Do not log full request on ProxyStore by default (#7305)

* Query|Receiver|Store: Do not log full request on ProxyStore by default

We had a problem on our production where a sudden increase in requests with long matchers was putting our receivers under a lot of pressure.
Upon checking pro…
jnyi pushed a commit to jnyi/thanos that referenced this pull request Oct 17, 2024
Update Prometheus version to include
prometheus/prometheus#13242 which is important
for me - it unblocks further postings work.

Signed-off-by: Giedrius Statkevičius <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants