Add PrometheusSeriesRestAction for /_prometheus/api/v1/series endpoint#144494
Merged
felixbarny merged 21 commits intoelastic:mainfrom Mar 31, 2026
Merged
Add PrometheusSeriesRestAction for /_prometheus/api/v1/series endpoint#144494felixbarny merged 21 commits intoelastic:mainfrom
felixbarny merged 21 commits intoelastic:mainfrom
Conversation
Implements the GET/POST /_prometheus/api/v1/series REST handler that accepts Prometheus series selectors and returns matching label sets. Registers the action in PrometheusPlugin and adds an integration test covering basic series lookup.
This was referenced Mar 18, 2026
Removes the hand-rolled parseQueryString/collectMatchSelectors logic and delegates to the new RestUtils.decodeQueryStringMulti instead.
Drop the {dataset}/{namespace} path params and the INDEX_PREFIX constant.
The long-term design is /_prometheus/{index}/api/v1/... (arbitrary index
pattern), which requires restructuring remote write paths first. For now
the endpoint searches metrics-*-* by default, keeping the PR shippable.
Index filtering will be added once the path structure is settled.
Adds a second route `/_prometheus/{index}/api/v1/series` that lets
callers scope queries to a specific index pattern instead of the default `*`.
Replaces the manual URI query-string parsing with a simple
request.param("match[]") call. Multi-value support is deferred
to a follow-up once the framework-level multi-value param API lands.
Also resolves the merge conflict in PrometheusPlugin that was
registering either the series or query-range handler but not both,
and fixes the recursive varargs helper methods in PrometheusSeriesRestIT.
Collaborator
|
Pinging @elastic/es-storage-engine (Team:StorageEngine) |
kkrik-es
approved these changes
Mar 30, 2026
kkrik-es
reviewed
Mar 30, 2026
| PrometheusSeriesRestAction action = new PrometheusSeriesRestAction(); | ||
|
|
||
| // prepareRequest should not throw — multiple selectors are valid | ||
| action.prepareRequest(request, null); |
Member
There was a problem hiding this comment.
This is all good, but we need to add IT for PromQL native at some point.. do we have a tracking item?
Member
Author
There was a problem hiding this comment.
What's missing from PrometheusSeriesRestIT?
Member
Author
There was a problem hiding this comment.
I guess this test (PrometheusSeriesRestActionTests) is somewhat redundant...
The flag was removed in elastic#144311 which enabled the Prometheus plugin by default. The test cluster setup no longer needs to explicitly enable it.
7e5908a to
312cb3f
Compare
…eriesResponseListener API changes
szybia
added a commit
to szybia/elasticsearch
that referenced
this pull request
Mar 31, 2026
…rics * upstream/main: (428 commits) ESQL: DS: Add inference/RERANK tests (elastic#145229) Unmute MMR logical plan test (elastic#145311) Do not attempt marking store as corrupted if the check is rejected due to shutdown (elastic#145209) feat(tsdb): add pipeline runtime and rename stage interfaces (elastic#145175) Fix UnresolvedException on PromQL by(step) grouping (elastic#145307) ES|QL: Optimize MMR by reducing cache size and lookup (elastic#145014) Prometheus labels/series APIs: support multiple match[] selectors (elastic#145298) Move ClientScrollablePaginatedHitSource into Reindex Module (elastic#144100) mute test class for elastic#145277 CPS mode for ViewResolver (elastic#145219) [ESQL] Disables GroupedTopNBenchmark temporarily (elastic#145124) Make exponential_histogram the default histogram type for HTTP OTLP endpoint (elastic#145065) More tests requiring an explicit confidence interval (elastic#145232) ES|QL: Adding `USER_AGENT` command (elastic#144384) ESQL: enable Generative IT after more fixes (elastic#145112) Rework FieldMapper parameter tests to not use merge builders (elastic#145213) [ESQL] Fix ORC type support gaps (elastic#145074) [Test] Unmute FollowingEngineTests.testProcessOnceOnPrimary (elastic#145192) Add PrometheusSeriesRestAction for /_prometheus/api/v1/series endpoint (elastic#144494) Prometheus labels API: add rest action (elastic#144952) ...
ncordon
pushed a commit
to ncordon/elasticsearch
that referenced
this pull request
Apr 1, 2026
elastic#144494) Implements the GET/POST /_prometheus/api/v1/series REST handler that accepts Prometheus series selectors and returns matching label sets. Registers the action in PrometheusPlugin and adds an integration test covering basic series lookup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the
GET /_prometheus/api/v1/seriesREST handler that accepts Prometheus series selectors and returns matching label sets. See also https://prometheus.io/docs/prometheus/latest/querying/api/#finding-series-by-label-matchers. This is typically used for auto-completion in web UIs.This is specifically not adding the
POSTvariant of the endpoint because we're rejecting allapplication/x-www-form-urlencodedrequest bodies inRestControlleras a CORS protection.Note
This PR depends on #144415, #144506, #144492, and #144493 being merged first. It won't compile standalone.
Stack:
RequestParamsto handle repeated query parameters #144506