Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ACM Obs bot] Bump stolostron/thanos to v0.35.1 #128

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
852 commits
Select commit Hold shift + click to select a range
d3a4684
CI: increase e2e test parallelism (#6875)
MichaHoffmann Nov 19, 2023
68bef3f
compact: hook nodownsamplemarkfilter into filters chain (#6893)
GiedriusS Nov 19, 2023
2ed48f7
e2e/compact: fix assertion values (#6909)
GiedriusS Nov 20, 2023
67545e6
exposes asyncOperationProcessor (#6908)
yeya24 Nov 20, 2023
19bbe2e
Removed the gitpod from the contribution.md (#6907)
MeenuyD Nov 20, 2023
5c1169c
.circleci: cache tool deps (#6910)
GiedriusS Nov 20, 2023
0a4f5ae
MAINTAINERS.md: add myself as maintainer (#6911)
MichaHoffmann Nov 20, 2023
7efeb2a
blog: Introducing ThanosCon in Paris KubeCon EU 2024 (#6912)
saswatamcode Nov 20, 2023
c67f5a7
Update 2023-20-11-thanoscon.md (typo) (#6915)
bwplotka Nov 20, 2023
edfdc13
Added info about ThanosCon to website and Readme. (#6917)
bwplotka Nov 21, 2023
053bd4a
Objstore: Bump Objstore for Azure Workload Identity support (#6891)
rikhil-s Nov 15, 2023
d7ad77e
update compactor backlog doc for checking halt (#6906)
yeya24 Nov 22, 2023
4db836f
Update LabyrintLabs logo
martinhaus Nov 23, 2023
b5ff094
Merge pull request #6920 from lablabs/main
fpetkovski Nov 23, 2023
dc79d57
Merge pull request #6919 from MichaHoffmann/mhoffm-release-0-33-cherr…
MichaHoffmann Nov 24, 2023
023faa2
Support reload using signal (#6453)
simonpasquier Nov 24, 2023
9d6f82e
Support float histogram in store gateway (#6925)
yeya24 Nov 27, 2023
5f9f166
chore: add truelayer to the adopters (#6933)
mercxry Nov 27, 2023
8ffb9da
Fetcher: Add a BlockIDsFetcher Interface to BaseFetcher (#6902)
wenxu1024 Nov 27, 2023
0d254c9
Update hugo file (#6927)
kartikaysaxena Nov 28, 2023
d69430d
Updates busybox SHA (#6897) (#6937)
MichaHoffmann Nov 28, 2023
463dd48
Fix hotstar logo (#6938)
kartikaysaxena Nov 28, 2023
a2717d8
errutil: fix deadlock
GiedriusS Dec 1, 2023
e78091b
Merge pull request #6949 from thanos-io/fix_errutil_deadlock
MichaHoffmann Dec 1, 2023
7f734b9
update runtime/CloseWithErrCapture comment (#6952)
sagnik3788 Dec 3, 2023
2de1266
Added a new flag for maximum retention bytes for thanos (#6944)
kartikaysaxena Dec 3, 2023
5191d72
fix store gateway span name (#6953)
yeya24 Dec 4, 2023
42f4de4
Upgrade prometheus to latest main (#6950)
yeya24 Dec 4, 2023
28407d6
Improve filtered index cache filtering (#6955)
yeya24 Dec 4, 2023
e578b1f
store: fix misc label_value issues related to external labels (#6879)
MichaHoffmann Dec 5, 2023
a307d60
receive: fix adding fields to logger
GiedriusS Dec 5, 2023
1bcfec0
Merge pull request #6964 from thanos-io/handler_fix_tags
MichaHoffmann Dec 5, 2023
36ce448
Copy labels coming from remote engines (#6957)
fpetkovski Dec 6, 2023
5cef7d9
Add tracing index cache (#6954)
yeya24 Dec 6, 2023
e7aecb4
Change order of log for finished compacting blocks (#6966)
danielblando Dec 7, 2023
07e43ca
Update MAINTAINERS.md (#6967)
matej-g Dec 7, 2023
5d4fc6d
Add `keep_firing_for` support to alerting rule (#6943)
JHeilCoveo Dec 7, 2023
32f227a
Use registerer for gRPC opts and endpoints (#6971)
fpetkovski Dec 8, 2023
7b8eb86
receive: upload compacted blocks if OOO enabled (#6974)
GiedriusS Dec 12, 2023
fc1a6ed
Add streaming series limit at block series client (#6972)
yeya24 Dec 12, 2023
61dc2b9
Updated the defaultChecked property in checkbox element (#6976)
lpreethvika Dec 14, 2023
88f7119
Update prometheus to d0c2d9c (#6978)
fpetkovski Dec 14, 2023
96b8dba
Updates busybox SHA (#6982)
github-actions[bot] Dec 15, 2023
1fbd4e6
Updates busybox SHA (#6982)
github-actions[bot] Dec 15, 2023
4aea454
VERSION: Bump version for release
MichaHoffmann Dec 17, 2023
0f025f1
Merge pull request #6986 from thanos-io/mhoffm-release-0-33
MichaHoffmann Dec 17, 2023
5e672e5
Merge remote-tracking branch 'origin/main' into merge-release-0.33-to…
MichaHoffmann Dec 18, 2023
480c8d9
Merge pull request #6992 from MichaHoffmann/merge-release-0.33-to-main
MichaHoffmann Dec 19, 2023
a900cb5
rule: native histogram support (#6390)
rabenhorst Dec 20, 2023
b16b71d
mdox ignore checking twitter urls (#7001)
yeya24 Dec 21, 2023
d37b686
Updated Grofers logo (#7006)
kartikaysaxena Dec 21, 2023
bd7accb
TraceID : Fetching TraceID (#6973)
Vanshikav123 Dec 22, 2023
d27365c
docs: add promcon 2023 thanos talks
MichaHoffmann Dec 24, 2023
ae324c2
Merge pull request #7008 from MichaHoffmann/mhoffm-add-promcon-2023-t…
MichaHoffmann Dec 24, 2023
2d6acc5
Added website page for companies who offer consultancy and enterprise…
kartikaysaxena Dec 24, 2023
665e643
Lazy downloaded index header (#6984)
yeya24 Dec 24, 2023
a59a3ef
tests: use remote write in query frontend tests (#6998)
pawarpranav83 Dec 25, 2023
ed8a317
query-frontend: Added support of auto_discovery for memcached (#7004)
xBazilio Dec 27, 2023
31850ab
Fix URI encoding of strings
kartikaysaxena Dec 26, 2023
ee9288f
Merge pull request #7009 from kartikaysaxena/url_template
MichaHoffmann Dec 27, 2023
e77caa8
ui: enable partial response strategy by default
Vanshikav123 Dec 13, 2023
61040a5
Merge pull request #6977 from Vanshikav123/patch-partialResponse
MichaHoffmann Dec 27, 2023
93840dc
Added negative offset check for caching queries (#7011)
pawarpranav83 Dec 28, 2023
3db9c63
Update MAINTAINERS.md (Bartek's company)
bwplotka Dec 29, 2023
d388b74
Merge pull request #7015 from thanos-io/bwplotka-patch-5
MichaHoffmann Dec 29, 2023
8aa07f6
store: add chunksize tests to acceptance tests
MichaHoffmann Dec 30, 2023
6d7abb5
added tasrie it services as support partner (#7023)
tasrieit Jan 1, 2024
0fc308c
Query Frontend: Add tenant label to metrics (#6887)
jacobbaungard Jan 2, 2024
20dc2d7
tests: use remote write in query frontend tests (#7017)
pawarpranav83 Jan 2, 2024
afb1895
resolved issue #7024
Pratham1812 Jan 2, 2024
7aad562
Merge pull request #7026 from Pratham1812/patch
fpetkovski Jan 2, 2024
08a14f3
QueryFrontend|Query: Create new arg to enable extended functions (#7028)
pedro-stanaka Jan 3, 2024
cf94c2f
Merge pull request #7018 from thanos-io/mhoffm-refactor-chunksize-acc…
MichaHoffmann Jan 3, 2024
b884c51
receive: respect forward timeout in http handler buckets (#7030)
GiedriusS Jan 4, 2024
6477c00
receive: do not leak grpc connections (#7031)
GiedriusS Jan 5, 2024
8b1e429
fix multi-tenancy link (#7032)
alecrajeev Jan 7, 2024
bccf54c
removing todo comments from query docs
harsh-ps-2003 Jan 8, 2024
8f664d9
Merge branch 'main' into docs
harsh-ps-2003 Jan 8, 2024
d37d87d
Merge pull request #7037 from harsh-ps-2003/docs
fpetkovski Jan 8, 2024
0cd95eb
Query: add optional tenancy enforcement (#6756)
jacobbaungard Jan 8, 2024
0e04118
Tests: unique docker env name for tenant tests (#7038)
jacobbaungard Jan 8, 2024
b35b11d
changed default 3m to 15m
Player256 Aug 3, 2023
7c99009
Merge pull request #6539 from Player256/main
fpetkovski Jan 8, 2024
7794d78
Fix docs (#7039)
fpetkovski Jan 8, 2024
41571e2
Revert "receive: upload compacted blocks if OOO enabled (#6974)" (#7053)
GiedriusS Jan 12, 2024
6fd0ef8
[CHORE] adding thanos upload-snapshot command (#6884)
nicolastakashi Jan 12, 2024
44147d6
fix docs error
kartikaysaxena Jan 13, 2024
ae93ed6
Merge pull request #7057 from kartikaysaxena/doc-fix
MichaHoffmann Jan 13, 2024
2dcfabe
cmd: make bucket upload command take lset from flags (#7059)
MichaHoffmann Jan 14, 2024
767bf60
CHANGELOG: mark 0.34 as in progress
MichaHoffmann Jan 13, 2024
427b9a1
Merge pull request #7055 from MichaHoffmann/mhoffm-mark-0.34-as-in-pr…
MichaHoffmann Jan 14, 2024
fc86cf5
VERSION: cut release 0.34.0-rc.0
MichaHoffmann Jan 14, 2024
6fb3ca1
Merge pull request #7061 from MichaHoffmann/mhoffm-cut-release-0.34.0…
MichaHoffmann Jan 15, 2024
a7e8a64
UI: Don't always force tracing (#7062)
jacobbaungard Jan 15, 2024
bee20b9
go.mod: update Prometheus version (#7047)
GiedriusS Jan 15, 2024
324846f
Make RetryError and HaltError able to be fetched for root cause (#7043)
alexqyle Jan 15, 2024
80a5ce6
receive: disable overlapping compaction
GiedriusS Jan 16, 2024
3de122f
CI: Ensure static react-app is checked in (#7063)
jacobbaungard Jan 16, 2024
a0ce64d
Merge pull request #7065 from vinted/multitsdb_overlapping
MichaHoffmann Jan 16, 2024
4a73fc3
Receive: refactor handler for improved readability and organization (…
douglascamata Jan 17, 2024
058f920
Upgrade grpc to 1.57.2 (#7078)
hanyuting8 Jan 21, 2024
6b18338
Store: acceptance test for proxy store (#7084)
MichaHoffmann Jan 22, 2024
e215fa5
Fix lazy postings with zero length (#7083)
yeya24 Jan 22, 2024
b4aee0e
Store: fix label values edge case (#7082)
MichaHoffmann Jan 23, 2024
df467f7
VERSION: cut release 0.34.0-rc.1
MichaHoffmann Jan 20, 2024
15a60f9
Merge pull request #7086 from MichaHoffmann/mhoffm-cut-release-0.34.0…
MichaHoffmann Jan 23, 2024
fce0fe2
receive: race condition in handler Close() when stopped early (#7087)
cincinnat Jan 24, 2024
daa34a5
receive: use async remote writing (#7045)
GiedriusS Jan 26, 2024
18d740f
CHANGELOG: cut release 0.34 (#7095)
MichaHoffmann Jan 26, 2024
1cf333e
Stores: convert tests to not rely on slice labels (#7098)
MichaHoffmann Jan 27, 2024
6a0a491
all: get rid of query pushdown to simplify query path (#7014)
MichaHoffmann Jan 29, 2024
2f861d8
Store: dont rely on slice labels continued
MichaHoffmann Jan 27, 2024
9eb6591
Merge remote-tracking branch 'origin/main' into merge-release-0.34-to…
MichaHoffmann Jan 29, 2024
925e31a
Merge pull request #7101 from MichaHoffmann/merge-release-0.34-to-main
MichaHoffmann Jan 29, 2024
13e1558
Merge pull request #7099 from MichaHoffmann/mhoffm-dont-use-slice-lab…
MichaHoffmann Jan 29, 2024
50ce7a2
Update prometheus/prometheus (#7096)
fpetkovski Jan 31, 2024
94f971b
receive/handler: fix locking twice (#7112)
GiedriusS Feb 1, 2024
37092db
fix minio store gateway err (#7114)
kartikaysaxena Feb 8, 2024
29831f8
receive/handler: do not double lock (#7124)
GiedriusS Feb 9, 2024
21ed9bb
default to alertmanager v2 api (#7123)
jakekeeys Feb 9, 2024
3da5c1c
Receive: dont rely on slice labels (#7100)
MichaHoffmann Feb 9, 2024
3b7951c
Upgrade grpc to 1.57.2 (#7078)
hanyuting8 Jan 21, 2024
4a4b669
VERSION: cut release 0.34.1
MichaHoffmann Feb 11, 2024
0bf17ae
docs: update helm installation instruction
bavarianbidi Feb 12, 2024
f28680c
docs: fix link (#7129)
GiedriusS Feb 12, 2024
8ffb953
Merge branch 'main' into update_helm_installation_instruction
bavarianbidi Feb 12, 2024
7640f0f
docs: run make docs for helm installation instruction
bavarianbidi Feb 12, 2024
f5ca5a8
Merge pull request #7132 from bavarianbidi/update_helm_installation_i…
fpetkovski Feb 12, 2024
e78d867
Fixing log line for remote engine in debug mode (#7133)
pedro-stanaka Feb 12, 2024
4a82ba7
Adding new method on BucketedBytes to expose used memory (#7137)
pedro-stanaka Feb 14, 2024
70c8eb6
Adding InfraCloud as Enterprise support partner (#7141)
chetanpdeshmukh Feb 15, 2024
8fa5ff9
docs: fix link (#7129)
GiedriusS Feb 12, 2024
4cf1559
Merge pull request #7131 from MichaHoffmann/mhoffm-cut-release-0.34.1
MichaHoffmann Feb 19, 2024
987fac6
cache: attach object storage hash to iter key (#6880)
GiedriusS Feb 19, 2024
8249048
Merge remote-tracking branch 'origin/main' into merge-release-0.34.1-…
MichaHoffmann Feb 20, 2024
40114ce
Merge remote-tracking branch 'origin/main' into merge-release-0.34.1-…
MichaHoffmann Feb 20, 2024
fc3b360
Merge pull request #7150 from MichaHoffmann/merge-release-0.34.1-to-main
MichaHoffmann Feb 20, 2024
1723d1d
Add support for extended promql functions in rule (#7105)
sdufel Feb 21, 2024
42289ca
Extended func support - doc update (#7161)
sdufel Feb 22, 2024
ed44e01
Copy labels from remote instant queries (#7151)
fpetkovski Feb 22, 2024
508d82e
e2e/query_frontend: add tests for explain/analyze (#7160)
GiedriusS Feb 23, 2024
75152c4
cache/caching_bucket: add path to hash (#7158)
GiedriusS Feb 23, 2024
2f1f83f
Allow using different listing strategies (#7134)
fpetkovski Feb 24, 2024
f72b767
cache: implement the circuit breaker pattern for asynchronous set ope…
damnever Feb 25, 2024
a532ccd
queryfrontend: fix analysis after API changes
GiedriusS Feb 26, 2024
e7cd6c1
bugfix: lazy posting optimization with wrong cardinality for estimati…
yeya24 Feb 26, 2024
deabad9
*: properly treat native histogram deduplication in chunk series merger
pedro-stanaka Feb 23, 2024
5ab87be
Merge pull request #7163 from thanos-io/fix_queryrange_analysis
MichaHoffmann Feb 27, 2024
360d24d
Query UI: Add tenant box (#6867)
jacobbaungard Feb 27, 2024
4c7997d
receive: add support for globbing tenant specifiers (#7155)
GiedriusS Feb 27, 2024
084fb23
.circleci: bump setup_docker_version version (#7177)
GiedriusS Mar 4, 2024
be02591
Unhide distributed execution mode
fpetkovski Mar 3, 2024
f6fed68
Add changelog entry
fpetkovski Mar 4, 2024
4166776
Merge pull request #7175 from fpetkovski/distributed-query-mode
fpetkovski Mar 5, 2024
c06d55d
cortex/querier: fix analysis merging (#7179)
GiedriusS Mar 5, 2024
9694f01
Fix docs
fpetkovski Mar 5, 2024
a97a6ff
Merge pull request #7180 from fpetkovski/fix-docs
fpetkovski Mar 5, 2024
6664247
Added platformengineers
munir131 Mar 5, 2024
673c82f
Added platformengineers (#7181)
munir131 Mar 7, 2024
e40e364
Bump google.golang.org/protobuf to v1.33.0 (#7191)
danielmellado Mar 7, 2024
cbc9738
Merge branch 'thanos-io:main' into main
payalraviya Mar 7, 2024
adca80b
fix: make responsive support page and change size of platform-enginee…
payalraviya Mar 7, 2024
5fa40d7
downsample: retry objstore related errors
xBazilio Mar 7, 2024
4c10194
downsample: retry objstore related errors
xBazilio Mar 7, 2024
31af6da
rule: do not turn off if resolving fails (#7192)
GiedriusS Mar 8, 2024
0be6c87
Merge branch 'main' into support-page-changes
munir131 Mar 8, 2024
5910ed6
Query UI: Only show tenant box with enforcement on (#7186)
jacobbaungard Mar 8, 2024
d889195
Merge branch 'main' into support-page-changes
munir131 Mar 9, 2024
3019dfe
Merge pull request #7193 from Improwised/support-page-changes
fpetkovski Mar 10, 2024
7acce0c
Merge pull request #7164 from pedro-stanaka/fix/dedup-iter
fpetkovski Mar 11, 2024
7eda7ff
Reloader: Add support for watching and decompressing Prometheus confi…
TheSpiritXIII Mar 12, 2024
528f066
[FEAT] Adding blog post (#7202)
heliapb Mar 13, 2024
bbfb8fd
storepb: make ServerAsClient channels unbuffered
MichaHoffmann Mar 13, 2024
dea822d
Merge pull request #7207 from MichaHoffmann/mhoffm-make-server-as-cli…
fpetkovski Mar 13, 2024
f731719
Add support for TSDB selector in querier (#7200)
fpetkovski Mar 14, 2024
2623e49
Merge branch 'main' into retry-downsample-errors
fpetkovski Mar 18, 2024
6df670f
Merge pull request #7194 from xBazilio/retry-downsample-errors
fpetkovski Mar 18, 2024
4a2a455
Update thanos-io/promql-engine (#7215)
fpetkovski Mar 21, 2024
deb615f
expose NewPromSeriesSet (#7214)
yeya24 Mar 23, 2024
93c79b6
[CHORE] adding auto GOMEMLIMIT flag (#7223)
nicolastakashi Mar 24, 2024
b721f09
bump objstore package version to latest main (#7228)
yeya24 Mar 25, 2024
b55ffbc
Query-frontend: fix missing redis username config (#7224)
thibaultmg Mar 25, 2024
6c613fc
UI: Showing Block Size Stats (#7233)
outofrange Mar 26, 2024
4d7a75f
Fix lazy expanded postings cache and bug of non equal matcher (#7220)
yeya24 Mar 27, 2024
4f664e3
Bump Prometheus to include new label regex optimization (#7232)
yeya24 Mar 28, 2024
943401f
update docs for receive routing only with limits (#7241)
alecrajeev Mar 28, 2024
f707f8c
docs: add thanoscon 2024 talks (#7243)
MichaHoffmann Mar 29, 2024
881beb9
remove write method from Compactor interface (#7246)
yeya24 Apr 1, 2024
4bf7867
change shipper to not overwrite all external labels (#7247)
yeya24 Apr 1, 2024
8cdece5
fix(changelog): fix GOMEMLIMIT pull request reference
roth-wine Apr 2, 2024
c7b1cc9
Merge pull request #7250 from roth-wine/pr-fix-changelog-gomemlimit-r…
fpetkovski Apr 2, 2024
e802745
Update kakkoyun's affiliation (#7251)
kakkoyun Apr 2, 2024
f80fd94
Added Shield in adopters (#7254)
suhas-chikkanna Apr 3, 2024
3048d99
Tracing: added missing sampler types (#7231)
NeerajNagure Apr 5, 2024
603fb38
fix query_test when --race enabled (#7258)
jnyi Apr 5, 2024
40465ee
go.mod: bump promql-engine (#7263)
GiedriusS Apr 5, 2024
6b3aa32
Fix 7244 error targets page (#7245)
tizki Apr 8, 2024
78b5bbc
clarify documentation around selecor.relabel-config option
NotAFile Apr 8, 2024
74c5dc9
clarify writing around sharding
NotAFile Apr 8, 2024
d6d3645
don't halt compaction due to overlapping sources when vertical compac…
yeya24 Apr 9, 2024
a6dc67b
Propagate the query plan
pedro-stanaka Mar 27, 2024
79b11f5
removing second precision engine, upstream already truncates
pedro-stanaka Apr 5, 2024
350796b
Passing the plan along as the query in remote executions
pedro-stanaka Apr 5, 2024
f5bcc13
Using proper constructors passing the query plan
pedro-stanaka Apr 5, 2024
11f87d8
Refactor query creation from plan
pedro-stanaka Apr 8, 2024
0bed7ef
fallback in case we cant use plan
pedro-stanaka Apr 8, 2024
409cfed
refactor, add tests
pedro-stanaka Apr 8, 2024
4ae0449
Refactor to method
pedro-stanaka Apr 8, 2024
9ef4b5a
last nits
pedro-stanaka Apr 8, 2024
a106d5f
api/ui: show peak/total samples in analyze (#7269)
GiedriusS Apr 9, 2024
f7853dd
Merge pull request #7266 from NotAFile/clarify-relabel-selector-docs
fpetkovski Apr 9, 2024
953ce26
Merge pull request #7261 from pedro-stanaka/feat/plan-serialize-optimize
fpetkovski Apr 9, 2024
5280bb6
receive/handler: implement tenant label splitting (#7256)
GiedriusS Apr 10, 2024
8227108
query: fixing dedup iterator when working on mixed sample types (#7271)
pedro-stanaka Apr 11, 2024
652e8cc
change the reflect package to an unsafe package (#7143)
yj-yoo Apr 11, 2024
140bc87
Receive: fix issue-7248 with parallel receive_forward (#7267)
jnyi Apr 11, 2024
968899f
Fix incorrect comments (#7268)
magiceses Apr 12, 2024
9338e1e
[CHORE] adding user agent (#7281)
nicolastakashi Apr 15, 2024
5fb0c69
receive/multitsdb: do not delete not uploaded blocks (#7166)
GiedriusS Apr 16, 2024
f7ba140
Compact: Replace group with resolution in ownsample metrics (#7283)
SuperQ Apr 18, 2024
b0be155
Propagate warnings from instant queries
fpetkovski Apr 18, 2024
fe0931d
Add CHANGELOG entry
fpetkovski Apr 18, 2024
6582c81
Merge pull request #7286 from fpetkovski/instant-query-warns
fpetkovski Apr 18, 2024
9998c9b
Receive: stop relying on grpc server config to set grpc client secure…
guillaumelecerf Mar 20, 2024
c3cd031
Merge pull request #7219 from guillaumelecerf/bugfix/client-tls-exter…
fpetkovski Apr 22, 2024
a96e7f3
Show warnings in query frontend (#7289)
fpetkovski Apr 23, 2024
7c8fe85
Optimize empty posting check in lazy posting (#7298)
yeya24 Apr 23, 2024
57016bd
Sidecar: mark as unqueryable if prometheus is down (#7297)
MichaHoffmann Apr 24, 2024
23d2052
[CHORE] considering X-Forwarded-For on HTTP Logging (#7303)
nicolastakashi Apr 25, 2024
a007648
Query|Receiver: Do not log full request on ProxyStore by default (#7305)
pedro-stanaka Apr 26, 2024
e6fc833
*: Updating hashicorp LRU cache to v2 (#7306)
pedro-stanaka Apr 26, 2024
6bf98f9
store: use loser trees (#7304)
GiedriusS Apr 26, 2024
fed2870
Store: batch tsdb infos (#7308)
MichaHoffmann Apr 26, 2024
4145f03
Proxy: acceptance tests for relabel filter (#7309)
MichaHoffmann Apr 29, 2024
bd74665
Stores: respect replica labels in LabelValues and LabelNames (#7310)
MichaHoffmann Apr 29, 2024
d9508cc
CHANGELOG: Mark 0.35 as in progress (#7312)
saswatamcode Apr 29, 2024
bcad1e1
Cut release candidate v0.35.0-rc.0 (#7314)
saswatamcode Apr 29, 2024
d9a0efa
Cut release v0.35.0 (#7320)
saswatamcode May 2, 2024
086a698
Cut patch release `v0.35.1` (#7394)
saswatamcode May 28, 2024
623e131
Merge tag 'refs/tags/v0.35.1' into release-2.12
github-actions[bot] Jul 24, 2024
18dff2f
[bot]go mod tidy
github-actions[bot] Jul 24, 2024
1442565
fix conflicts
coleenquadros Jul 24, 2024
aace4ea
remove files
coleenquadros Jul 24, 2024
b1c7641
test duplicates
coleenquadros Jul 24, 2024
7a240cd
conflicts
coleenquadros Jul 24, 2024
41f0ecd
remove files
coleenquadros Jul 24, 2024
ae8e7a7
lint
coleenquadros Jul 24, 2024
c39f4ce
test fix
coleenquadros Jul 24, 2024
004de87
remove files
coleenquadros Jul 24, 2024
9e14858
conflict
coleenquadros Jul 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Query: add optional tenancy enforcement (thanos-io#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 <jacobbaungard@redhat.com>

* Add changelog entry

Signed-off-by: Jacob Baungard Hansen <jacobbaungard@redhat.com>

* Query: Add non-default tenant testcase

Signed-off-by: Jacob Baungard Hansen <jacobbaungard@redhat.com>

* Test: make query a constant to make linter happy

Signed-off-by: Jacob Baungard Hansen <jacobbaungard@redhat.com>

* 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 <jacobbaungard@redhat.com>

* 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 <jacobbaungard@redhat.com>

* Re-arrage go.mod to make linter happy.

Signed-off-by: Jacob Baungard Hansen <jacobbaungard@redhat.com>

* Address review comments

Minor changes to CLI docs, code-comments and changelog.

Signed-off-by: Jacob Baungard Hansen <jacobbaungard@redhat.com>

* Query: Add tenancy docs

This commit adds documentation for the tenancy features.

Signed-off-by: Jacob Baungard Hansen <jacobbaungard@redhat.com>

* Update docs/components/query.md

Review comment

Co-authored-by: Saswata Mukherjee <saswataminsta@yahoo.com>
Signed-off-by: Jacob Baungård Hansen <jacobbaungard@redhat.com>

---------

Signed-off-by: Jacob Baungard Hansen <jacobbaungard@redhat.com>
Signed-off-by: Jacob Baungård Hansen <jacobbaungard@redhat.com>
Co-authored-by: Saswata Mukherjee <saswataminsta@yahoo.com>
  • Loading branch information
jacobbaungard and saswatamcode committed Jan 8, 2024
commit 0cd95eb26725b6676b8bc78546307e4a51814a53
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ We use *breaking :warning:* to mark changes that are not backward compatible (re
- [#7009](https://github.com/thanos-io/thanos/pull/7009) Rule: Fix spacing error in URL.

### Added

- [#6756](https://github.com/thanos-io/thanos/pull/6756) Query: Add `query.enable-tenancy` & `query.tenant-label-name` options to allow enforcement of tenancy on the query path, by injecting labels into queries (uses prom-label-proxy internally).
- [#6944](https://github.com/thanos-io/thanos/pull/6944) Receive: Added a new flag for maximum retention bytes.
- [#6891](https://github.com/thanos-io/thanos/pull/6891) Objstore: Bump `objstore` which adds support for Azure Workload Identity.
- [#6453](https://github.com/thanos-io/thanos/pull/6453) Sidecar: Added `--reloader.method` to support configuration reloads via SIHUP signal.
Expand All @@ -25,7 +27,6 @@ We use *breaking :warning:* to mark changes that are not backward compatible (re
- [#6943](https://github.com/thanos-io/thanos/pull/6943) Ruler: Added `keep_firing_for` field in alerting rule.
- [#6972](https://github.com/thanos-io/thanos/pull/6972) Store Gateway: Apply series limit when streaming series for series actually matched if lazy postings is enabled.
- [#6984](https://github.com/thanos-io/thanos/pull/6984) Store Gateway: Added `--store.index-header-lazy-download-strategy` to specify how to lazily download index headers when lazy mmap is enabled.

- [#6887](https://github.com/thanos-io/thanos/pull/6887) Query Frontend: *breaking :warning:* Add tenant label to relevant exported metrics. Note that this change may cause some pre-existing custom dashboard queries to be incorrect due to the added label.
- [#7028](https://github.com/thanos-io/thanos/pull/7028) Query|Query Frontend: Add new `--query-frontend.enable-x-functions` flag to enable experimental extended functions.

Expand Down
8 changes: 8 additions & 0 deletions cmd/thanos/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ func registerQuery(app *extkingpin.App) {
tenantHeader := cmd.Flag("query.tenant-header", "HTTP header to determine tenant.").Default(tenancy.DefaultTenantHeader).String()
defaultTenant := cmd.Flag("query.default-tenant-id", "Default tenant ID to use if tenant header is not present").Default(tenancy.DefaultTenant).String()
tenantCertField := cmd.Flag("query.tenant-certificate-field", "Use TLS client's certificate field to determine tenant for write requests. Must be one of "+tenancy.CertificateFieldOrganization+", "+tenancy.CertificateFieldOrganizationalUnit+" or "+tenancy.CertificateFieldCommonName+". This setting will cause the query.tenant-header flag value to be ignored.").Default("").Enum("", tenancy.CertificateFieldOrganization, tenancy.CertificateFieldOrganizationalUnit, tenancy.CertificateFieldCommonName)
enforceTenancy := cmd.Flag("query.enforce-tenancy", "Enforce tenancy on Query APIs. Responses are returned only if the label value of the configured tenant-label-name and the value of the tenant header matches.").Default("false").Bool()
tenantLabel := cmd.Flag("query.tenant-label-name", "Label name to use when enforcing tenancy (if --query.enforce-tenancy is enabled).").Default(tenancy.DefaultTenantLabel).String()

var storeRateLimits store.SeriesSelectLimits
storeRateLimits.RegisterFlags(cmd)
Expand Down Expand Up @@ -347,6 +349,8 @@ func registerQuery(app *extkingpin.App) {
*tenantHeader,
*defaultTenant,
*tenantCertField,
*enforceTenancy,
*tenantLabel,
)
})
}
Expand Down Expand Up @@ -427,6 +431,8 @@ func runQuery(
tenantHeader string,
defaultTenant string,
tenantCertField string,
enforceTenancy bool,
tenantLabel string,
) error {
if alertQueryURL == "" {
lastColon := strings.LastIndex(httpBindAddr, ":")
Expand Down Expand Up @@ -724,6 +730,8 @@ func runQuery(
tenantHeader,
defaultTenant,
tenantCertField,
enforceTenancy,
tenantLabel,
)

api.Register(router.WithPrefix("/api/v1"), tracer, logger, ins, logMiddleware)
Expand Down
21 changes: 21 additions & 0 deletions docs/components/query.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,20 @@ Example file SD file in YAML:

`--query.active-query-path` is an option which allows the user to specify a directory which will contain a `queries.active` file to track active queries. To enable this feature, the user has to specify a directory other than "", since that is skipped being the default.

## Tenancy

### Tenant Metrics

Tenant information is captured in relevant Thanos exported metrics in the Querier, Query Frontend and Store. In order make use of this functionality requests to the Query/Query Frontend component should include the tenant-id in the appropriate HTTP request header as configured with `--query.tenant-header`. The tenant information is passed through components (including Query Frontend), down to the Thanos Store, enabling per-tenant metrics in these components also. If no tenant header is set to requests to the query component, the default tenant as defined by `--query.tenant-default-id` will be used.

### Tenant Enforcement

Enforcement of tenancy can be enabled using `--query.enforce-tenancy`. If enabled, queries will only fetch series containing a specific matcher, while evaluating PromQL expressions. The matcher label name is `--query.tenant-label-name` and the matcher value matches the tenant, as sent to the querier in the HTTP header configured with `--query-tenant-header`. This functionality requires that metrics are injected with a tenant label when ingested into Thanos. This can be done for example by enabling tenancy in the Thanos Receive component.

In case of nested Thanos Query components, it's important to note that tenancy enforcement will only occur in the querier which the initial request is sent to, the layered queriers will not perform any enforcement.

Further, note that there are no authentication mechanisms in Thanos, so anyone can set an arbitrary tenant in the HTTP header. It is recommended to use a proxy in front of the querier in case an authentication mechanism is needed. The Query UI also includes an option to set an arbitrary tenant, and should therefore not be exposed to end-users if users should not be able to see each others data.

## Flags

```$ mdox-exec="thanos query --help"
Expand Down Expand Up @@ -367,6 +381,10 @@ Flags:
Whether to enable extended rate functions
(xrate, xincrease and xdelta). Only has effect
when used with Thanos engine.
--query.enforce-tenancy Enforce tenancy on Query APIs. Responses
are returned only if the label value of the
configured tenant-label-name and the value of
the tenant header matches.
--query.lookback-delta=QUERY.LOOKBACK-DELTA
The maximum lookback duration for retrieving
metrics during expression evaluations.
Expand Down Expand Up @@ -419,6 +437,9 @@ Flags:
flag value to be ignored.
--query.tenant-header="THANOS-TENANT"
HTTP header to determine tenant.
--query.tenant-label-name="tenant_id"
Label name to use when enforcing tenancy (if
--query.enforce-tenancy is enabled).
--query.timeout=2m Maximum time to process query by query node.
--request.logging-config=<content>
Alternative to 'request.logging-config-file'
Expand Down
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -119,18 +119,21 @@ require (
require (
github.com/mitchellh/go-ps v1.0.0
github.com/onsi/gomega v1.27.10
github.com/prometheus-community/prom-label-proxy v0.7.0
go.opentelemetry.io/contrib/propagators/autoprop v0.38.0
go4.org/intern v0.0.0-20230525184215-6c62f75575cb
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb
)

require (
github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect
github.com/go-openapi/runtime v0.26.0 // indirect
github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/huaweicloud/huaweicloud-sdk-go-obs v3.23.3+incompatible // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect
github.com/zhangyunhao116/umap v0.0.0-20221211160557-cb7705fafa39 // indirect
Expand Down
10 changes: 10 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw
github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/Code-Hex/go-generics-cache v1.3.1 h1:i8rLwyhoyhaerr7JpjtYjJZUcCbWOdiYO3fZXLiEC4g=
github.com/Code-Hex/go-generics-cache v1.3.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3 h1:i84ZOPT35YCJROyuf97VP/VEdYhQce/8NTLOWq5tqJw=
Expand Down Expand Up @@ -339,6 +340,8 @@ github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En
github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g=
github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro=
github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw=
github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc=
github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5WyE+EV88plZrQ=
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8=
Expand Down Expand Up @@ -638,6 +641,7 @@ github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
Expand Down Expand Up @@ -713,6 +717,8 @@ github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a h1:0usWxe5SGXKQovz3p+BiQ81Jy845xSMu2CWKuXsXuUM=
github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a/go.mod h1:3OETvrxfELvGsU2RoGGWercfeZ4bCL3+SOwzIWtJH/Q=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
Expand Down Expand Up @@ -840,10 +846,13 @@ github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
github.com/prometheus/alertmanager v0.26.0 h1:uOMJWfIwJguc3NaM3appWNbbrh6G/OjvaHMk22aBBYc=
github.com/prometheus/alertmanager v0.26.0/go.mod h1:rVcnARltVjavgVaNnmevxK7kOn7IZavyf0KNgHkbEpU=
github.com/prometheus-community/prom-label-proxy v0.7.0 h1:1iNHXF7V8z2iOCinEyxKDUHu2jppPAAd6PmBCi3naok=
github.com/prometheus-community/prom-label-proxy v0.7.0/go.mod h1:wR9C/Mwp5aBbiqM6gQ+FZdFRwL8pCzzhsje8lTAx/aA=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
Expand All @@ -861,6 +870,7 @@ github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk
github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
Expand Down
66 changes: 19 additions & 47 deletions pkg/api/query/v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ type QueryAPI struct {
tenantHeader string
defaultTenant string
tenantCertField string
enforceTenancy bool
tenantLabel string
}

// NewQueryAPI returns an initialized QueryAPI type.
Expand Down Expand Up @@ -207,6 +209,8 @@ func NewQueryAPI(
tenantHeader string,
defaultTenant string,
tenantCertField string,
enforceTenancy bool,
tenantLabel string,
) *QueryAPI {
if statsAggregatorFactory == nil {
statsAggregatorFactory = &store.NoopSeriesStatsAggregatorFactory{}
Expand Down Expand Up @@ -240,6 +244,8 @@ func NewQueryAPI(
tenantHeader: tenantHeader,
defaultTenant: defaultTenant,
tenantCertField: tenantCertField,
enforceTenancy: enforceTenancy,
tenantLabel: tenantLabel,

queryRangeHist: promauto.With(reg).NewHistogram(prometheus.HistogramOpts{
Name: "thanos_query_range_requested_timespan_duration_seconds",
Expand Down Expand Up @@ -644,12 +650,10 @@ func (qapi *QueryAPI) query(r *http.Request) (interface{}, []error, *api.ApiErro
lookbackDelta = lookbackDeltaFromReq
}

tenant, err := tenancy.GetTenantFromHTTP(r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField)
queryStr, tenant, ctx, err := tenancy.RewritePromQL(ctx, r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField, qapi.enforceTenancy, qapi.tenantLabel, r.FormValue("query"))
if err != nil {
apiErr = &api.ApiError{Typ: api.ErrorBadData, Err: err}
return nil, nil, apiErr, func() {}
return nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}
}
ctx = context.WithValue(ctx, tenancy.TenantKey, tenant)

// We are starting promQL tracing span here, because we have no control over promQL code.
span, ctx := tracing.StartSpan(ctx, "promql_instant_query")
Expand All @@ -670,7 +674,7 @@ func (qapi *QueryAPI) query(r *http.Request) (interface{}, []error, *api.ApiErro
query.NewAggregateStatsReporter(&seriesStats),
),
promql.NewPrometheusQueryOpts(false, lookbackDelta),
r.FormValue("query"),
queryStr,
ts,
)

Expand Down Expand Up @@ -943,12 +947,10 @@ func (qapi *QueryAPI) queryRange(r *http.Request) (interface{}, []error, *api.Ap
lookbackDelta = lookbackDeltaFromReq
}

tenant, err := tenancy.GetTenantFromHTTP(r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField)
queryStr, tenant, ctx, err := tenancy.RewritePromQL(ctx, r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField, qapi.enforceTenancy, qapi.tenantLabel, r.FormValue("query"))
if err != nil {
apiErr = &api.ApiError{Typ: api.ErrorBadData, Err: err}
return nil, nil, apiErr, func() {}
return nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}
}
ctx = context.WithValue(ctx, tenancy.TenantKey, tenant)

// Record the query range requested.
qapi.queryRangeHist.Observe(end.Sub(start).Seconds())
Expand All @@ -972,7 +974,7 @@ func (qapi *QueryAPI) queryRange(r *http.Request) (interface{}, []error, *api.Ap
query.NewAggregateStatsReporter(&seriesStats),
),
promql.NewPrometheusQueryOpts(false, lookbackDelta),
r.FormValue("query"),
queryStr,
start,
end,
step,
Expand Down Expand Up @@ -1048,21 +1050,11 @@ func (qapi *QueryAPI) labelValues(r *http.Request) (interface{}, []error, *api.A
return nil, nil, apiErr, func() {}
}

var matcherSets [][]*labels.Matcher
for _, s := range r.Form[MatcherParam] {
matchers, err := parser.ParseMetricSelector(s)
if err != nil {
return nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}
}
matcherSets = append(matcherSets, matchers)
}

tenant, err := tenancy.GetTenantFromHTTP(r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField)
matcherSets, ctx, err := tenancy.RewriteLabelMatchers(ctx, r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField, qapi.enforceTenancy, qapi.tenantLabel, r.Form[MatcherParam])
if err != nil {
apiErr = &api.ApiError{Typ: api.ErrorBadData, Err: err}
return nil, nil, apiErr, func() {}
}
ctx = context.WithValue(ctx, tenancy.TenantKey, tenant)

q, err := qapi.queryableCreate(
true,
Expand Down Expand Up @@ -1131,13 +1123,10 @@ func (qapi *QueryAPI) series(r *http.Request) (interface{}, []error, *api.ApiErr
return nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}
}

var matcherSets [][]*labels.Matcher
for _, s := range r.Form[MatcherParam] {
matchers, err := parser.ParseMetricSelector(s)
if err != nil {
return nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}
}
matcherSets = append(matcherSets, matchers)
matcherSets, ctx, err := tenancy.RewriteLabelMatchers(r.Context(), r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField, qapi.enforceTenancy, qapi.tenantLabel, r.Form[MatcherParam])
if err != nil {
apiErr := &api.ApiError{Typ: api.ErrorBadData, Err: err}
return nil, nil, apiErr, func() {}
}

enableDedup, apiErr := qapi.parseEnableDedupParam(r)
Expand All @@ -1160,13 +1149,6 @@ func (qapi *QueryAPI) series(r *http.Request) (interface{}, []error, *api.ApiErr
return nil, nil, apiErr, func() {}
}

tenant, err := tenancy.GetTenantFromHTTP(r, qapi.tenantHeader, qapi.defaultTenant, "")
if err != nil {
apiErr = &api.ApiError{Typ: api.ErrorBadData, Err: err}
return nil, nil, apiErr, func() {}
}
ctx := context.WithValue(r.Context(), tenancy.TenantKey, tenant)

q, err := qapi.queryableCreate(
enableDedup,
replicaLabels,
Expand Down Expand Up @@ -1218,21 +1200,11 @@ func (qapi *QueryAPI) labelNames(r *http.Request) (interface{}, []error, *api.Ap
return nil, nil, apiErr, func() {}
}

var matcherSets [][]*labels.Matcher
for _, s := range r.Form[MatcherParam] {
matchers, err := parser.ParseMetricSelector(s)
if err != nil {
return nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}
}
matcherSets = append(matcherSets, matchers)
}

tenant, err := tenancy.GetTenantFromHTTP(r, qapi.tenantHeader, qapi.defaultTenant, "")
matcherSets, ctx, err := tenancy.RewriteLabelMatchers(r.Context(), r, qapi.tenantHeader, qapi.defaultTenant, qapi.tenantCertField, qapi.enforceTenancy, qapi.tenantLabel, r.Form[MatcherParam])
if err != nil {
apiErr = &api.ApiError{Typ: api.ErrorBadData, Err: err}
apiErr := &api.ApiError{Typ: api.ErrorBadData, Err: err}
return nil, nil, apiErr, func() {}
}
ctx := context.WithValue(r.Context(), tenancy.TenantKey, tenant)

q, err := qapi.queryableCreate(
true,
Expand Down
Loading