Revert "Prometheus: Remove series endpoint call from Metrics Explorer" (#105104)

Revert "Prometheus: Remove series endpoint call from Metrics Explorer (#104263)"

This reverts commit 89198bb749c247fa0fd394172bb939c3d79be3da.
This commit is contained in:
ismail simsek
2025-05-19 23:06:39 +02:00
committed by GitHub
parent b4fc33ff6b
commit d80cfce798
2 changed files with 32 additions and 11 deletions

View File

@ -147,11 +147,15 @@ describe('PrometheusMetricFindQuery', () => {
});
// <LegacyPrometheus>
it('label_values(metric, resource) should generate label/__name__/values query with correct time', async () => {
it('label_values(metric, resource) should generate series query with correct time', async () => {
const query = setupMetricFindQuery({
query: 'label_values(metric, resource)',
response: {
data: ['value1', 'value2', 'value3'],
data: [
{ __name__: 'metric', resource: 'value1' },
{ __name__: 'metric', resource: 'value2' },
{ __name__: 'metric', resource: 'value3' },
],
},
});
const results = await query.process(raw);
@ -160,19 +164,24 @@ describe('PrometheusMetricFindQuery', () => {
expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith({
method: 'GET',
url: `/api/datasources/uid/ABCDEF/resources/api/v1/label/resource/values?match${encodeURIComponent(
url: `/api/datasources/uid/ABCDEF/resources/api/v1/series?match${encodeURIComponent(
'[]'
)}=metric&start=${raw.from.unix()}&end=${raw.to.unix()}`,
hideFromInspector: true,
showErrorAlert: false,
headers: {},
});
});
it('label_values(metric{label1="foo", label2="bar", label3="baz"}, resource) should generate label/__name__/values? query with correct time', async () => {
it('label_values(metric{label1="foo", label2="bar", label3="baz"}, resource) should generate series query with correct time', async () => {
const query = setupMetricFindQuery({
query: 'label_values(metric{label1="foo", label2="bar", label3="baz"}, resource)',
response: {
data: ['value1', 'value2', 'value3'],
data: [
{ __name__: 'metric', resource: 'value1' },
{ __name__: 'metric', resource: 'value2' },
{ __name__: 'metric', resource: 'value3' },
],
},
});
const results = await query.process(raw);
@ -181,8 +190,9 @@ describe('PrometheusMetricFindQuery', () => {
expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith({
method: 'GET',
url: '/api/datasources/uid/ABCDEF/resources/api/v1/label/resource/values?match%5B%5D=metric%7Blabel1%3D%22foo%22%2C%20label2%3D%22bar%22%2C%20label3%3D%22baz%22%7D&start=1524650400&end=1524654000',
url: '/api/datasources/uid/ABCDEF/resources/api/v1/series?match%5B%5D=metric%7Blabel1%3D%22foo%22%2C%20label2%3D%22bar%22%2C%20label3%3D%22baz%22%7D&start=1524650400&end=1524654000',
hideFromInspector: true,
showErrorAlert: false,
headers: {},
});
});
@ -191,7 +201,11 @@ describe('PrometheusMetricFindQuery', () => {
const query = setupMetricFindQuery({
query: 'label_values(metric, resource)',
response: {
data: ['value1', 'value2'],
data: [
{ __name__: 'metric', resource: 'value1' },
{ __name__: 'metric', resource: 'value2' },
{ __name__: 'metric', resource: '' },
],
},
});
const results = await query.process(raw);
@ -202,10 +216,11 @@ describe('PrometheusMetricFindQuery', () => {
expect(fetchMock).toHaveBeenCalledTimes(1);
expect(fetchMock).toHaveBeenCalledWith({
method: 'GET',
url: `/api/datasources/uid/ABCDEF/resources/api/v1/label/resource/values?match${encodeURIComponent(
url: `/api/datasources/uid/ABCDEF/resources/api/v1/series?match${encodeURIComponent(
'[]'
)}=metric&start=${raw.from.unix()}&end=${raw.to.unix()}`,
hideFromInspector: true,
showErrorAlert: false,
headers: {},
});
});

View File

@ -87,17 +87,23 @@ export class PrometheusMetricFindQuery {
escapedLabel = escapeForUtf8Support(label);
}
const url = `/api/v1/label/${escapedLabel}/values`;
if (!metric || this.datasource.hasLabelsMatchAPISupport()) {
const url = `/api/v1/label/${escapedLabel}/values`;
return this.datasource.metadataRequest(url, params).then((result) => {
return _map(result.data.data, (value) => {
return { text: value };
});
});
} else {
const url = `/api/v1/series`;
return this.datasource.metadataRequest(url, params).then((result) => {
const _labels = _map(result.data.data, (metric) => metric);
const _labels = _map(result.data.data, (metric) => {
return metric[label] || '';
}).filter((label) => {
return label !== '';
});
return uniq(_labels).map((metric) => {
return {