New RelicはPromQLスタイルのクエリをサポートしています。また、クエリビルダーは、PromQL構文クエリを最も近似したNRQLクエリに変換するPromQLスタイルのクエリモードを備えています。近似のメソッドは、少数のエッジケースが完全にサポートされていないことを意味しますが、圧倒的多数のクエリをカバーし、780万回の上位Grafanaダッシュボードのダウンロード全体で99.5%以上のクエリをサポートします。
PromQLクエリの使用方法、および標準の PromQL と PromQL に類似したクエリ言語の違いについて学習してください。
重要
Prometheusのクエリと演算子についての一般的な情報に関しては、Prometheus.ioドキュメントをご覧ください。
サポートされている機能
当社は、次の集計/算術/数学/率様関数をサポートしています。PrometheusとPromQLのサポートを引き続き拡張する中で、リストは更新されます。
PromQLのトラブルシューティング
このセクションでは、PromQLとPromQLスタイルクエリの動作の違いと、この違いにどのように対処するかについて説明します。この点は、詳細なクエリとPromQLスタイルモードをクエリビルダで使用する場合に特に関連しています。
メトリックのタイプ
Prometheusの推奨では、ゲージではdelta()のような関数のみを、またカウンターではrate()やincrease()などその他の関数のみを使用するよう指摘していますが、Prometheusでのクエリは、この指示に従わなくても大半の場合に機能します。
ただし、NRDBはPromQLスタイルの集計カウンターをdelta
カウンターに変換するため、当社の実装では間違ったデータタイプでこうした関数を使用できず、異なる/正しくない答えが生じます。
このため、PromQLスタイルのクエリで作業を行う場合、Prometheusのこうした推奨に従わない場合でも、すべてのPrometheusの推奨に従うようにしてください。
制限
- すべてのユーザーについてシステムの安定性とパフォーマンスを確保するため、当社はどのクエリを実行できるかについて制限を設けています。すべての場合で、範囲クエリで366段階の制限を施行します。また、デフォルトで、クエリから100の時系列のみを返すようになっています。
- 数を増やす(または減らす)場合、クエリに明示的に
topk()
を追加する必要があります。(PromQLスタイルのクエリでのtopk()
実装は、Prometheusの実装とは異なることにご注意ください。) - 当社では、クエリが使用できる合計メモリを制限しています。つまり、多数の時間ステップや多数の時系列のリクエストは、特に、単純な算術集計より計算に非常に多くのメモリを必要とする一意の
count
やquantile
のような集計と組み合わされる場合に、却下される場合があります。
Range vectorセレクター(スライディングウィンドウおよび平滑化動作)
スライディングウィンドウ時系列の集計をサポートします。詳細については、NRQLリファレンスおよびスライディングウィンドウの詳細を参照してください。
NRQLとPromQLスタイルの言語間の変換については、PromQLクエリをNRQLへ変換を参照してください。
クエリ範囲とデータスクレイピングの間隔
PromQLでのクエリの範囲は、「
TIMESERIES
バケットサイズが現在の時間枠より大きい」エラーを避けるために、クエリのステップサイズの期間より大きくする必要があります。インスタントクエリを提供する時は、最大1分が経過したデータが検査されます。スクレイプ間隔が1分より長い場合、一部のクエリは
No data found
という結果になる場合があります。これを避けるために、1分間に最低1回データを送信します。
NRQLクエリのtimeseries単位がアプリケーションのスクレイプ間隔未満である場合、データが欠如する期間が発生し、得られるグラフはギザギザになる(頻繁に上下する)結果になることがあります。一般に、ステップサイズを取得間隔またはそれ以上に設定します。