ダッシュボードをもっと便利に！変数の表示名をカスタマイズする方法！

New Relicで作成したダッシュボードを動的にフィルターする方法として、[変数を使う方法](https://docs.newrelic.com/jp/docs/query-your-data/explore-query-data/dashboards/dashboard-template-variables/)と[FACETを使う方法](https://docs.newrelic.com/jp/docs/query-your-data/explore-query-data/dashboards/filter-new-relic-one-dashboards-facets/)があります。

変数を使う方法の場合は、これまでその選択肢の文字列がそのまま表示されていたのですが、***選択肢の表示名を変更***できるようになったので、本記事ではTerraformを使って実際にそのやり方を試してみたいと思います！
※まだUI上では変数の選択肢の表示名は変更できませんでした。。。

:::note info
最新のアップデートの詳細はこちら
[New Relic アップデート(2024年2月)
](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202402 "New Relic アップデート(2024年2月)")[New Relic アップデート一覧
](https://newrelic.com/jp/blog/nerdlog/new-relic-update  "New Relic アップデート一覧")
:::

# Terraformを使ってダッシュボードを更新する方法
Terraformが提供しているNew Relic Providerを使うことで操作可能です。
※Terraformの使い方は割愛します。

https://registry.terraform.io/providers/newrelic/newrelic/latest/docs

また、Terraformを使ってダッシュボードを更新する方法はこちらを参考にしています。

https://newrelic.com/jp/blog/how-to-relic/create-nr-dashboards-with-terraform-part-1

今回は、下記のファイルを作成してダッシュボード変数の選択肢の表示名を設定していきます。
```
.
├── main.tf
├── dash_basic.tf
└── dashboards/
    └── dashboard.json
```

# main.tf と dash_basic.tf を作成
最初に、***main.tf*** を作成して操作対象のNew Relicの情報を記述します。
環境に併せて***Your Account ID***と***Your Personal API Key***を変更ください。
※Your Personal API Keyは、[User Key](https://docs.newrelic.com/jp/docs/apis/intro-apis/new-relic-api-keys/#user-key)をご使用ください。

```hcl:main.tf
terraform {
  # Require Terraform version 1.0 (recommended)
  required_version = "~> 1.0"

  # Require the latest 2.x version of the New Relic provider
  required_providers {
    newrelic = {
      source  = "newrelic/newrelic"
    }
  }
}

provider "newrelic" {
  account_id = Your Account ID
  api_key = "Your Personal API Key"    # usually prefixed with 'NRAK'
  region = "US"                        # Valid regions are US and EU
}
```

下記も参考にしてください。

https://docs.newrelic.com/jp/docs/infrastructure-as-code/terraform/terraform-intro/

続いて***dash_basic.tf***を作成します。下記をコピーしてください。

```hcl:dash_basic.tf
resource "newrelic_one_dashboard_json" "basic_dashboard" {
     json = file("${path.module}/dashboards/dashboard.json")
}

resource "newrelic_entity_tags" "basic_dashoard" {
	guid = newrelic_one_dashboard_json.basic_dashboard.guid
	tag {
    	     key    = "terraform"
    	     values = [true]
	}
}

output "basic_dashboard" {
      value = newrelic_one_dashboard_json.basic_dashboard.permalink
}
```

main.tf と dash_basic.tf を作成しました。

```
.
├── main.tf
└── dash_basic.tf
```

# 変更元のダッシュボードのJSONを取得

New Relic上でダッシュボードを作成して、変数を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/7c9d2565-b915-0ade-9122-05b9be2ad16b.png)


https://docs.newrelic.com/jp/docs/query-your-data/explore-query-data/dashboards/dashboard-template-variables/

その後、***Copy JSON to clipboard*** を使用してダッシュボードの情報をJSONとしてコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/6eb86508-f637-5bb4-13c9-341ba6244495.png)

main.tfと同じ階層に***dashboards***ディレクトリを作成して、***dashboard.json***にコピーしたJSONを貼り付けます。

```
.
├── main.tf
├── dash_basic.tf
└── dashboards/
    └── dashboard.json
```

# dashboard.jsonで変数の選択肢の表示名を変更

例えば、dashboard.jsonを開いたときに変数が下記のようになっていた場合は、

```json:dashboard.json抜粋(変更前)
  "variables": [
    {
      "name": "Country",
      "items": [
        {
          "title": null,
          "value": "value-01"
        },
        {
          "title": null,
          "value": "value-02"
        },
        {
          "title": null,
          "value": "value-03"
        }
      ],
```

***"title": null***のnull部分に表示名を設定することが可能です。
※下記の例では"01"、"02"、"03"と変えています。

```json:dashboard.json抜粋(変更後)
  "variables": [
    {
      "name": "Country",
      "items": [
        {
          "title": "01",
          "value": "value-01"
        },
        {
          "title": "02",
          "value": "value-02"
        },
        {
          "title": "03",
          "value": "value-03"
        }
      ],
```

# terraformを実行

下記コマンドを実行して、変数の選択制の表示名を入れ替えます。

```
terraform init
terraform plan
terraform apply
```

変数の選択肢の表示名が変更されていることを確認できました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/84421de0-daf7-f5b3-cc27-a3d218d35758.png)

# まとめ
New Relicで作成したダッシュボードを動的にフィルターする方法として利用される変数の選択肢の表示名を変更する方法を試してみました。UIでの変更ができるようになるまでは本記事のように一旦対象のダッシュボードをJSONとしてコピーして、terraformを使って上書きいただくのが良いかと思います。やってみると簡単なのでぜひ試してみてください。

:::note info
[New Relic株式会社のQiita OrganizationOrganization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::