Grafana Loki query_range API的since参数无效问题咨询
关于Grafana Loki query_range API中
since参数无效的问题 核心原因
Loki的query_range API对参数优先级有明确规则:since参数的优先级低于start和end。
- 只要你指定了
start和end,since就会被直接忽略,不会对查询产生任何影响,也不会抛出错误——这就是你添加该参数后没有效果的根本原因。 - 只有在完全不设置
start和end的情况下,since才会生效:此时查询的时间范围自动设为「当前时间减去since值」(作为起始时间)到「当前时间」(作为结束时间)。
正确使用since的代码示例
要让since生效,必须移除代码中start和end的参数设置,修改后的代码如下:
const url = new URL('http://localhost:3100/loki/api/v1/query_range'); /* query */ url.searchParams.set('query', '{job="bob_job", branch="master"}'); /* limit */ url.searchParams.set('limit', '500'); // 移除start和end的设置 /* since */ url.searchParams.set('since', '5m'); // 查询最近5分钟的日志 /* direction */ url.searchParams.set('direction', 'forward'); console.log(url.toString()); fetch(url.toString(), { method: 'POST', }) .then((response) => response.json()) .then((obj) => { console.log(obj); }) .catch(console.error);
补充说明
since支持的时间单位包括:s(秒)、m(分钟)、h(小时)、d(天)等,比如1h30m表示1小时30分钟。- 如果需要自定义固定时间范围(而非相对于当前时间的回溯),必须使用
start和end参数,此时无需添加since,添加了也不会生效。
内容的提问来源于stack exchange,提问作者user22009348
相关产品推荐
相关产品推荐

