最新の Prometheus PromQL 適合性認定において、Alibaba Cloud Managed Service for Prometheus の合格率は 100% です(ベンチマークはオープンソース Prometheus v2.32.1)。Alibaba Cloud Managed Service for Prometheus は、オープンソース Prometheus とほぼ同じ PromQL の使用体験を提供します。最小限のコード変更でビジネスをクラウドに移行できます。
背景情報
Prometheus 適合性認定は、PromLabs によって開始されます。サンプルコードは、オープンソース Prometheus の公式 GitHub で提供されています。
サンプルコードを使用して、各サービスプロバイダーが提供するサービスがオープンソース Prometheus にどの程度適合しているかを比較できます。テスト可能なディメンションは、PromQL、alert_generator、openmetrics、remote_write_receiver、remote_write_sender です。PromQL 適合性テストには、サンプルデータの書き込みと読み取りの全プロセスが含まれます。適合性の基準は、テスト対象サービスの最終的なクエリ結果がオープンソース Prometheus の結果と同じであることです。PromQL 適合性テストは、他のタイプの適合性テストと比較して、最も長いプロセスが必要です。これはエンドユーザーのエクスペリエンスを最もよく反映しています。
適合性認定の結果
Alibaba Cloud Managed Service for Prometheus の機能は常に更新されています。適合性認定の結果は、特定の期間にわたって有効です。次の情報に注意してください。
- クラウドサービスプロバイダーとして、Alibaba Cloud はオープンソース Prometheus の最新機能に遅れをとる可能性があります。したがって、Alibaba Cloud が PromLabs の適合性認定を実行する場合、オープンソース Prometheus の N - 2 バージョン(N は最新バージョンを表す)がベンチマークとして使用されます。たとえば、2022 年 2 月 9 日現在、オープンソース Prometheus の最新バージョンは v2.33.1、v2.33.0、v2.32.1 です。この場合、v2.32.1 が PromLabs の適合性認定のベンチマークとして使用されます。
- サービスプロバイダーは、構成ファイルで query_tweaks を構成できます。たとえば、条件を追加したり、ラベルを破棄したりできます。query_tweaks 構成は許可されていますが、推奨されません。Alibaba Cloud Managed Service for Prometheus は query_tweaks 構成を使用していません。
- 適合性認定の結果は、12 週間または 2 つのマイナー Prometheus リリースまで有効です。2 つのうち、期間が長い方が優先されます。
Alibaba Cloud Managed Service for Prometheus のテスト結果
| クエリ | 結果 |
| 42 | 合格 |
| 1.234 | 合格 |
| .123 | 合格 |
| 1.23e-3 | 合格 |
| 0x3d | 合格 |
| Inf | 合格 |
| +Inf | 合格 |
| -Inf | 合格 |
| NaN | 合格 |
| demo_memory_usage_bytes | 合格 |
| {__name__="demo_memory_usage_bytes"} | 合格 |
| demo_memory_usage_bytes{type="free"} | 合格 |
| demo_memory_usage_bytes{type!="free"} | 合格 |
| demo_memory_usage_bytes{instance=~"demo.promlabs.com:.*"} | 合格 |
| demo_memory_usage_bytes{instance=~"host"} | 合格 |
| demo_memory_usage_bytes{instance!~".*:10000"} | 合格 |
| demo_memory_usage_bytes{type="free", instance!="demo.promlabs.com:10000"} | 合格 |
| {type="free", instance!="demo.promlabs.com:10000"} | 合格 |
| {__name__=~".*"} | 合格 |
| nonexistent_metric_name | 合格 |
| demo_memory_usage_bytes offset 1m | 合格 |
| demo_memory_usage_bytes offset 5m | 合格 |
| demo_memory_usage_bytes offset 10m | 合格 |
| demo_memory_usage_bytes offset -1m | 合格 |
| demo_memory_usage_bytes offset -5m | 合格 |
| demo_memory_usage_bytes offset -10m | 合格 |
| demo_intermittent_metric | 合格 |
| sum(demo_memory_usage_bytes) | 合格 |
| avg(demo_memory_usage_bytes) | 合格 |
| max(demo_memory_usage_bytes) | 合格 |
| min(demo_memory_usage_bytes) | 合格 |
| count(demo_memory_usage_bytes) | 合格 |
| stddev(demo_memory_usage_bytes) | 合格 |
| stdvar(demo_memory_usage_bytes) | 合格 |
| sum(nonexistent_metric_name) | 合格 |
| avg(nonexistent_metric_name) | 合格 |
| max(nonexistent_metric_name) | 合格 |
| min(nonexistent_metric_name) | 合格 |
| count(nonexistent_metric_name) | 合格 |
| stddev(nonexistent_metric_name) | 合格 |
| stdvar(nonexistent_metric_name) | 合格 |
| sum by() (demo_memory_usage_bytes) | 合格 |
| avg by() (demo_memory_usage_bytes) | 合格 |
| max by() (demo_memory_usage_bytes) | 合格 |
| min by() (demo_memory_usage_bytes) | 合格 |
| count by() (demo_memory_usage_bytes) | 合格 |
| stddev by() (demo_memory_usage_bytes) | 合格 |
| stdvar by() (demo_memory_usage_bytes) | 合格 |
| sum by(instance) (demo_memory_usage_bytes) | 合格 |
| avg by(instance) (demo_memory_usage_bytes) | 合格 |
| max by(instance) (demo_memory_usage_bytes) | 合格 |
| min by(instance) (demo_memory_usage_bytes) | 合格 |
| count by(instance) (demo_memory_usage_bytes) | 合格 |
| stddev by(instance) (demo_memory_usage_bytes) | 合格 |
| stdvar by(instance) (demo_memory_usage_bytes) | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) | 合格 |
| avg by(instance, type) (demo_memory_usage_bytes) | 合格 |
| max by(instance, type) (demo_memory_usage_bytes) | 合格 |
| min by(instance, type) (demo_memory_usage_bytes) | 合格 |
| count by(instance, type) (demo_memory_usage_bytes) | 合格 |
| stddev by(instance, type) (demo_memory_usage_bytes) | 合格 |
| stdvar by(instance, type) (demo_memory_usage_bytes) | 合格 |
| sum by(nonexistent) (demo_memory_usage_bytes) | 合格 |
| avg by(nonexistent) (demo_memory_usage_bytes) | 合格 |
| max by(nonexistent) (demo_memory_usage_bytes) | 合格 |
| min by(nonexistent) (demo_memory_usage_bytes) | 合格 |
| count by(nonexistent) (demo_memory_usage_bytes) | 合格 |
| stddev by(nonexistent) (demo_memory_usage_bytes) | 合格 |
| stdvar by(nonexistent) (demo_memory_usage_bytes) | 合格 |
| sum without() (demo_memory_usage_bytes) | 合格 |
| avg without() (demo_memory_usage_bytes) | 合格 |
| max without() (demo_memory_usage_bytes) | 合格 |
| min without() (demo_memory_usage_bytes) | 合格 |
| count without() (demo_memory_usage_bytes) | 合格 |
| stddev without() (demo_memory_usage_bytes) | 合格 |
| stdvar without() (demo_memory_usage_bytes) | 合格 |
| sum without(instance) (demo_memory_usage_bytes) | 合格 |
| avg without(instance) (demo_memory_usage_bytes) | 合格 |
| max without(instance) (demo_memory_usage_bytes) | 合格 |
| min without(instance) (demo_memory_usage_bytes) | 合格 |
| count without(instance) (demo_memory_usage_bytes) | 合格 |
| stddev without(instance) (demo_memory_usage_bytes) | 合格 |
| stdvar without(instance) (demo_memory_usage_bytes) | 合格 |
| sum without(instance, type) (demo_memory_usage_bytes) | 合格 |
| avg without(instance, type) (demo_memory_usage_bytes) | 合格 |
| max without(instance, type) (demo_memory_usage_bytes) | 合格 |
| min without(instance, type) (demo_memory_usage_bytes) | 合格 |
| count without(instance, type) (demo_memory_usage_bytes) | 合格 |
| stddev without(instance, type) (demo_memory_usage_bytes) | 合格 |
| stdvar without(instance, type) (demo_memory_usage_bytes) | 合格 |
| sum without(nonexistent) (demo_memory_usage_bytes) | 合格 |
| avg without(nonexistent) (demo_memory_usage_bytes) | 合格 |
| max without(nonexistent) (demo_memory_usage_bytes) | 合格 |
| min without(nonexistent) (demo_memory_usage_bytes) | 合格 |
| count without(nonexistent) (demo_memory_usage_bytes) | 合格 |
| stddev without(nonexistent) (demo_memory_usage_bytes) | 合格 |
| stdvar without(nonexistent) (demo_memory_usage_bytes) | 合格 |
| topk (3, demo_memory_usage_bytes) | 合格 |
| bottomk (3, demo_memory_usage_bytes) | 合格 |
| topk by(instance) (2, demo_memory_usage_bytes) | 合格 |
| bottomk by(instance) (2, demo_memory_usage_bytes) | 合格 |
| topk without(instance) (2, demo_memory_usage_bytes) | 合格 |
| bottomk without(instance) (2, demo_memory_usage_bytes) | 合格 |
| topk without() (2, demo_memory_usage_bytes) | 合格 |
| bottomk without() (2, demo_memory_usage_bytes) | 合格 |
| quantile(-0.5, demo_memory_usage_bytes) | 合格 |
| quantile(0.1, demo_memory_usage_bytes) | 合格 |
| quantile(0.5, demo_memory_usage_bytes) | 合格 |
| quantile(0.75, demo_memory_usage_bytes) | 合格 |
| quantile(0.95, demo_memory_usage_bytes) | 合格 |
| quantile(0.90, demo_memory_usage_bytes) | 合格 |
| quantile(0.99, demo_memory_usage_bytes) | 合格 |
| quantile(1, demo_memory_usage_bytes) | 合格 |
| quantile(1.5, demo_memory_usage_bytes) | 合格 |
| avg(max by(type) (demo_memory_usage_bytes)) | 合格 |
| 1 * 2 + 4 / 6 - 10 % 2 ^ 2 | 合格 |
| demo_num_cpus + (1 == bool 2) | 合格 |
| demo_num_cpus + (1 != bool 2) | 合格 |
| demo_num_cpus + (1 < bool 2) | 合格 |
| demo_num_cpus + (1 > bool 2) | 合格 |
| demo_num_cpus + (1 <= bool 2) | 合格 |
| demo_num_cpus + (1 >= bool 2) | 合格 |
| demo_memory_usage_bytes + 1.2345 | 合格 |
| demo_memory_usage_bytes - 1.2345 | 合格 |
| demo_memory_usage_bytes * 1.2345 | 合格 |
| demo_memory_usage_bytes / 1.2345 | 合格 |
| demo_memory_usage_bytes % 1.2345 | 合格 |
| demo_memory_usage_bytes ^ 1.2345 | 合格 |
| demo_memory_usage_bytes == 1.2345 | 合格 |
| demo_memory_usage_bytes != 1.2345 | 合格 |
| demo_memory_usage_bytes < 1.2345 | 合格 |
| demo_memory_usage_bytes > 1.2345 | 合格 |
| demo_memory_usage_bytes <= 1.2345 | 合格 |
| demo_memory_usage_bytes >= 1.2345 | 合格 |
| demo_memory_usage_bytes == bool 1.2345 | 合格 |
| demo_memory_usage_bytes != bool 1.2345 | 合格 |
| demo_memory_usage_bytes < bool 1.2345 | 合格 |
| demo_memory_usage_bytes > bool 1.2345 | 合格 |
| demo_memory_usage_bytes <= bool 1.2345 | 合格 |
| demo_memory_usage_bytes >= bool 1.2345 | 合格 |
| 1.2345 == bool demo_memory_usage_bytes | 合格 |
| 1.2345 != bool demo_memory_usage_bytes | 合格 |
| 1.2345 < bool demo_memory_usage_bytes | 合格 |
| 1.2345 > bool demo_memory_usage_bytes | 合格 |
| 1.2345 <= bool demo_memory_usage_bytes | 合格 |
| 1.2345 >= bool demo_memory_usage_bytes | 合格 |
| 0.12345 + demo_memory_usage_bytes | 合格 |
| 0.12345 - demo_memory_usage_bytes | 合格 |
| 0.12345 * demo_memory_usage_bytes | 合格 |
| 0.12345 / demo_memory_usage_bytes | 合格 |
| 0.12345 % demo_memory_usage_bytes | 合格 |
| 0.12345 ^ demo_memory_usage_bytes | 合格 |
| 0.12345 == demo_memory_usage_bytes | 合格 |
| 0.12345 != demo_memory_usage_bytes | 合格 |
| 0.12345 < demo_memory_usage_bytes | 合格 |
| 0.12345 > demo_memory_usage_bytes | 合格 |
| 0.12345 <= demo_memory_usage_bytes | 合格 |
| 0.12345 >= demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) + demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) - demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) * demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) / demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) % demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) ^ demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) == demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) != demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) < demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) > demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) <= demo_memory_usage_bytes | 合格 |
| (1 * 2 + 4 / 6 - (10%7)^2) >= demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes + (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes - (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes * (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes / (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes % (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes ^ (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes == (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes != (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes < (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes > (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes <= (1 * 2 + 4 / 6 - 10) | 合格 |
| demo_memory_usage_bytes >= (1 * 2 + 4 / 6 - 10) | 合格 |
| timestamp(demo_memory_usage_bytes * 1) | 合格 |
| timestamp(-demo_memory_usage_bytes) | 合格 |
| demo_memory_usage_bytes + on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes - on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes * on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes / on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes % on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes ^ on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes == on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes != on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes < on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes > on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes <= on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes >= on(instance, job, type) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) + on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) - on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) * on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) / on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) % on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) ^ on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) == on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) != on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) < on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) > on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) <= on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| sum by(instance, type) (demo_memory_usage_bytes) >= on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes == bool on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes != bool on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes < bool on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes > bool on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes <= bool on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes >= bool on(instance, job, type) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes / on(instance, job, type, __name__) demo_memory_usage_bytes | 合格 |
| sum without(job) (demo_memory_usage_bytes) / on(instance, type) demo_memory_usage_bytes | 合格 |
| sum without(job) (demo_memory_usage_bytes) / on(instance, type) group_left demo_memory_usage_bytes | 合格 |
| sum without(job) (demo_memory_usage_bytes) / on(instance, type) group_left(job) demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes / on(instance, job) group_left demo_num_cpus | 合格 |
| demo_memory_usage_bytes / on(instance, type, job, non_existent) demo_memory_usage_bytes | 合格 |
| demo_num_cpus * Inf | 合格 |
| demo_num_cpus * -Inf | 合格 |
| demo_num_cpus * NaN | 合格 |
| demo_memory_usage_bytes + -(1) | 合格 |
| -demo_memory_usage_bytes | 合格 |
| -1 ^ 2 | 合格 |
| 1 + time() | 合格 |
| 1 - time() | 合格 |
| 1 * time() | 合格 |
| 1 / time() | 合格 |
| 1 % time() | 合格 |
| 1 ^ time() | 合格 |
| time() + 1 | 合格 |
| time() - 1 | 合格 |
| time() * 1 | 合格 |
| time() / 1 | 合格 |
| time() % 1 | 合格 |
| time() ^ 1 | 合格 |
| time() == bool 1 | 合格 |
| time() != bool 1 | 合格 |
| time() < bool 1 | 合格 |
| time() > bool 1 | 合格 |
| time() <= bool 1 | 合格 |
| time() >= bool 1 | 合格 |
| 1 == bool time() | 合格 |
| 1 != bool time() | 合格 |
| 1 < bool time() | 合格 |
| 1 > bool time() | 合格 |
| 1 <= bool time() | 合格 |
| 1 >= bool time() | 合格 |
| time() + time() | 合格 |
| time() - time() | 合格 |
| time() * time() | 合格 |
| time() / time() | 合格 |
| time() % time() | 合格 |
| time() ^ time() | 合格 |
| time() == bool time() | 合格 |
| time() != bool time() | 合格 |
| time() < bool time() | 合格 |
| time() > bool time() | 合格 |
| time() <= bool time() | 合格 |
| time() >= bool time() | 合格 |
| time() + demo_memory_usage_bytes | 合格 |
| time() - demo_memory_usage_bytes | 合格 |
| time() * demo_memory_usage_bytes | 合格 |
| time() / demo_memory_usage_bytes | 合格 |
| time() % demo_memory_usage_bytes | 合格 |
| time() ^ demo_memory_usage_bytes | 合格 |
| time() == demo_memory_usage_bytes | 合格 |
| time() != demo_memory_usage_bytes | 合格 |
| time() < demo_memory_usage_bytes | 合格 |
| time() > demo_memory_usage_bytes | 合格 |
| time() <= demo_memory_usage_bytes | 合格 |
| time() >= demo_memory_usage_bytes | 合格 |
| demo_memory_usage_bytes + time() | 合格 |
| demo_memory_usage_bytes - time() | 合格 |
| demo_memory_usage_bytes * time() | 合格 |
| demo_memory_usage_bytes / time() | 合格 |
| demo_memory_usage_bytes % time() | 合格 |
| demo_memory_usage_bytes ^ time() | 合格 |
| demo_memory_usage_bytes == time() | 合格 |
| demo_memory_usage_bytes != time() | 合格 |
| demo_memory_usage_bytes < time() | 合格 |
| demo_memory_usage_bytes > time() | 合格 |
| demo_memory_usage_bytes <= time() | 合格 |
| demo_memory_usage_bytes >= time() | 合格 |
| sum_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| sum_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| sum_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| sum_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| sum_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| sum_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| avg_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| avg_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| avg_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| avg_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| avg_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| avg_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| max_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| max_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| max_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| max_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| max_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| max_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| min_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| min_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| min_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| min_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| min_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| min_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| count_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| count_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| count_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| count_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| count_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| count_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| stddev_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| stddev_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| stddev_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| stddev_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| stddev_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| stddev_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| stdvar_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| stdvar_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| stdvar_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| stdvar_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| stdvar_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| stdvar_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| absent_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| absent_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| absent_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| absent_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| absent_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| absent_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| last_over_time(demo_memory_usage_bytes[1s]) | 合格 |
| last_over_time(demo_memory_usage_bytes[15s]) | 合格 |
| last_over_time(demo_memory_usage_bytes[1m]) | 合格 |
| last_over_time(demo_memory_usage_bytes[5m]) | 合格 |
| last_over_time(demo_memory_usage_bytes[15m]) | 合格 |
| last_over_time(demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(-0.5, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(-0.5, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(-0.5, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(-0.5, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(-0.5, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(-0.5, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(0.1, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(0.1, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(0.1, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(0.1, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(0.1, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(0.1, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(0.5, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(0.5, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(0.5, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(0.5, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(0.5, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(0.5, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(0.75, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(0.75, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(0.75, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(0.75, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(0.75, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(0.75, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(0.95, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(0.95, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(0.95, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(0.95, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(0.95, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(0.95, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(0.90, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(0.90, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(0.90, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(0.90, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(0.90, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(0.90, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(0.99, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(0.99, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(0.99, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(0.99, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(0.99, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(0.99, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(1, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(1, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(1, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(1, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(1, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(1, demo_memory_usage_bytes[1h]) | 合格 |
| quantile_over_time(1.5, demo_memory_usage_bytes[1s]) | 合格 |
| quantile_over_time(1.5, demo_memory_usage_bytes[15s]) | 合格 |
| quantile_over_time(1.5, demo_memory_usage_bytes[1m]) | 合格 |
| quantile_over_time(1.5, demo_memory_usage_bytes[5m]) | 合格 |
| quantile_over_time(1.5, demo_memory_usage_bytes[15m]) | 合格 |
| quantile_over_time(1.5, demo_memory_usage_bytes[1h]) | 合格 |
| timestamp(demo_num_cpus) | 合格 |
| timestamp(timestamp(demo_num_cpus)) | 合格 |
| abs(demo_memory_usage_bytes) | 合格 |
| ceil(demo_memory_usage_bytes) | 合格 |
| floor(demo_memory_usage_bytes) | 合格 |
| exp(demo_memory_usage_bytes) | 合格 |
| sqrt(demo_memory_usage_bytes) | 合格 |
| ln(demo_memory_usage_bytes) | 合格 |
| log2(demo_memory_usage_bytes) | 合格 |
| log10(demo_memory_usage_bytes) | 合格 |
| round(demo_memory_usage_bytes) | 合格 |
| abs(-demo_memory_usage_bytes) | 合格 |
| ceil(-demo_memory_usage_bytes) | 合格 |
| floor(-demo_memory_usage_bytes) | 合格 |
| exp(-demo_memory_usage_bytes) | 合格 |
| sqrt(-demo_memory_usage_bytes) | 合格 |
| ln(-demo_memory_usage_bytes) | 合格 |
| log2(-demo_memory_usage_bytes) | 合格 |
| log10(-demo_memory_usage_bytes) | 合格 |
| round(-demo_memory_usage_bytes) | 合格 |
| delta(nonexistent_metric[5m]) | 合格 |
| rate(nonexistent_metric[5m]) | 合格 |
| increase(nonexistent_metric[5m]) | 合格 |
| delta(demo_cpu_usage_seconds_total[1s]) | 合格 |
| delta(demo_cpu_usage_seconds_total[15s]) | 合格 |
| delta(demo_cpu_usage_seconds_total[1m]) | 合格 |
| delta(demo_cpu_usage_seconds_total[5m]) | 合格 |
| delta(demo_cpu_usage_seconds_total[15m]) | 合格 |
| delta(demo_cpu_usage_seconds_total[1h]) | 合格 |
| rate(demo_cpu_usage_seconds_total[1s]) | 合格 |
| rate(demo_cpu_usage_seconds_total[15s]) | 合格 |
| rate(demo_cpu_usage_seconds_total[1m]) | 合格 |
| rate(demo_cpu_usage_seconds_total[5m]) | 合格 |
| rate(demo_cpu_usage_seconds_total[15m]) | 合格 |
| rate(demo_cpu_usage_seconds_total[1h]) | 合格 |
| increase(demo_cpu_usage_seconds_total[1s]) | 合格 |
| increase(demo_cpu_usage_seconds_total[15s]) | 合格 |
| increase(demo_cpu_usage_seconds_total[1m]) | 合格 |
| increase(demo_cpu_usage_seconds_total[5m]) | 合格 |
| increase(demo_cpu_usage_seconds_total[15m]) | 合格 |
| increase(demo_cpu_usage_seconds_total[1h]) | 合格 |
| deriv(demo_disk_usage_bytes[1s]) | 合格 |
| deriv(demo_disk_usage_bytes[15s]) | 合格 |
| deriv(demo_disk_usage_bytes[1m]) | 合格 |
| deriv(demo_disk_usage_bytes[5m]) | 合格 |
| deriv(demo_disk_usage_bytes[15m]) | 合格 |
| deriv(demo_disk_usage_bytes[1h]) | 合格 |
| predict_linear(demo_disk_usage_bytes[1s], 600) | 合格 |
| predict_linear(demo_disk_usage_bytes[15s], 600) | 合格 |
| predict_linear(demo_disk_usage_bytes[1m], 600) | 合格 |
| predict_linear(demo_disk_usage_bytes[5m], 600) | 合格 |
| predict_linear(demo_disk_usage_bytes[15m], 600) | 合格 |
| predict_linear(demo_disk_usage_bytes[1h], 600) | 合格 |
| time() | 合格 |
| label_replace(demo_num_cpus, "job", "destination-value-$1", "instance", "demo.promlabs.com:(.*)") | 合格 |
| label_replace(demo_num_cpus, "job", "destination-value-$1", "instance", "host:(.*)") | 合格 |
| label_replace(demo_num_cpus, "job", "$1-$2", "instance", "local(.*):(.*)") | 合格 |
| label_replace(demo_num_cpus, "job", "value-$1", "nonexistent-src", "source-value-(.*)") | 合格 |
| label_replace(demo_num_cpus, "job", "value-$1", "nonexistent-src", "(.*)") | 合格 |
| label_replace(demo_num_cpus, "job", "value-$1", "instance", "non-matching-regex") | 合格 |
| label_replace(demo_num_cpus, "job", "", "dst", ".*") | 合格 |
| label_replace(demo_num_cpus, "job", "value-$1", "src", "(.*") | 合格 |
| label_replace(demo_num_cpus, "~invalid", "", "src", "(.*)") | 合格 |
| label_replace(demo_num_cpus, "instance", "", "", "") | 合格 |
| label_join(demo_num_cpus, "new_label", "-", "instance", "job") | 合格 |
| label_join(demo_num_cpus, "job", "-", "instance", "job") | 合格 |
| label_join(demo_num_cpus, "job", "-", "instance") | 合格 |
| label_join(demo_num_cpus, "~invalid", "-", "instance") | 合格 |
| day_of_month() | 合格 |
| day_of_week() | 合格 |
| days_in_month() | 合格 |
| hour() | 合格 |
| minute() | 合格 |
| month() | 合格 |
| year() | 合格 |
| day_of_month(demo_batch_last_success_timestamp_seconds offset 1m) | 合格 |
| day_of_month(demo_batch_last_success_timestamp_seconds offset 5m) | 合格 |
| day_of_month(demo_batch_last_success_timestamp_seconds offset 10m) | 合格 |
| day_of_week(demo_batch_last_success_timestamp_seconds offset 1m) | 合格 |
| day_of_week(demo_batch_last_success_timestamp_seconds offset 5m) | 合格 |
| day_of_week(demo_batch_last_success_timestamp_seconds offset 10m) | 合格 |
| days_in_month(demo_batch_last_success_timestamp_seconds offset 1m) | 合格 |
| days_in_month(demo_batch_last_success_timestamp_seconds offset 5m) | 合格 |
| days_in_month(demo_batch_last_success_timestamp_seconds offset 10m) | 合格 |
| hour(demo_batch_last_success_timestamp_seconds offset 1m) | 合格 |
| hour(demo_batch_last_success_timestamp_seconds offset 5m) | 合格 |
| hour(demo_batch_last_success_timestamp_seconds offset 10m) | 合格 |
| minute(demo_batch_last_success_timestamp_seconds offset 1m) | 合格 |
| minute(demo_batch_last_success_timestamp_seconds offset 5m) | 合格 |
| minute(demo_batch_last_success_timestamp_seconds offset 10m) | 合格 |
| month(demo_batch_last_success_timestamp_seconds offset 1m) | 合格 |
| month(demo_batch_last_success_timestamp_seconds offset 5m) | 合格 |
| month(demo_batch_last_success_timestamp_seconds offset 10m) | 合格 |
| year(demo_batch_last_success_timestamp_seconds offset 1m) | 合格 |
| year(demo_batch_last_success_timestamp_seconds offset 5m) | 合格 |
| year(demo_batch_last_success_timestamp_seconds offset 10m) | 合格 |
| idelta(demo_cpu_usage_seconds_total[1s]) | 合格 |
| idelta(demo_cpu_usage_seconds_total[15s]) | 合格 |
| idelta(demo_cpu_usage_seconds_total[1m]) | 合格 |
| idelta(demo_cpu_usage_seconds_total[5m]) | 合格 |
| idelta(demo_cpu_usage_seconds_total[15m]) | 合格 |
| idelta(demo_cpu_usage_seconds_total[1h]) | 合格 |
| irate(demo_cpu_usage_seconds_total[1s]) | 合格 |
| irate(demo_cpu_usage_seconds_total[15s]) | 合格 |
| irate(demo_cpu_usage_seconds_total[1m]) | 合格 |
| irate(demo_cpu_usage_seconds_total[5m]) | 合格 |
| irate(demo_cpu_usage_seconds_total[15m]) | 合格 |
| irate(demo_cpu_usage_seconds_total[1h]) | 合格 |
| clamp_min(demo_memory_usage_bytes, 2) | 合格 |
| clamp_max(demo_memory_usage_bytes, 2) | 合格 |
| clamp(demo_memory_usage_bytes, 0, 1) | 合格 |
| clamp(demo_memory_usage_bytes, 0, 1000000000000) | 合格 |
| clamp(demo_memory_usage_bytes, 1000000000000, 0) | 合格 |
| clamp(demo_memory_usage_bytes, 1000000000000, 1000000000000) | 合格 |
| resets(demo_cpu_usage_seconds_total[1s]) | 合格 |
| resets(demo_cpu_usage_seconds_total[15s]) | 合格 |
| resets(demo_cpu_usage_seconds_total[1m]) | 合格 |
| resets(demo_cpu_usage_seconds_total[5m]) | 合格 |
| resets(demo_cpu_usage_seconds_total[15m]) | 合格 |
| resets(demo_cpu_usage_seconds_total[1h]) | 合格 |
| changes(demo_batch_last_success_timestamp_seconds[1s]) | 合格 |
| changes(demo_batch_last_success_timestamp_seconds[15s]) | 合格 |
| changes(demo_batch_last_success_timestamp_seconds[1m]) | 合格 |
| changes(demo_batch_last_success_timestamp_seconds[5m]) | 合格 |
| changes(demo_batch_last_success_timestamp_seconds[15m]) | 合格 |
| changes(demo_batch_last_success_timestamp_seconds[1h]) | 合格 |
| vector(1.23) | 合格 |
| vector(time()) | 合格 |
| histogram_quantile(-0.5, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(0.1, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(0.5, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(0.75, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(0.95, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(0.90, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(0.99, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(1, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(1.5, rate(demo_api_request_duration_seconds_bucket[1m])) | 合格 |
| histogram_quantile(0.9, nonexistent_metric) | 合格 |
| histogram_quantile(0.9, demo_memory_usage_bytes) | 合格 |
| histogram_quantile(0.9, {__name__=~"demo_api_request_duration_seconds_.+"}) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.1, 0.1) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.1, 0.5) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.1, 0.8) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.5, 0.1) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.5, 0.5) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.5, 0.8) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.8, 0.1) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.8, 0.5) | 合格 |
| holt_winters(demo_disk_usage_bytes[10m], 0.8, 0.8) | 合格 |
| count_values("value", demo_api_request_duration_seconds_bucket) | 合格 |
| absent(demo_memory_usage_bytes) | 合格 |
| absent(nonexistent_metric_name) | 合格 |
| max_over_time((time() - max(demo_batch_last_success_timestamp_seconds) < 1000)[5m:10s] offset 5m) | 合格 |
| avg_over_time(rate(demo_cpu_usage_seconds_total[1m])[2m:10s]) | 合格 |