みなさん、New Relic Query Language(通称: エヌアールキューエル、ぬるくる、なーこー、以下NRQL)を日々活用されていますか?もし、まだという方は、是非、こちらのコンテンツなどを活用して、みたい/欲しい情報を取得してもらえると幸いです。
日々、NRQLを活用されている方の中には、特定の情報を参照するためにNew Relicポータルにアクセスし、Query Builderを起動し、お約束のNRQLを流し込むといった作業を行なっているのではないでしょうか?それぞれの作業は非常に簡単なので難しいことはないかと思うのですが、もっと簡単に必要なデータの値だけを得ることができたらもっと便利ではないでしょうか?
例えば、現時点でどれだけのデータ流入量が発生しているかを確認したい時に、手元でコマンドを実行することで確認できたら、作業がとても簡素化できるような気がしませんか?
そのような場合、以下のコマンドをターミナルに入力してみて下さい。
注意: こちらのコマンドは、Linux環境やmacOS環境を想定しています。その他の環境の方は、環境に合わせてコマンドを変更して下さい。
curl https://api.newrelic.com/graphql \
-H 'Content-Type: application/json' \
-H 'API-Key: <APIキー文字列>' \
--data-binary '{"query":"{\n actor {\n account(id: <ご利用のアカウントID>) {\n nrql(query: \"SELECT rate(sum(GigabytesIngested), 1 day) AS avgGbIngestTimeseries FROM NrConsumption WHERE productLine = \u0027DataPlatform\u0027 FACET usageMetric LIMIT MAX SINCE 30 days AGO\") {\n results\n }\n }\n }\n}\n", "variables":""}'
上記のコマンドの中身を確認すると、NRQLが記載されています。ですので、このNRQL部分を変更すれば良いのですが、特殊文字などを含んでいる場合も想定し、このコマンド全体を簡単に取得できる方法をお伝えします。(出力結果の例は、jqコマンドを用いて整形しています。)
ステップ1: New Relicポータルにログインし、NerdGraph API explorerにアクセスします。
ステップ2: NerdGraph API explorer UIが表示されたら、左ペインより、以下の項目にチェックを入れます。
- actor
- actor.account
- actor.account.id!
- actor.account.nrql
- actor.account.nrql.query!
上記にチェックを入れ、actor.account.id!に事前に確認した<ご利用のアカウントID>の値を設定し、actor.account.nrql.query!にはコマンド上から実行したいNRQLを記載します。
ステップ3: UI上部のメニューからユーザに紐づいた利用可能なAPIキーの一覧が表示されるので、コマンド内で利用したいユーザーキーを選択します。
ステップ4: UI上部のメニューからExecute Queryボタンを押し、UI内で適切な値を取得できることを確認します。
ステップ5: ステップ4で適切な値を取得できることを確認後、UI上部メニューのToolsプルダウンメニューからCopy as CURLメニューを選択します。クリップボードにCURLコマンドがコピーされるので、この内容をテキストファイルにコピーしてシェルコマンドとなるように編集して下さい。
上記の流れにより、作成したシェルスクリプトを走らせることで、NRQLを実行した結果を得ることができます。その結果をjqコマンドなどで整形することで、データをより効果的に抽出することが可能です。
是非、コマンドラインを活用して、日々の業務で必要なデータを簡単に取得できる環境を構築してみて下さい。例えば、現時点でのデータはコマンドラインで取得して、時間軸にそったデータの変動をみる場合には、New Relicポータルのダッシュボードを活用するといった使い分けをすることで、皆様の考察をより深化させるお手伝いができれば幸いです。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。