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部をご覧ください。
다음 단계
- Terraformを使い、JSONとテンプレート変数でNew Relicダッシュボードを動的に作成する方法については、第2部のTerraformを使用したNew Relicダッシュボードの動的な作成をご覧ください。
- クエリの結果にもとづく動的なNew Relicダッシュボードを作成するための、NRQLクエリを用いたTerraformの使用方法については、第3部のTerraformを使用したNRQLクエリからのNew Relicダッシュボードの作成をご覧ください。
まだNew Relicをお使いいただいていない場合は、無料でNew Relicの使用を開始できます。無料アカウントには、毎月100GBの無料データ取り込み、1名の無料フルアクセスユーザー、および無制限の無料ベーシックユーザーが含まれます。
이 블로그에 표현된 견해는 저자의 견해이며 반드시 New Relic의 견해를 반영하는 것은 아닙니다. 저자가 제공하는 모든 솔루션은 환경에 따라 다르며 New Relic에서 제공하는 상용 솔루션이나 지원의 일부가 아닙니다. 이 블로그 게시물과 관련된 질문 및 지원이 필요한 경우 Explorers Hub(discuss.newrelic.com)에서만 참여하십시오. 이 블로그에는 타사 사이트의 콘텐츠에 대한 링크가 포함될 수 있습니다. 이러한 링크를 제공함으로써 New Relic은 해당 사이트에서 사용할 수 있는 정보, 보기 또는 제품을 채택, 보증, 승인 또는 보증하지 않습니다.