すべてのプロダクト
Search
ドキュメントセンター

Time Series Database:開発者ガイド

最終更新日:Jan 14, 2025

このトピックでは、TSDB for Prometheus でサポートされているラベル演算子と集計演算について説明します。

PromQL

Prometheus Query Language(PromQL)は、Prometheus が提供する関数型クエリ言語です。 PromQL を使用すると、時系列データを実時間で選択および集計できます。 PromQL の詳細については、Prometheus の公式ウェブサイトにある「PromQL ドキュメント」をご参照ください。

TSDB for Prometheus は、リモートストレージアダプター用の組み込みインターフェースを提供します。 組み込みインターフェースは、Prometheus のクエリ機能と互換性があります。

サポートされているラベル演算子

TSDB for Prometheus は、=!==~!~ の 4 つのラベル演算子をサポートしています。 次のコードは、サンプルクエリを示しています。

node__cpu__seconds__total{cpu="1",mode="user"}
node__cpu__seconds__total{cpu!="1",mode="user"}

node__cpu__seconds__total{cpu=~"1",mode="user"}
node__cpu__seconds__total{cpu=~"1|2|3",mode="user"}

node__cpu__seconds__total{cpu!~"1",mode="user"}
node__cpu__seconds__total{cpu!~"1|2|3",mode="user"}

=~ 演算子の場合、TSDB for Prometheus は、PromQL クエリでの値のマッチングのための正規表現で、縦棒(|)とアスタリスク(*)のみをサポートしています。 !~ 演算子の場合、縦棒(|)のみがサポートされており、アスタリスク(*)はサポートされていません。 次のコードは、サンプルクエリを示しています。

node__cpu__seconds__total{mode=~"user|sys"}    // サポートされています
node__cpu__seconds__total{mode=~"use*"}        // サポートされています
node__cpu__seconds__total{mode=~"user.+"}      // サポートされていません

node__cpu__seconds__total{mode!~"user|sys"}    // サポートされています
node__cpu__seconds__total{mode!~"use*"}        // サポートされていません
node__cpu__seconds__total{mode!~"user.+"}      // サポートされていません

PromQL 正規表現クエリのその他の機能は、TSDB for Prometheus チームによって開発中です。 これらの機能は、将来のバージョンで提供される予定です。

サポートされている集計演算

TSDB for Prometheus は、min、max、avg、stddev、stdvar、count、topk、bottomk、quantile、count_values など、幅広い集計演算をサポートしています。 次のコードは、サンプルクエリを示しています。

min (node__cpu__seconds__total)
max (node__cpu__seconds__total)
avg (node__cpu__seconds__total)
stddev (node__cpu__seconds__total)
stdvar (node__cpu__seconds__total)
count (node__cpu__seconds__total)
topk (1,node__cpu__seconds__total)
bottomk (1,node__cpu__seconds__total)
quantile(1,node__cpu__seconds__total)
count_values("count", node__cpu__seconds__total)

Prometheus でサポートされている文字は、Time Series Database(TSDB)でサポートされている文字とは異なります。 次の表に、違いを示します。

Prometheus

TSDB

メトリック

[a-zA-Z:][a-zA-Z0-9:]*

英字、数字、および次の特殊文字のみが含まれます:-_./():,[]='#

タグキー

[a-zA-Z][a-zA-Z0-9]*> で始まるタグ名は内部使用のために予約されています。

英字、数字、および次の特殊文字のみが含まれます:-_./():,[]='#

タグ値

Unicode 文字をサポートしています。

英字、数字、および次の特殊文字のみが含まれます:-_./():,[]='#

重要
  • 前述の違いにより、Prometheus を使用してデータが書き込まれる場合は、Prometheus を使用してデータをクエリすることをお勧めします。 TSDB のネイティブ API を使用してデータをクエリすると、返されるタグ値に文字化けが含まれる場合があります。

  • TSDB は、タグ値でサポートされていない文字をエンコードおよびデコードするときに、番号記号(#)を識別子として使用します。 Prometheus を使用して TSDB に書き込まれるタグ値に番号記号(#)を指定しないことをお勧めします。

  • TSDB のネイティブ API を使用して Prometheus によって書き込まれたデータを読み取る前に、Prometheus によって書き込まれたタグ値に TSDB でサポートされている文字のみが含まれていることを確認してください。 Prometheus を使用して TSDB のネイティブ API によって書き込まれたデータを読み取る前に、TSDB のネイティブ API によって書き込まれたメトリックとタグキーに Prometheus でサポートされている文字のみが含まれていることを確認してください。