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

In the latest Prometheus conformance certification, the total number of test cases for Alibaba Cloud Managed Service for Prometheus is 548, and the number of passes is 548. The pass rate is 100%. The following table lists the details of the test results.
QueryOutcome
42PASS
1.234PASS
.123PASS
1.23e-3PASS
0x3dPASS
InfPASS
+InfPASS
-InfPASS
NaNPASS
demo_memory_usage_bytesPASS
{__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_namePASS
demo_memory_usage_bytes offset 1mPASS
demo_memory_usage_bytes offset 5mPASS
demo_memory_usage_bytes offset 10mPASS
demo_memory_usage_bytes offset -1mPASS
demo_memory_usage_bytes offset -5mPASS
demo_memory_usage_bytes offset -10mPASS
demo_intermittent_metricPASS
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 ^ 2PASS
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.2345PASS
demo_memory_usage_bytes - 1.2345PASS
demo_memory_usage_bytes * 1.2345PASS
demo_memory_usage_bytes / 1.2345PASS
demo_memory_usage_bytes % 1.2345PASS
demo_memory_usage_bytes ^ 1.2345PASS
demo_memory_usage_bytes == 1.2345PASS
demo_memory_usage_bytes != 1.2345PASS
demo_memory_usage_bytes < 1.2345PASS
demo_memory_usage_bytes > 1.2345PASS
demo_memory_usage_bytes <= 1.2345PASS
demo_memory_usage_bytes >= 1.2345PASS
demo_memory_usage_bytes == bool 1.2345PASS
demo_memory_usage_bytes != bool 1.2345PASS
demo_memory_usage_bytes < bool 1.2345PASS
demo_memory_usage_bytes > bool 1.2345PASS
demo_memory_usage_bytes <= bool 1.2345PASS
demo_memory_usage_bytes >= bool 1.2345PASS
1.2345 == bool demo_memory_usage_bytesPASS
1.2345 != bool demo_memory_usage_bytesPASS
1.2345 < bool demo_memory_usage_bytesPASS
1.2345 > bool demo_memory_usage_bytesPASS
1.2345 <= bool demo_memory_usage_bytesPASS
1.2345 >= bool demo_memory_usage_bytesPASS
0.12345 + demo_memory_usage_bytesPASS
0.12345 - demo_memory_usage_bytesPASS
0.12345 * demo_memory_usage_bytesPASS
0.12345 / demo_memory_usage_bytesPASS
0.12345 % demo_memory_usage_bytesPASS
0.12345 ^ demo_memory_usage_bytesPASS
0.12345 == demo_memory_usage_bytesPASS
0.12345 != demo_memory_usage_bytesPASS
0.12345 < demo_memory_usage_bytesPASS
0.12345 > demo_memory_usage_bytesPASS
0.12345 <= demo_memory_usage_bytesPASS
0.12345 >= demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) + demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) - demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) * demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) / demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) % demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) ^ demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) == demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) != demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) < demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) > demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) <= demo_memory_usage_bytesPASS
(1 * 2 + 4 / 6 - (10%7)^2) >= demo_memory_usage_bytesPASS
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_bytesPASS
demo_memory_usage_bytes - on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes * on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes / on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes % on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes ^ on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes == on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes != on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes < on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes > on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes <= on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes >= on(instance, job, type) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) + on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) - on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) * on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) / on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) % on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) ^ on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) == on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) != on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) < on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) > on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) <= on(instance, type) group_left(job) demo_memory_usage_bytesPASS
sum by(instance, type) (demo_memory_usage_bytes) >= on(instance, type) group_left(job) demo_memory_usage_bytesPASS
demo_memory_usage_bytes == bool on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes != bool on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes < bool on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes > bool on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes <= bool on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes >= bool on(instance, job, type) demo_memory_usage_bytesPASS
demo_memory_usage_bytes / on(instance, job, type, __name__) demo_memory_usage_bytesPASS
sum without(job) (demo_memory_usage_bytes) / on(instance, type) demo_memory_usage_bytesPASS
sum without(job) (demo_memory_usage_bytes) / on(instance, type) group_left demo_memory_usage_bytesPASS
sum without(job) (demo_memory_usage_bytes) / on(instance, type) group_left(job) demo_memory_usage_bytesPASS
demo_memory_usage_bytes / on(instance, job) group_left demo_num_cpusPASS
demo_memory_usage_bytes / on(instance, type, job, non_existent) demo_memory_usage_bytesPASS
demo_num_cpus * InfPASS
demo_num_cpus * -InfPASS
demo_num_cpus * NaNPASS
demo_memory_usage_bytes + -(1)PASS
-demo_memory_usage_bytesPASS
-1 ^ 2PASS
1 + time()PASS
1 - time()PASS
1 * time()PASS
1 / time()PASS
1 % time()PASS
1 ^ time()PASS
time() + 1PASS
time() - 1PASS
time() * 1PASS
time() / 1PASS
time() % 1PASS
time() ^ 1PASS
time() == bool 1PASS
time() != bool 1PASS
time() < bool 1PASS
time() > bool 1PASS
time() <= bool 1PASS
time() >= bool 1PASS
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_bytesPASS
time() - demo_memory_usage_bytesPASS
time() * demo_memory_usage_bytesPASS
time() / demo_memory_usage_bytesPASS
time() % demo_memory_usage_bytesPASS
time() ^ demo_memory_usage_bytesPASS
time() == demo_memory_usage_bytesPASS
time() != demo_memory_usage_bytesPASS
time() < demo_memory_usage_bytesPASS
time() > demo_memory_usage_bytesPASS
time() <= demo_memory_usage_bytesPASS
time() >= demo_memory_usage_bytesPASS
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