共计 1769 个字符,预计需要花费 5 分钟才能阅读完成。
Continuous Query(CQ)是外部周期运行的 InfluxQL 的查问,将查问后果写入指定的 measurement,用它能够实现降采样 downsampling。
联合 CQ 和 RP(Retention Policy),能够将历史数据保留为低精度,最近的数据保留为高精度,以升高存储用量。
Continuous Query 的语法结构:
CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
BEGIN
<cq_query>
END
其中的 <cq_query> 须要一个函数,一个 INTO 字句和一个 GROUP BY time()字句,其语句构造:
SELECT <function[s]> INTO <destination_measurement> FROM <measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<tag_key[s]>]
举个简略的例子
将 cpu.user 数据进行 5m 均匀:
CREATE CONTINUOUS QUERY "cq_5" ON falcon
BEGIN
SELECT mean(value) INTO falcon.autogen."5_cpu.user" FROM falcon.autogen."cpu.user" GROUP BY time(5m), *
END
其中的 falcon.autogen.”5_cpu.user”,falcon 示意 database,autogen 示意 retention policy,5_cpu.user 示意新的 table。
// 查问 cq
> show continuous queries;
name: falcon
name query
---- -----
cq_5 CREATE CONTINUOUS QUERY cq_5 ON falcon BEGIN SELECT mean(value) INTO falcon.autogen."5_cpu.user" FROM falcon.autogen."cpu.user" GROUP BY time(5m), * END
// 查问 cq 中的数据
> select * from "5_cpu.user" order by time desc limit 10;
name: 5_cpu.user
time endpoint mean
---- -------- ----
2020-06-09T04:55:00Z trovedev 6.806252400038498
2020-06-09T04:50:00Z trovedev 13.796289128479335
2020-06-09T04:45:00Z trovedev 16.57212610575366
2020-06-09T04:40:00Z trovedev 28.577591691423635
2020-06-09T04:35:00Z trovedev 6.02882334702075
2020-06-09T04:30:00Z trovedev 4.667398282326042
2020-06-09T04:25:00Z trovedev 4.746237171675345
2020-06-09T04:20:00Z trovedev 5.006169574660594
2020-06-09T04:15:00Z trovedev 5.002280037736261
2020-06-09T04:10:00Z trovedev 4.775274987155538
值得注意的是,CQ 仅对实时的数据进行聚合,不会对历史数据聚合;也就是说,如果没有新的源数据,就不会产生新的聚合点。
逆向援用主动采样
应用通配符 (*) 和 INTO 查问的逆向援用语法,能够将 db 中的所有 measurement 依照对立的聚合办法进行采样,比方:将 prometheus 中的每个 measuremnt 每 10min 采样平均值,而后存入到 opsultra 的雷同名称的 measurement 中
create continuous query "cq_basic" on "prometheus"
begin
select mean(*) into "opsultra"."six_month".:MEASUREMENT from /.*/ group by time(10m),*
end
参考:
1.CQ:https://jasper-zhang1.gitbook…
正文完