Top takeaways
本記事は 「Using Terraform to generate New Relic dashboards from NRQL queries」の抄訳記事になります。
Terraformは、クラウドやオンプレミスのリソースを定義し、管理する際に有用ですが、動的なダッシュボードを作成したい場合には、簡単ではないことがあります。このブログでは、ライブデータをもとにダッシュボードを動的に作成するためのNRQL(New Relic クエリ言語)の使用方法について学びます。
今回はシリーズの第3部になります。第1部では、TerraformでJSONテンプレートを使用し、New Relicダッシュボードを作成する方法についてご紹介しています。第2部では、シンプルな入力データから複雑な動的ダッシュボードを構築する方法をご紹介しています。
今回の例では、どのNew Relicアカウントでも無料で使用できるグローバルAPIを使用します。今回は、NRQLを使用して過去24時間で最も利用された上位5位のAPIのダッシュボードを構築します。これをTerraformの設定を一切変えずに行えるようになります。これが第2部で学んだこととの違いです。前回は、ダッシュボードを動的に作成しましたが、準備した入力をもとに作成したダッシュボードの列は静的でした。今回のケースでは、表示される列はデータそのものに基づきます。この例では、どのAPIがもっとも多くのコールを受けているかによって、列が変化します。
Terraformプロバイダーは、このようなタイプのダッシュボードを作成するのに活用できます。New RelicのGraphQL APIのクエリによって上位5位のAPIのデータを取得し、そのデータに基づいてダッシュボードを作成します。この例を適用して、パフォーマンス上位のアプリケーション、製品、過負荷サーバー、またはその他経時的に変化しうるあらゆる注目データに関するダッシュボードを自動的に作成できます。
完成したダッシュボードは、以下のように表示されます。
ダッシュボード向けのTerraform設定は、dash_nrql_composed.tfにあります。
クエリを定義する
まず、GraphQLクエリを定義する必要があります。この例では、count()
を使用して、上位5位のドメインを調べます。これは、Terraform設定とは別のファイルで定義できます。そうすることで、それ自体のクエリコードの確認と更新がしやすくなります。このケースでは、ファイル名はgetTopFiveApis.gql
です.
クエリを定義したら、その名称を指定する必要があります。これはGraphQLプロバイダーのデータ機能で行えます。なお、入力変数として定義できるAPIキーを指定する必要があります。以下のコードは、dash_nrql_composed.tf
にあります。
ここでは何が行われているのでしょうか?まず、New RelicのAPIキーのための新たな入力変数を定義する必要があります。GraphQLプロバイダーは、New Relicにアクセスする際にこのキーを使用します。また、プロバイダーはアカウントIDも必要としますが、これはすでにprovider.tf
で定義されています。提供されたリポジトリでruntf.sh
ファイルを使用している場合には、ここで行われます。そうでない場合、READMEで説明されているように、アカウントIDを引数としてTerraformコマンドに送る必要があります。
次に、API URLとヘッダーの「APIキー」を指定して、認証に必要なGraphQLプロバイダーを設定します。アカウントがEUのデータセンターにある場合、EUのAPI URL(api.eu.newrelic.com
)を使用しなくてはなりません。
最後に、プロバイダからのgraphql_query
データ機能を使用して、New RelicのGraphQL APIにクエリを行います。ここでは、アカウントIDをクエリ変数として指定し、先に作成したGraphQLクエリファイルを参照します。
ダッシュボードを作成する
次に、NRQLクエリの結果をtemplatefile()
機能のCONFIG値に送ります。以下のコードは、/dash_nrql_composed
にあります。
jsondecode()
機能が、結果から必要なデータを抽出し、それをCONFIG
変数に割り当てます。CONFIG
データの形は、クエリの結果のデータとなっているため、前述のパートと少し違って見えます。
jsondecode(data.graphql_query.basic_query.query_response).data.actor.account.nrql.results
テンプレートファイル(dashboards/nrql_composed_widgets.json.tftpl
)は、CONFIG
オブジェクトのNRQLクエリにより返されたAPIを通じて反復し、各API向けのダッシュボード列を生成します。このファイルの機能の詳細は、本シリーズ第2部のダッシュボードウィジェットの作成をご参照ください。ここでも、ダッシュボードを動的に作成するための反復を使用しています。
このTerraform設定を適用すると、合計コールによる上位5位のパブリックAPIのリストが取得できます。この変更を適用するたびに、最新データを使用してダッシュボードが生成されます。
まとめ
本ブログでは、TerraformとJSONを使用して、NRQLクエリに基づきNew Relicで動的ダッシュボードを作成する方法について学びました。この手法を、現実世界のデータを使って、動的に変化するダッシュボードの構築に活用しましょう。たとえば、人気のプロダクト、予定表のイベント、パフォーマンスの悪いサーバーなどに基づいてダッシュボードを作成できます。
このパターンを適切に使いこなすには、ダッシュボード設定の頻繁な再適用が必要です。これはイベントスによりケジューリングやトリガーが可能で、コードとしてのオブザーバビリティガイドで説明されているようなCI/CD Workflowを使用して管理するのが最適です。
まだこのシリーズのコードについて詳細を確認していない方は、nr-terraform-json-dashboard-examplesリポジトリをご覧ください。カスタムダッシュボードをすばやく立ち上げるのにご活用いただけます。
Next steps
TerraformとJSONを使用したNew Relicダッシュボードの作成についての本シリーズの別パートも、ぜひお読みください。
まだNew Relicをお使いいただいていない場合は、無料でNew Relicの使用を開始できます。無料アカウントには、毎月100GBの無料データ取り込み、1名の無料フルアクセスユーザー、および無制限の無料ベーシックユーザーが含まれます。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.