1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-14 00:19:16 +01:00

feat: limit the amount of results coming from Prometheus (#2776)

## About the changes
To avoid showing too much data in the traffic screen, limit the number
of results to `topk`.

## Discussion points
Top 10 is a rule of thumb, but maybe we could do top 25. Until we gather
more data, I believe this should be good enough
This commit is contained in:
Gastón Fournier 2023-01-04 11:00:04 +01:00 committed by GitHub
parent 111dddd746
commit bf77182ca7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 3 deletions

View File

@ -87,7 +87,7 @@ const createInstanceChartOptions = (
}, },
}, },
title: { title: {
text: 'Requests per second in the last 6 hours', text: 'Top 10 requests per second in the last 6 hours',
position: 'top', position: 'top',
align: 'start', align: 'start',
display: true, display: true,

View File

@ -224,7 +224,7 @@ export default class ClientInstanceService {
return (d.getTime() - d.getMilliseconds()) / 1000; return (d.getTime() - d.getMilliseconds()) / 1000;
} }
async getRPS(hoursToQuery: number): Promise<any> { async getRPS(hoursToQuery: number, limit = 10): Promise<any> {
if (!this.prometheusApi) { if (!this.prometheusApi) {
this.logger.warn('Prometheus not configured'); this.logger.warn('Prometheus not configured');
return; return;
@ -233,7 +233,7 @@ export default class ClientInstanceService {
const basePath = this.serverOption.baseUriPath.replace(/\/$/, ''); const basePath = this.serverOption.baseUriPath.replace(/\/$/, '');
const pathQuery = `${basePath}/api/.*`; const pathQuery = `${basePath}/api/.*`;
const step = '5m'; const step = '5m';
const rpsQuery = `irate (http_request_duration_milliseconds_count{path=~"${pathQuery}"} [${step}])`; const rpsQuery = `topk(${limit}, irate (http_request_duration_milliseconds_count{path=~"${pathQuery}"} [${step}]))`;
const query = `sum by(appName, endpoint) (label_replace(${rpsQuery}, "endpoint", "$1", "path", "${basePath}(/api/(?:client/)?[^/\*]*).*"))`; const query = `sum by(appName, endpoint) (label_replace(${rpsQuery}, "endpoint", "$1", "path", "${basePath}(/api/(?:client/)?[^/\*]*).*"))`;
const end = new Date(); const end = new Date();
const start = new Date(); const start = new Date();