Skip to content

Commit 7ef81c4

Browse files
committed
Improve log volume histogram resolution, fixes #40
1 parent ff0ac19 commit 7ef81c4

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
@@ -651,7 +651,7 @@ export function queryLogsVolume<TQuery extends DataQuery, TOptions extends DataS
651651
options: any
652652
): Observable<DataQueryResponse> {
653653
const timespan = options.range.to.valueOf() - options.range.from.valueOf();
654-
const intervalInfo = getIntervalInfo(logsVolumeRequest.scopedVars, timespan);
654+
const intervalInfo = getIntervalInfo(timespan, 400);
655655

656656
logsVolumeRequest.interval = intervalInfo.interval;
657657
logsVolumeRequest.scopedVars.__interval = { value: intervalInfo.interval, text: intervalInfo.interval };
@@ -795,32 +795,36 @@ const MINUTE = 60 * SECOND;
795795
const HOUR = 60 * MINUTE;
796796
const DAY = 24 * HOUR;
797797

798-
function getIntervalInfo(scopedVars: ScopedVars, timespanMs: number): { interval: string; intervalMs?: number } {
799-
if (scopedVars.__interval_ms) {
800-
let intervalMs: number = scopedVars.__interval_ms.value;
801-
let interval = '';
802-
// below 5 seconds we force the resolution to be per 1ms as interval in scopedVars is not less than 10ms
803-
if (timespanMs < SECOND * 5) {
804-
intervalMs = MILLISECOND;
805-
interval = '1ms';
806-
} else if (intervalMs > HOUR) {
807-
intervalMs = DAY;
808-
interval = '1d';
809-
} else if (intervalMs > MINUTE) {
810-
intervalMs = HOUR;
811-
interval = '1h';
812-
} else if (intervalMs > SECOND) {
813-
intervalMs = MINUTE;
814-
interval = '1m';
815-
} else {
816-
intervalMs = SECOND;
817-
interval = '1s';
818-
}
819798

820-
return { interval, intervalMs };
799+
function getIntervalInfo(timespanMs: number, resolution: number): { interval: string; intervalMs?: number } {
800+
let intervalMs = timespanMs / resolution;
801+
let interval = '';
802+
803+
// below 5 seconds we force the resolution to be per 1ms as interval in scopedVars is not less than 10ms
804+
if (timespanMs < SECOND * 5) {
805+
intervalMs = MILLISECOND;
806+
interval = '1ms';
807+
} else if (intervalMs > HOUR) {
808+
intervalMs = DAY;
809+
interval = '1d';
810+
} else if (intervalMs > 10*MINUTE) {
811+
intervalMs = HOUR;
812+
interval = '1h';
813+
} else if (intervalMs > MINUTE) {
814+
intervalMs = 10*MINUTE;
815+
interval = '10m';
816+
} else if (intervalMs > 10*SECOND) {
817+
intervalMs = MINUTE;
818+
interval = '1m';
819+
} else if (intervalMs > SECOND) {
820+
intervalMs = 10*SECOND;
821+
interval = '10s';
821822
} else {
822-
return { interval: '$__interval' };
823+
intervalMs = SECOND;
824+
interval = '1s';
823825
}
826+
827+
return { interval, intervalMs };
824828
}
825829

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

0 commit comments

Comments
 (0)