In the latest Prometheus PromQL conformance certification, the pass rate of Alibaba Cloud Managed Service for Prometheus is 100% (the benchmark is open source Prometheus v2.32.1). Alibaba Cloud Managed Servi for Prometheus provides almost the same use experience of PromQL as open source Prometheus. You can migrate your business to the cloud with minimal code changes.
Background information
Prometheus conformance certification is initiated by PromLabs. The sample code is provided on the official GitHub of open source Prometheus.
You can use the sample code to compare the extent to which the services provided by each service provider conform to open source Prometheus. The following dimensions can be tested: PromQL, alert_generator, openmetrics, remote_write_receiver, and remote_write_sender. A PromQL compliance test involves the whole process of writing and reading sampled data. The criterion for conformance is that the final query result of the tested service is the same as that of open source Prometheus. A PromQL compliance test requires the longest process compared with other types of compliance tests. It can best reflect the experience of end users.
Results of conformance certification
The features of Alibaba Cloud Managed Service for Prometheus are constantly updated. The results of conformance certification are valid for a specific period of time. Take note of the following information:
- As a cloud service provider, Alibaba Cloud may lag behind the latest features of open source Prometheus. Therefore, when Alibaba Cloud performs conformance certification of PromLabs, the N - 2 version (N stands for the latest version) of open source Prometheus is used as the benchmark. For example, as of February 9, 2022, the most recent versions of open source Prometheus are v2.33.1, v2.33.0, and v2.32.1. In this case, v2.32.1 is used as the benchmark for conformance certification of PromLabs.
- Service providers are allowed to configure query_tweaks in configuration files, for example, adding some conditions or discarding some labels. Although query_tweaks configurations are allowed, they are not recommended. Alibaba Cloud Managed Service for Prometheus does not use any query_tweaks configurations.
- The results of conformance certification are valid for 12 weeks or two minor Prometheus releases. The longer duration between the two shall prevail.
Test results of Alibaba Cloud Managed Service for Prometheus
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 |