PromQLクエリフォーマッター&バリデーター
ガイド
Prometheus PromQLクエリを即座にフォーマットおよび検証
PromQLクエリフォーマッター&バリデーターは、あなたがPrometheusおよびその他の互換性のあるタイムシリーズデータベースに対して書いたクエリを整えます。メトリクス表現を貼り付けて、ツールは二項演算子の周囲のスペースを標準化し、クエリが長くなると集計、関数呼び出し、ラベルマッチャーをそれぞれの行に配置し、未バランスの括弧、不一致なブレース、欠落した期間、およびその他の文法問題を、ダッシュボードまたはアラートルールに貼り付ける前に指摘します。すべての処理はあなたのブラウザで行われるので、クエリは内部メトリクス名やラベルを暴露するため、あなたのデバイスに留まります。
使用方法
- 入力エリアにあなたのPromQLクエリを貼り付け、またはファイルセレクターを使ってテキストファイルをアップロードしてください
.promqlまたは、ファイルセレクターを使ってテキストファイルをアップロードしてください。 - 複数行展開用のインデント幅を選択します — 2スペース、4スペース、または文字列のタブを含む。
- 最大行長を設定します。関数呼び出し、ラベルマッチャーのセットおよび低優先度の論理演算子(
and,or,unless)は、フォーマットされた行がこの幅を超えると、別行に折り返されます。 - トグル 常に折り返す もし、すべての集計、関数呼び出しの引数リストおよびラベルマッチャーのセットが長さに関係なくそれぞれの行に配置されたい場合に使用します。
- トグル 記録ルールとして折り返す および、メトリクス名(例:
job:http_errors:rate5m)を提供して、フォーマットされたクエリを即座に貼り付けることができるPrometheus記録ルールとしてYAMLに変換します。 - フォーマットされた出力をコピーするか、または
.promqlファイル。
機能
- PromQL対応のスペース処理 — 算術、比較および論理演算子の周囲に1つのスペースを挿入しつつ、ラベルマッチャーをブレースの内部に保持します。
{ }braces. - スマートな複数行レイアウト — 長いクエリは、まず、関数引数境界、そして個々のラベルマッチャーに折り返され、結果がスキャンしやすいように保たれます。
and/or/unlessfirst, then at function argument boundaries, then at individual label matchers so the result remains easy to scan. - 集計およびベクトルマッチングサポート —
sum,avg,topk,quantileおよびその他のby,without,on,ignoring,group_leftとgroup_rightモジュールを認識し、 - 期間およびサブクエリトークン解析 — 複合期間(例:
1h30m)およびサブクエリ(例:[5m:1m])を1つの単位としてパースし、トークンの途中に分割されることを防ぎます。 - 大きなファイルを処理します — 非バランスの括弧、ブレース、開閉記号、不一致な開閉記号、無効なラベルマッチャーのボディ、無効なサブスクリプト範囲、未終了の文字列を検出し、それぞれの行番号とともに報告します。
- 記録ルールエクスポート — オプションで、フォーマットされたクエリをPrometheus YAML記録ルールブロックとして折り返し、複数行表現をYAMLリテラルブロックスケーラーで使用してインデントを保持します。
一般的な使用例
- Grafanaパネルエディタからコピーした一時的なPrometheusクエリを、ダッシュボードやアラートルールにコミットする前に整える。
- コードレビュー用にPromQL表現を準備する — 長いエラーレートまたは飽和クエリは、各ブランチが個別に配置されたときに読みやすい差分になります。
- 微妙な文法ミス(期間の欠落、余計なコンマ、閉じられていない
{ラベルマッチャー編集後)を検出し、Prometheusインスタンスにリターンする必要なく、即座に検出します。 - 原始的なクエリをPrometheus記録ルールYAMLに変換して、事前に集計パイプラインに使用します。
- PromQLを教える — フォーマットされた出力により、操作の優先順位および集計グループ化が読者に即座に明らかになります。
よくある質問
-
PromQLとは何ですか?
PromQL(Prometheusクエリ言語)は、PrometheusモニタリングシステムおよびThanos、Mimir、Cortex、VictoriaMetricsおよびAmazon Managed Service for Prometheusなどの互換性のあるバックエンドで使用される読み取り側のクエリ言語です。これはタイムシリーズデータに特化した言語であり、すべての表現は瞬間ベクトル、範囲ベクトル、スケーラー、または文字列に評価され、演算子はラベルセットのマッチング、グループ化および時間経過におけるレートの意味を理解しており、一般的なSQLはそれらを理解できません。
-
瞬間ベクトルと範囲ベクトルの違いは?
瞬間ベクトルは、ある時点でのすべてのタイムシリーズサンプルのセットです — たとえば、http_requests_totalに一致するすべてのシリーズの最新値です。範囲ベクトルは、期間ウィンドウ内のサンプルのセットで、括弧で表記された期間(例:[5m])を使用します。範囲ベクトルは直接表示できません;それらはrate()、increase()、avg_over_time()などの関数の入力として、ウィンドウを瞬間ベクトルに戻すために使用されます。
-
`by` と `without` は、集計においてどのように異なりますか?
どちらもsumやavgなどの集計演算子のグループ化行動を変更します。by句は出力にのみ指定されたラベルを保持し、sum by (job) (rate(...))はすべてのjob以外のラベルを削除します。without句は、指定されたラベルを除いてすべてのラベルを保持し、sum without (instance) (rate(...))はすべての他の次元を保持します。同等なグループ化はどちらの方法でも書ける;チームは通常、1つを選んで一貫性を保ちます。
-
記録ルールとは何ですか?そして事前に1つを計算する理由は?
記録ルールは、Prometheusがスケジュールで評価し、新しいメトリクスとして書き戻す名前付きPromQL表現です。複雑な表現(例:サービスごとの5分間エラーレート)を事前に計算することで、ダッシュボードやアラートが結果を直接クエリできるようになり、毎回リフレッシュ時に表現を再計算する必要がなくなります。記録ルールの命名規則は、レベル:メトリクス:操作のパターン(例:job:http_requests_errors:rate5m)を使用し、メトリクス名から意味をすぐに理解できます。
-
`on`、`ignoring`、`group_left` および `group_right` はそれぞれ何をしますか?
これらのキーワードは、二項演算子の両側のシリーズ間のマッチングを制御します。デフォルトではPrometheusは両側に同じラベルセットを必要とします;on(label, ...) および ignoring(label, ...) は結合キーを制限または緩和できます。group_left および group_right はマッチを1対多数または多数対1の結合に変換し、高カードインシティ側のラベルを結果にコピーします。これはタイムシリーズデータに対するSQL結合ヒントの同等です。
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
