Skip to content

Commit 542291e

Browse files
authored
Merge pull request #58 from quickwit-oss/ddelemeny-log-volume-resolution
Improve log volume histogram resolution
2 parents 0155cb0 + 7ef81c4 commit 542291e

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

src/datasource.ts

+28-24
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ export function queryLogsVolume<TQuery extends DataQuery, TOptions extends DataS
610610
options: any
611611
): Observable<DataQueryResponse> {
612612
const timespan = options.range.to.valueOf() - options.range.from.valueOf();
613-
const intervalInfo = getIntervalInfo(logsVolumeRequest.scopedVars, timespan);
613+
const intervalInfo = getIntervalInfo(timespan, 400);
614614

615615
logsVolumeRequest.interval = intervalInfo.interval;
616616
logsVolumeRequest.scopedVars.__interval = { value: intervalInfo.interval, text: intervalInfo.interval };
@@ -754,32 +754,36 @@ const MINUTE = 60 * SECOND;
754754
const HOUR = 60 * MINUTE;
755755
const DAY = 24 * HOUR;
756756

757-
function getIntervalInfo(scopedVars: ScopedVars, timespanMs: number): { interval: string; intervalMs?: number } {
758-
if (scopedVars.__interval_ms) {
759-
let intervalMs: number = scopedVars.__interval_ms.value;
760-
let interval = '';
761-
// below 5 seconds we force the resolution to be per 1ms as interval in scopedVars is not less than 10ms
762-
if (timespanMs < SECOND * 5) {
763-
intervalMs = MILLISECOND;
764-
interval = '1ms';
765-
} else if (intervalMs > HOUR) {
766-
intervalMs = DAY;
767-
interval = '1d';
768-
} else if (intervalMs > MINUTE) {
769-
intervalMs = HOUR;
770-
interval = '1h';
771-
} else if (intervalMs > SECOND) {
772-
intervalMs = MINUTE;
773-
interval = '1m';
774-
} else {
775-
intervalMs = SECOND;
776-
interval = '1s';
777-
}
778757

779-
return { interval, intervalMs };
758+
function getIntervalInfo(timespanMs: number, resolution: number): { interval: string; intervalMs?: number } {
759+
let intervalMs = timespanMs / resolution;
760+
let interval = '';
761+
762+
// below 5 seconds we force the resolution to be per 1ms as interval in scopedVars is not less than 10ms
763+
if (timespanMs < SECOND * 5) {
764+
intervalMs = MILLISECOND;
765+
interval = '1ms';
766+
} else if (intervalMs > HOUR) {
767+
intervalMs = DAY;
768+
interval = '1d';
769+
} else if (intervalMs > 10*MINUTE) {
770+
intervalMs = HOUR;
771+
interval = '1h';
772+
} else if (intervalMs > MINUTE) {
773+
intervalMs = 10*MINUTE;
774+
interval = '10m';
775+
} else if (intervalMs > 10*SECOND) {
776+
intervalMs = MINUTE;
777+
interval = '1m';
778+
} else if (intervalMs > SECOND) {
779+
intervalMs = 10*SECOND;
780+
interval = '10s';
780781
} else {
781-
return { interval: '$__interval' };
782+
intervalMs = SECOND;
783+
interval = '1s';
782784
}
785+
786+
return { interval, intervalMs };
783787
}
784788

785789
// Copy/pasted from grafana/data as it is deprecated there.

0 commit comments

Comments
 (0)