Terraformは、HCL(Hashicorp Config Language)を使用し、設定ファイルを通じてクラウドおよびオンプレミスのリソースを定義、管理するための、強力な「コードとしてのオブザーバビリティ」ツールです。しかし、HCL構文を使いこなすのは難しいため、Terraformを使用して、New Relic内の既存のダッシュボードを更新したり、新たなウィジェットを追加することが難しい場合があります。
幸いなことに、JSONテンプレートを使用すれば、HCL構文に変換することなく、TerraformでプロビジョニングされたNew Relicダッシュボードをより簡単に管理できるようになります。JSONテンプレートを使うことにより、New RelicのUIですべての編集が可能となり、その設定をTerraformのプロジェクトにエクスポートできます。また、JSONテンプレートでは、一連の色やY軸のスケールを指定する機能など、New Relicダッシュボードの拡張機能を使用することもできます。
このブログでは、TerraformでJSONテンプレートを使用し、New Relicダッシュボードを作成する方法について解説します。今回は3部シリーズの第1部になります。
- 第2部のTerraformを使用したNew Relicダッシュボードの動的な作成では、Terraformを使い、JSONとテンプレート変数でNew Relicダッシュボードを動的に作成する方法を学びます。
- 第3部のTerraformを使用したNRQLクエリからのNew Relicダッシュボードの作成では、クエリの結果にもとづく動的なNew Relicダッシュボードを作成するための、NRQLクエリを用いたTerraformの使用方法について学びます。これは、最遅のHTTPリクエスト5件、といったデータを表示させるダッシュボードの作成に非常に役立ちます。
前提条件
注意:TerraformでJSONテンプレートを使用してNew Relicダッシュボードを作成するには、プロバイダーバージョン3.4.0以上を使用する必要があります。
このチュートリアル内のサンプルコードを試すには、Terraformがインストールされている必要があります。Terraformのインストール手順とサンプルの実行方法に関するガイダンスは、GitHubのリポジトリ(nr-terraform-json-dashboard-examples)をご覧ください。
JSONを使用してダッシュボードを作成する
はじめに、New RelicでダッシュボードのJSON設定を確認します。このJSONはこのチュートリアルにのみ使用するので、どのダッシュボードを選択してもかまいません。既存のダッシュボードを探すか、またはNew Relic UIを使用して新たなダッシュボードを作成し、ダッシュボード右上のCopy JSON to clipboardアイコンを選択します。
Terraformプロジェクトにdashboardというディレクトリを作成し、クリップボードからdashboard.json
という新しいファイルにJSONをペーストします。最初にdashboard.json
内の"name"
属性をアップデートして、ソースとして使用したダッシュボードとこれを区別する必要があります。
次に、このdashboard.json
をインプットとして使用するために、Terraformの設定をセットアップする必要があります。そのために、dash_basic.tf
というファイルを作成し、以下のHCLコードを入力します。
最初のブロックが、dashboard.json
をnewrelic_one_dashboard_json
リソースに送ります。
2番目のブロックが、ダッシュボードをタグ付けし、これがTerraformで管理されていることを示します。これがベストプラクティスです。このケースでは、タグの値は以下の通りです。
最後に、3番目のブロックが、ダッシュボードのパーマリンクをコンソールに出力して見つけやすくします。
自身のTerraformを適用し、ダッシュボードが想定通りに作成されていることを確認します。
ダッシュボードのアップデート
ダッシュボードの作成はいたってシンプルですが、アップデートはどうすれば良いでしょうか。手順を確認しましょう。
単体のダッシュボード
このフローチャートは、単体のダッシュボードの管理プロセスを示しています。
New Relic UIで簡便にダッシュボードを編集し、新たなJSON設定をクリップボードにコピーしてプロジェクト内のdashboard.json file
をアップデートし、Terraform を再適用します。
複数使用のダッシュボード
ダッシュボードでもっと多くのことがしたい場合はどうでしょうか?たとえば、テンプレートのダッシュボードを使って、各ダッシュボードでコンテキスト上の変更がある度にデプロイを行うケースも考えられます。
ソリューションのひとつは、New Relic UIで管理する「テンプレート」ダッシュボードを作成することです。デプロイしたダッシュボードを変更したい場合、テンプレートダッシュボードを編集し、JSONをdashboard.json
ファイルにコピーしてから再適用します。
以下のフローチャートは、このプロセスの詳細を示しています。
デプロイされた各ダッシュボードへの変更が、appName
やアカウントIDなどの小さなものであれば、Terraformのreplace()
機能を使用して、ソーステンプレートの値をデプロイされたダッシュボードの新たな値に置き換えることができます。
たとえば、以下のdash_replacer.tf
のTerraformコードのサンプルは、ダッシュボード名を変更し、アカウントIDを設定します。
この方法の良い点は、ダッシュボードのアップデートが必要な際にはいつでも、テンプレートのダッシュボードを編集し、JSONをテンプレートファイルにコピー&ペーストして再適用すればよいということです。
デプロイメント時に、テンプレートに多くの変更を行いたい場合は、変更の管理がしやすいTerraformのtemplatefile
を使用できます。ただし、Terraformのtemplatefile
との互換性を持たせるため、設定をアップデートする必要が出てきます。example repo内のdash_templatefile.tf
ファイルは、稼働中のこの例を示しています。
ご覧の通り、このように新たなダッシュボードを作成する、またはいくつかの調整でダッシュボードを再デプロイする方法はかなりシンプルです。しかし、ダッシュボードを動的に作成するなど、もっと複雑なことをしたい場合はどうすればよいでしょうか?その方法は、本シリーズの第2部をご覧ください。
Next steps
- Terraformを使い、JSONとテンプレート変数でNew Relicダッシュボードを動的に作成する方法については、第2部のTerraformを使用したNew Relicダッシュボードの動的な作成をご覧ください。
- クエリの結果にもとづく動的なNew Relicダッシュボードを作成するための、NRQLクエリを用いたTerraformの使用方法については、第3部のTerraformを使用したNRQLクエリからの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.