New RelicはPromQLスタイルのクエリをサポートしています。また、クエリビルダーは、PromQL構文クエリを最も近似したNRQLクエリに変換するPromQLスタイルのクエリモードを備えています。この近似手法では、一部のエッジケースには完全には対応していないものの、圧倒的多数のクエリをカバーでき、上位Grafanaダッシュボードの780万件のダウンロード全体で、99.5%超のクエリに対応しています。
PromQLクエリの使用方法のほか、標準のPromQLとNew RelicのPromQL類似クエリ言語との違いについてご確認ください。
重要
Prometheusのクエリと演算子についての一般的な情報に関しては、Prometheus.ioドキュメントをご覧ください。
サポートされている機能
当社は、次の集計/算術/数学/率様関数をサポートしています。PrometheusとPromQLのサポートを引き続き拡張する中で、リストは更新されます。
PromQLのトラブルシューティング
このセクションでは、PromQLとPromQLスタイルクエリの動作の違いと、この違いにどのように対処するかについて説明します。この点は、詳細なクエリとPromQLスタイルモードをクエリビルダで使用する場合に特に関連しています。
メトリックのタイプ
Prometheusの推奨では、ゲージではdelta()のような関数のみを、またカウンターではrate()やincrease()などその他の関数のみを使用するよう指摘していますが、Prometheusでのクエリは、この指示に従わなくても大半の場合に機能します。
ただし、NRDBはPromQLスタイルの累積カウンターをdeltaカウンターに変換するため、New Relicの実装では、こうした関数を本来とは異なるデータ型に対して正しく処理できず、異なる結果や誤った結果が生じます。
このため、PromQLスタイルのクエリで作業を行う場合、Prometheusのこうした推奨に従わない場合でも、すべてのPrometheusの推奨に従うようにしてください。
制限
- すべてのユーザーに対してシステムの安定性とパフォーマンスを確保するため、New Relicでは実行可能なクエリに制限を設けています。いずれの場合も、範囲クエリは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単位がアプリケーションのスクレイプ間隔未満である場合、データが欠如する期間が発生し、得られるグラフはギザギザになる(頻繁に上下する)結果になることがあります。一般に、ステップサイズを取得間隔またはそれ以上に設定します。