在最新的Prometheus PromQL开源一致性认证中,可观测监控 Prometheus 版的通过率为100%(比较基准为开源Prometheus v2.32.1版本),这意味着可观测监控 Prometheus 版在PromQL的使用体验上,与开源版本几乎完全保持一致,最大程度方便用户迁移上云。
背景信息
Prometheus开源一致性认证,是由PromLabs发起,此项认证目前已被纳入开源Prometheus官方的Git项目库。
开源一致性认证会从多个维度比对各个服务提供商提供的服务,与开源版本保持一致的程度。其中包括PromQL、alert_generator、openmetrics、remote_write_receiver和remote_write_sender。其中,PromQL一致性认证项目,涉及采样数据的写入和读取全流程,以最终查询结果与开源实现完全一致作为通过标准,是流程最长的一项测试,也是最能体现最终用户感受的认证项目。
认证结果说明
可观测监控 Prometheus 版产品功能在不断丰富和演进,对于其一致性的评测也是有一定时效性的,对于此项认证,您需要了解以下事项:
- 作为云服务提供商,在跟进Prometheus开源版本的新功能时可能会有一些迟滞,所以在进行PromLabs的开源一致性认证时,会使用当前开源Prometheus最新版本的N-2版本作为认证测试的基准。比如截止2022年02月09日,开源Prometheus的最新版本为v2.33.1,上一个版本为v2.33.0,上上一个版本为v2.32.1,那么就使用v2.32.1版本作为PromLabs的开源一致性认证基准版本。
- 认证配置文件中允许服务提供商配置query_tweaks,即对查询做一些微调,比如增加一些条件或者丢弃一些Label等,虽然这样做是允许的,但如果不使用query_tweaks更好一些。可观测监控 Prometheus 版未使用任何query_tweaks。
- 认证结果的有效期时长为Prometheus的两个小版本(即minor版本)更新时长,或者是12周的时长,这两者之间选择时长较长的那一个为准。
测试结果明细
可观测监控 Prometheus 版PromLabs开源一致性认证的测试用例总数为548,通过数为548,即通过率为100%,具体信息如下:
Query | Outcome |
---|---|
42 | PASS |
1.234 | PASS |
.123 | PASS |
1.23e-3 | PASS |
0x3d | PASS |
Inf | PASS |
+Inf | PASS |
-Inf | PASS |
NaN | PASS |
demo_memory_usage_bytes | PASS |
{__name__="demo_memory_usage_bytes"} | PASS |
demo_memory_usage_bytes{type="free"} | PASS |
demo_memory_usage_bytes{type!="free"} | PASS |
demo_memory_usage_bytes{instance=~"demo.promlabs.com:.*"} | PASS |
demo_memory_usage_bytes{instance=~"host"} | PASS |
demo_memory_usage_bytes{instance!~".*:10000"} | PASS |
demo_memory_usage_bytes{type="free", instance!="demo.promlabs.com:10000"} | PASS |
{type="free", instance!="demo.promlabs.com:10000"} | PASS |
{__name__=~".*"} | PASS |
nonexistent_metric_name | PASS |
demo_memory_usage_bytes offset 1m | PASS |
demo_memory_usage_bytes offset 5m | PASS |
demo_memory_usage_bytes offset 10m | PASS |
demo_memory_usage_bytes offset -1m | PASS |
demo_memory_usage_bytes offset -5m | PASS |
demo_memory_usage_bytes offset -10m | PASS |
demo_intermittent_metric | PASS |
sum(demo_memory_usage_bytes) | PASS |
avg(demo_memory_usage_bytes) | PASS |
max(demo_memory_usage_bytes) | PASS |
min(demo_memory_usage_bytes) | PASS |
count(demo_memory_usage_bytes) | PASS |
stddev(demo_memory_usage_bytes) | PASS |
stdvar(demo_memory_usage_bytes) | PASS |
sum(nonexistent_metric_name) | PASS |
avg(nonexistent_metric_name) | PASS |
max(nonexistent_metric_name) | PASS |
min(nonexistent_metric_name) | PASS |
count(nonexistent_metric_name) | PASS |
stddev(nonexistent_metric_name) | PASS |
stdvar(nonexistent_metric_name) | PASS |
sum by() (demo_memory_usage_bytes) | PASS |
avg by() (demo_memory_usage_bytes) | PASS |
max by() (demo_memory_usage_bytes) | PASS |
min by() (demo_memory_usage_bytes) | PASS |
count by() (demo_memory_usage_bytes) | PASS |
stddev by() (demo_memory_usage_bytes) | PASS |
stdvar by() (demo_memory_usage_bytes) | PASS |
sum by(instance) (demo_memory_usage_bytes) | PASS |
avg by(instance) (demo_memory_usage_bytes) | PASS |
max by(instance) (demo_memory_usage_bytes) | PASS |
min by(instance) (demo_memory_usage_bytes) | PASS |
count by(instance) (demo_memory_usage_bytes) | PASS |
stddev by(instance) (demo_memory_usage_bytes) | PASS |
stdvar by(instance) (demo_memory_usage_bytes) | PASS |
sum by(instance, type) (demo_memory_usage_bytes) | PASS |
avg by(instance, type) (demo_memory_usage_bytes) | PASS |
max by(instance, type) (demo_memory_usage_bytes) | PASS |
min by(instance, type) (demo_memory_usage_bytes) | PASS |
count by(instance, type) (demo_memory_usage_bytes) | PASS |
stddev by(instance, type) (demo_memory_usage_bytes) | PASS |
stdvar by(instance, type) (demo_memory_usage_bytes) | PASS |
sum by(nonexistent) (demo_memory_usage_bytes) | PASS |
avg by(nonexistent) (demo_memory_usage_bytes) | PASS |
max by(nonexistent) (demo_memory_usage_bytes) | PASS |
min by(nonexistent) (demo_memory_usage_bytes) | PASS |
count by(nonexistent) (demo_memory_usage_bytes) | PASS |
stddev by(nonexistent) (demo_memory_usage_bytes) | PASS |
stdvar by(nonexistent) (demo_memory_usage_bytes) | PASS |
sum without() (demo_memory_usage_bytes) | PASS |
avg without() (demo_memory_usage_bytes) | PASS |
max without() (demo_memory_usage_bytes) | PASS |
min without() (demo_memory_usage_bytes) | PASS |
count without() (demo_memory_usage_bytes) | PASS |
stddev without() (demo_memory_usage_bytes) | PASS |
stdvar without() (demo_memory_usage_bytes) | PASS |
sum without(instance) (demo_memory_usage_bytes) | PASS |
avg without(instance) (demo_memory_usage_bytes) | PASS |
max without(instance) (demo_memory_usage_bytes) | PASS |
min without(instance) (demo_memory_usage_bytes) | PASS |
count without(instance) (demo_memory_usage_bytes) | PASS |
stddev without(instance) (demo_memory_usage_bytes) | PASS |
stdvar without(instance) (demo_memory_usage_bytes) | PASS |
sum without(instance, type) (demo_memory_usage_bytes) | PASS |
avg without(instance, type) (demo_memory_usage_bytes) | PASS |
max without(instance, type) (demo_memory_usage_bytes) | PASS |
min without(instance, type) (demo_memory_usage_bytes) | PASS |
count without(instance, type) (demo_memory_usage_bytes) | PASS |
stddev without(instance, type) (demo_memory_usage_bytes) | PASS |
stdvar without(instance, type) (demo_memory_usage_bytes) | PASS |
sum without(nonexistent) (demo_memory_usage_bytes) | PASS |
avg without(nonexistent) (demo_memory_usage_bytes) | PASS |
max without(nonexistent) (demo_memory_usage_bytes) | PASS |
min without(nonexistent) (demo_memory_usage_bytes) | PASS |
count without(nonexistent) (demo_memory_usage_bytes) | PASS |
stddev without(nonexistent) (demo_memory_usage_bytes) | PASS |
stdvar without(nonexistent) (demo_memory_usage_bytes) | PASS |
topk (3, demo_memory_usage_bytes) | PASS |
bottomk (3, demo_memory_usage_bytes) | PASS |
topk by(instance) (2, demo_memory_usage_bytes) | PASS |
bottomk by(instance) (2, demo_memory_usage_bytes) | PASS |
topk without(instance) (2, demo_memory_usage_bytes) | PASS |
bottomk without(instance) (2, demo_memory_usage_bytes) | PASS |
topk without() (2, demo_memory_usage_bytes) | PASS |
bottomk without() (2, demo_memory_usage_bytes) | PASS |
quantile(-0.5, demo_memory_usage_bytes) | PASS |
quantile(0.1, demo_memory_usage_bytes) | PASS |
quantile(0.5, demo_memory_usage_bytes) | PASS |
quantile(0.75, demo_memory_usage_bytes) | PASS |
quantile(0.95, demo_memory_usage_bytes) | PASS |
quantile(0.90, demo_memory_usage_bytes) | PASS |
quantile(0.99, demo_memory_usage_bytes) | PASS |
quantile(1, demo_memory_usage_bytes) | PASS |
quantile(1.5, demo_memory_usage_bytes) | PASS |
avg(max by(type) (demo_memory_usage_bytes)) | PASS |
1 * 2 + 4 / 6 - 10 % 2 ^ 2 | PASS |
demo_num_cpus + (1 == bool 2) | PASS |
demo_num_cpus + (1 != bool 2) | PASS |
demo_num_cpus + (1 < bool 2) | PASS |
demo_num_cpus + (1 > bool 2) | PASS |
demo_num_cpus + (1 <= bool 2) | PASS |
demo_num_cpus + (1 >= bool 2) | PASS |
demo_memory_usage_bytes + 1.2345 | PASS |
demo_memory_usage_bytes - 1.2345 | PASS |
demo_memory_usage_bytes * 1.2345 | PASS |
demo_memory_usage_bytes / 1.2345 | PASS |
demo_memory_usage_bytes % 1.2345 | PASS |
demo_memory_usage_bytes ^ 1.2345 | PASS |
demo_memory_usage_bytes == 1.2345 | PASS |
demo_memory_usage_bytes != 1.2345 | PASS |
demo_memory_usage_bytes < 1.2345 | PASS |
demo_memory_usage_bytes > 1.2345 | PASS |
demo_memory_usage_bytes <= 1.2345 | PASS |
demo_memory_usage_bytes >= 1.2345 | PASS |
demo_memory_usage_bytes == bool 1.2345 | PASS |
demo_memory_usage_bytes != bool 1.2345 | PASS |
demo_memory_usage_bytes < bool 1.2345 | PASS |
demo_memory_usage_bytes > bool 1.2345 | PASS |
demo_memory_usage_bytes <= bool 1.2345 | PASS |
demo_memory_usage_bytes >= bool 1.2345 | PASS |
1.2345 == bool demo_memory_usage_bytes | PASS |
1.2345 != bool demo_memory_usage_bytes | PASS |
1.2345 < bool demo_memory_usage_bytes | PASS |
1.2345 > bool demo_memory_usage_bytes | PASS |
1.2345 <= bool demo_memory_usage_bytes | PASS |
1.2345 >= bool demo_memory_usage_bytes | PASS |
0.12345 + demo_memory_usage_bytes | PASS |
0.12345 - demo_memory_usage_bytes | PASS |
0.12345 * demo_memory_usage_bytes | PASS |
0.12345 / demo_memory_usage_bytes | PASS |
0.12345 % demo_memory_usage_bytes | PASS |
0.12345 ^ demo_memory_usage_bytes | PASS |
0.12345 == demo_memory_usage_bytes | PASS |
0.12345 != demo_memory_usage_bytes | PASS |
0.12345 < demo_memory_usage_bytes | PASS |
0.12345 > demo_memory_usage_bytes | PASS |
0.12345 <= demo_memory_usage_bytes | PASS |
0.12345 >= demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) + demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) - demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) * demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) / demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) % demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) ^ demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) == demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) != demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) < demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) > demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) <= demo_memory_usage_bytes | PASS |
(1 * 2 + 4 / 6 - (10%7)^2) >= demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes + (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes - (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes * (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes / (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes % (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes ^ (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes == (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes != (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes < (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes > (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes <= (1 * 2 + 4 / 6 - 10) | PASS |
demo_memory_usage_bytes >= (1 * 2 + 4 / 6 - 10) | PASS |
timestamp(demo_memory_usage_bytes * 1) | PASS |
timestamp(-demo_memory_usage_bytes) | PASS |
demo_memory_usage_bytes + on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes - on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes * on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes / on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes % on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes ^ on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes == on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes != on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes < on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes > on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes <= on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes >= on(instance, job, type) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) + on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) - on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) * on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) / on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) % on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) ^ on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) == on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) != on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) < on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) > on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) <= on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
sum by(instance, type) (demo_memory_usage_bytes) >= on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes == bool on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes != bool on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes < bool on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes > bool on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes <= bool on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes >= bool on(instance, job, type) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes / on(instance, job, type, __name__) demo_memory_usage_bytes | PASS |
sum without(job) (demo_memory_usage_bytes) / on(instance, type) demo_memory_usage_bytes | PASS |
sum without(job) (demo_memory_usage_bytes) / on(instance, type) group_left demo_memory_usage_bytes | PASS |
sum without(job) (demo_memory_usage_bytes) / on(instance, type) group_left(job) demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes / on(instance, job) group_left demo_num_cpus | PASS |
demo_memory_usage_bytes / on(instance, type, job, non_existent) demo_memory_usage_bytes | PASS |
demo_num_cpus * Inf | PASS |
demo_num_cpus * -Inf | PASS |
demo_num_cpus * NaN | PASS |
demo_memory_usage_bytes + -(1) | PASS |
-demo_memory_usage_bytes | PASS |
-1 ^ 2 | PASS |
1 + time() | PASS |
1 - time() | PASS |
1 * time() | PASS |
1 / time() | PASS |
1 % time() | PASS |
1 ^ time() | PASS |
time() + 1 | PASS |
time() - 1 | PASS |
time() * 1 | PASS |
time() / 1 | PASS |
time() % 1 | PASS |
time() ^ 1 | PASS |
time() == bool 1 | PASS |
time() != bool 1 | PASS |
time() < bool 1 | PASS |
time() > bool 1 | PASS |
time() <= bool 1 | PASS |
time() >= bool 1 | PASS |
1 == bool time() | PASS |
1 != bool time() | PASS |
1 < bool time() | PASS |
1 > bool time() | PASS |
1 <= bool time() | PASS |
1 >= bool time() | PASS |
time() + time() | PASS |
time() - time() | PASS |
time() * time() | PASS |
time() / time() | PASS |
time() % time() | PASS |
time() ^ time() | PASS |
time() == bool time() | PASS |
time() != bool time() | PASS |
time() < bool time() | PASS |
time() > bool time() | PASS |
time() <= bool time() | PASS |
time() >= bool time() | PASS |
time() + demo_memory_usage_bytes | PASS |
time() - demo_memory_usage_bytes | PASS |
time() * demo_memory_usage_bytes | PASS |
time() / demo_memory_usage_bytes | PASS |
time() % demo_memory_usage_bytes | PASS |
time() ^ demo_memory_usage_bytes | PASS |
time() == demo_memory_usage_bytes | PASS |
time() != demo_memory_usage_bytes | PASS |
time() < demo_memory_usage_bytes | PASS |
time() > demo_memory_usage_bytes | PASS |
time() <= demo_memory_usage_bytes | PASS |
time() >= demo_memory_usage_bytes | PASS |
demo_memory_usage_bytes + time() | PASS |
demo_memory_usage_bytes - time() | PASS |
demo_memory_usage_bytes * time() | PASS |
demo_memory_usage_bytes / time() | PASS |
demo_memory_usage_bytes % time() | PASS |
demo_memory_usage_bytes ^ time() | PASS |
demo_memory_usage_bytes == time() | PASS |
demo_memory_usage_bytes != time() | PASS |
demo_memory_usage_bytes < time() | PASS |
demo_memory_usage_bytes > time() | PASS |
demo_memory_usage_bytes <= time() | PASS |
demo_memory_usage_bytes >= time() | PASS |
sum_over_time(demo_memory_usage_bytes[1s]) | PASS |
sum_over_time(demo_memory_usage_bytes[15s]) | PASS |
sum_over_time(demo_memory_usage_bytes[1m]) | PASS |
sum_over_time(demo_memory_usage_bytes[5m]) | PASS |
sum_over_time(demo_memory_usage_bytes[15m]) | PASS |
sum_over_time(demo_memory_usage_bytes[1h]) | PASS |
avg_over_time(demo_memory_usage_bytes[1s]) | PASS |
avg_over_time(demo_memory_usage_bytes[15s]) | PASS |
avg_over_time(demo_memory_usage_bytes[1m]) | PASS |
avg_over_time(demo_memory_usage_bytes[5m]) | PASS |
avg_over_time(demo_memory_usage_bytes[15m]) | PASS |
avg_over_time(demo_memory_usage_bytes[1h]) | PASS |
max_over_time(demo_memory_usage_bytes[1s]) | PASS |
max_over_time(demo_memory_usage_bytes[15s]) | PASS |
max_over_time(demo_memory_usage_bytes[1m]) | PASS |
max_over_time(demo_memory_usage_bytes[5m]) | PASS |
max_over_time(demo_memory_usage_bytes[15m]) | PASS |
max_over_time(demo_memory_usage_bytes[1h]) | PASS |
min_over_time(demo_memory_usage_bytes[1s]) | PASS |
min_over_time(demo_memory_usage_bytes[15s]) | PASS |
min_over_time(demo_memory_usage_bytes[1m]) | PASS |
min_over_time(demo_memory_usage_bytes[5m]) | PASS |
min_over_time(demo_memory_usage_bytes[15m]) | PASS |
min_over_time(demo_memory_usage_bytes[1h]) | PASS |
count_over_time(demo_memory_usage_bytes[1s]) | PASS |
count_over_time(demo_memory_usage_bytes[15s]) | PASS |
count_over_time(demo_memory_usage_bytes[1m]) | PASS |
count_over_time(demo_memory_usage_bytes[5m]) | PASS |
count_over_time(demo_memory_usage_bytes[15m]) | PASS |
count_over_time(demo_memory_usage_bytes[1h]) | PASS |
stddev_over_time(demo_memory_usage_bytes[1s]) | PASS |
stddev_over_time(demo_memory_usage_bytes[15s]) | PASS |
stddev_over_time(demo_memory_usage_bytes[1m]) | PASS |
stddev_over_time(demo_memory_usage_bytes[5m]) | PASS |
stddev_over_time(demo_memory_usage_bytes[15m]) | PASS |
stddev_over_time(demo_memory_usage_bytes[1h]) | PASS |
stdvar_over_time(demo_memory_usage_bytes[1s]) | PASS |
stdvar_over_time(demo_memory_usage_bytes[15s]) | PASS |
stdvar_over_time(demo_memory_usage_bytes[1m]) | PASS |
stdvar_over_time(demo_memory_usage_bytes[5m]) | PASS |
stdvar_over_time(demo_memory_usage_bytes[15m]) | PASS |
stdvar_over_time(demo_memory_usage_bytes[1h]) | PASS |
absent_over_time(demo_memory_usage_bytes[1s]) | PASS |
absent_over_time(demo_memory_usage_bytes[15s]) | PASS |
absent_over_time(demo_memory_usage_bytes[1m]) | PASS |
absent_over_time(demo_memory_usage_bytes[5m]) | PASS |
absent_over_time(demo_memory_usage_bytes[15m]) | PASS |
absent_over_time(demo_memory_usage_bytes[1h]) | PASS |
last_over_time(demo_memory_usage_bytes[1s]) | PASS |
last_over_time(demo_memory_usage_bytes[15s]) | PASS |
last_over_time(demo_memory_usage_bytes[1m]) | PASS |
last_over_time(demo_memory_usage_bytes[5m]) | PASS |
last_over_time(demo_memory_usage_bytes[15m]) | PASS |
last_over_time(demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(-0.5, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(-0.5, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(-0.5, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(-0.5, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(-0.5, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(-0.5, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(0.1, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(0.1, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(0.1, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(0.1, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(0.1, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(0.1, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(0.5, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(0.5, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(0.5, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(0.5, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(0.5, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(0.5, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(0.75, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(0.75, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(0.75, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(0.75, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(0.75, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(0.75, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(0.95, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(0.95, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(0.95, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(0.95, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(0.95, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(0.95, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(0.90, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(0.90, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(0.90, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(0.90, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(0.90, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(0.90, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(0.99, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(0.99, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(0.99, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(0.99, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(0.99, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(0.99, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(1, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(1, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(1, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(1, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(1, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(1, demo_memory_usage_bytes[1h]) | PASS |
quantile_over_time(1.5, demo_memory_usage_bytes[1s]) | PASS |
quantile_over_time(1.5, demo_memory_usage_bytes[15s]) | PASS |
quantile_over_time(1.5, demo_memory_usage_bytes[1m]) | PASS |
quantile_over_time(1.5, demo_memory_usage_bytes[5m]) | PASS |
quantile_over_time(1.5, demo_memory_usage_bytes[15m]) | PASS |
quantile_over_time(1.5, demo_memory_usage_bytes[1h]) | PASS |
timestamp(demo_num_cpus) | PASS |
timestamp(timestamp(demo_num_cpus)) | PASS |
abs(demo_memory_usage_bytes) | PASS |
ceil(demo_memory_usage_bytes) | PASS |
floor(demo_memory_usage_bytes) | PASS |
exp(demo_memory_usage_bytes) | PASS |
sqrt(demo_memory_usage_bytes) | PASS |
ln(demo_memory_usage_bytes) | PASS |
log2(demo_memory_usage_bytes) | PASS |
log10(demo_memory_usage_bytes) | PASS |
round(demo_memory_usage_bytes) | PASS |
abs(-demo_memory_usage_bytes) | PASS |
ceil(-demo_memory_usage_bytes) | PASS |
floor(-demo_memory_usage_bytes) | PASS |
exp(-demo_memory_usage_bytes) | PASS |
sqrt(-demo_memory_usage_bytes) | PASS |
ln(-demo_memory_usage_bytes) | PASS |
log2(-demo_memory_usage_bytes) | PASS |
log10(-demo_memory_usage_bytes) | PASS |
round(-demo_memory_usage_bytes) | PASS |
delta(nonexistent_metric[5m]) | PASS |
rate(nonexistent_metric[5m]) | PASS |
increase(nonexistent_metric[5m]) | PASS |
delta(demo_cpu_usage_seconds_total[1s]) | PASS |
delta(demo_cpu_usage_seconds_total[15s]) | PASS |
delta(demo_cpu_usage_seconds_total[1m]) | PASS |
delta(demo_cpu_usage_seconds_total[5m]) | PASS |
delta(demo_cpu_usage_seconds_total[15m]) | PASS |
delta(demo_cpu_usage_seconds_total[1h]) | PASS |
rate(demo_cpu_usage_seconds_total[1s]) | PASS |
rate(demo_cpu_usage_seconds_total[15s]) | PASS |
rate(demo_cpu_usage_seconds_total[1m]) | PASS |
rate(demo_cpu_usage_seconds_total[5m]) | PASS |
rate(demo_cpu_usage_seconds_total[15m]) | PASS |
rate(demo_cpu_usage_seconds_total[1h]) | PASS |
increase(demo_cpu_usage_seconds_total[1s]) | PASS |
increase(demo_cpu_usage_seconds_total[15s]) | PASS |
increase(demo_cpu_usage_seconds_total[1m]) | PASS |
increase(demo_cpu_usage_seconds_total[5m]) | PASS |
increase(demo_cpu_usage_seconds_total[15m]) | PASS |
increase(demo_cpu_usage_seconds_total[1h]) | PASS |
deriv(demo_disk_usage_bytes[1s]) | PASS |
deriv(demo_disk_usage_bytes[15s]) | PASS |
deriv(demo_disk_usage_bytes[1m]) | PASS |
deriv(demo_disk_usage_bytes[5m]) | PASS |
deriv(demo_disk_usage_bytes[15m]) | PASS |
deriv(demo_disk_usage_bytes[1h]) | PASS |
predict_linear(demo_disk_usage_bytes[1s], 600) | PASS |
predict_linear(demo_disk_usage_bytes[15s], 600) | PASS |
predict_linear(demo_disk_usage_bytes[1m], 600) | PASS |
predict_linear(demo_disk_usage_bytes[5m], 600) | PASS |
predict_linear(demo_disk_usage_bytes[15m], 600) | PASS |
predict_linear(demo_disk_usage_bytes[1h], 600) | PASS |
time() | PASS |
label_replace(demo_num_cpus, "job", "destination-value-$1", "instance", "demo.promlabs.com:(.*)") | PASS |
label_replace(demo_num_cpus, "job", "destination-value-$1", "instance", "host:(.*)") | PASS |
label_replace(demo_num_cpus, "job", "$1-$2", "instance", "local(.*):(.*)") | PASS |
label_replace(demo_num_cpus, "job", "value-$1", "nonexistent-src", "source-value-(.*)") | PASS |
label_replace(demo_num_cpus, "job", "value-$1", "nonexistent-src", "(.*)") | PASS |
label_replace(demo_num_cpus, "job", "value-$1", "instance", "non-matching-regex") | PASS |
label_replace(demo_num_cpus, "job", "", "dst", ".*") | PASS |
label_replace(demo_num_cpus, "job", "value-$1", "src", "(.*") | PASS |
label_replace(demo_num_cpus, "~invalid", "", "src", "(.*)") | PASS |
label_replace(demo_num_cpus, "instance", "", "", "") | PASS |
label_join(demo_num_cpus, "new_label", "-", "instance", "job") | PASS |
label_join(demo_num_cpus, "job", "-", "instance", "job") | PASS |
label_join(demo_num_cpus, "job", "-", "instance") | PASS |
label_join(demo_num_cpus, "~invalid", "-", "instance") | PASS |
day_of_month() | PASS |
day_of_week() | PASS |
days_in_month() | PASS |
hour() | PASS |
minute() | PASS |
month() | PASS |
year() | PASS |
day_of_month(demo_batch_last_success_timestamp_seconds offset 1m) | PASS |
day_of_month(demo_batch_last_success_timestamp_seconds offset 5m) | PASS |
day_of_month(demo_batch_last_success_timestamp_seconds offset 10m) | PASS |
day_of_week(demo_batch_last_success_timestamp_seconds offset 1m) | PASS |
day_of_week(demo_batch_last_success_timestamp_seconds offset 5m) | PASS |
day_of_week(demo_batch_last_success_timestamp_seconds offset 10m) | PASS |
days_in_month(demo_batch_last_success_timestamp_seconds offset 1m) | PASS |
days_in_month(demo_batch_last_success_timestamp_seconds offset 5m) | PASS |
days_in_month(demo_batch_last_success_timestamp_seconds offset 10m) | PASS |
hour(demo_batch_last_success_timestamp_seconds offset 1m) | PASS |
hour(demo_batch_last_success_timestamp_seconds offset 5m) | PASS |
hour(demo_batch_last_success_timestamp_seconds offset 10m) | PASS |
minute(demo_batch_last_success_timestamp_seconds offset 1m) | PASS |
minute(demo_batch_last_success_timestamp_seconds offset 5m) | PASS |
minute(demo_batch_last_success_timestamp_seconds offset 10m) | PASS |
month(demo_batch_last_success_timestamp_seconds offset 1m) | PASS |
month(demo_batch_last_success_timestamp_seconds offset 5m) | PASS |
month(demo_batch_last_success_timestamp_seconds offset 10m) | PASS |
year(demo_batch_last_success_timestamp_seconds offset 1m) | PASS |
year(demo_batch_last_success_timestamp_seconds offset 5m) | PASS |
year(demo_batch_last_success_timestamp_seconds offset 10m) | PASS |
idelta(demo_cpu_usage_seconds_total[1s]) | PASS |
idelta(demo_cpu_usage_seconds_total[15s]) | PASS |
idelta(demo_cpu_usage_seconds_total[1m]) | PASS |
idelta(demo_cpu_usage_seconds_total[5m]) | PASS |
idelta(demo_cpu_usage_seconds_total[15m]) | PASS |
idelta(demo_cpu_usage_seconds_total[1h]) | PASS |
irate(demo_cpu_usage_seconds_total[1s]) | PASS |
irate(demo_cpu_usage_seconds_total[15s]) | PASS |
irate(demo_cpu_usage_seconds_total[1m]) | PASS |
irate(demo_cpu_usage_seconds_total[5m]) | PASS |
irate(demo_cpu_usage_seconds_total[15m]) | PASS |
irate(demo_cpu_usage_seconds_total[1h]) | PASS |
clamp_min(demo_memory_usage_bytes, 2) | PASS |
clamp_max(demo_memory_usage_bytes, 2) | PASS |
clamp(demo_memory_usage_bytes, 0, 1) | PASS |
clamp(demo_memory_usage_bytes, 0, 1000000000000) | PASS |
clamp(demo_memory_usage_bytes, 1000000000000, 0) | PASS |
clamp(demo_memory_usage_bytes, 1000000000000, 1000000000000) | PASS |
resets(demo_cpu_usage_seconds_total[1s]) | PASS |
resets(demo_cpu_usage_seconds_total[15s]) | PASS |
resets(demo_cpu_usage_seconds_total[1m]) | PASS |
resets(demo_cpu_usage_seconds_total[5m]) | PASS |
resets(demo_cpu_usage_seconds_total[15m]) | PASS |
resets(demo_cpu_usage_seconds_total[1h]) | PASS |
changes(demo_batch_last_success_timestamp_seconds[1s]) | PASS |
changes(demo_batch_last_success_timestamp_seconds[15s]) | PASS |
changes(demo_batch_last_success_timestamp_seconds[1m]) | PASS |
changes(demo_batch_last_success_timestamp_seconds[5m]) | PASS |
changes(demo_batch_last_success_timestamp_seconds[15m]) | PASS |
changes(demo_batch_last_success_timestamp_seconds[1h]) | PASS |
vector(1.23) | PASS |
vector(time()) | PASS |
histogram_quantile(-0.5, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(0.1, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(0.5, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(0.75, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(0.95, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(0.90, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(0.99, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(1, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(1.5, rate(demo_api_request_duration_seconds_bucket[1m])) | PASS |
histogram_quantile(0.9, nonexistent_metric) | PASS |
histogram_quantile(0.9, demo_memory_usage_bytes) | PASS |
histogram_quantile(0.9, {__name__=~"demo_api_request_duration_seconds_.+"}) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.1, 0.1) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.1, 0.5) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.1, 0.8) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.5, 0.1) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.5, 0.5) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.5, 0.8) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.8, 0.1) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.8, 0.5) | PASS |
holt_winters(demo_disk_usage_bytes[10m], 0.8, 0.8) | PASS |
count_values("value", demo_api_request_duration_seconds_bucket) | PASS |
absent(demo_memory_usage_bytes) | PASS |
absent(nonexistent_metric_name) | PASS |
max_over_time((time() - max(demo_batch_last_success_timestamp_seconds) < 1000)[5m:10s] offset 5m) | PASS |
avg_over_time(rate(demo_cpu_usage_seconds_total[1m])[2m:10s]) | PASS |