在最新的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 |