New Relic の Azure 統合で使用するクライアントシークレットを更新するには

　New Relic の Azure 統合は設定時にAzure Entra ID で発行したクライアントシークレットを使用します。シークレットには有効期限が設定されているため、期限を迎える前に更新する必要があります。期限が過ぎてしまうと Azure のメトリクスが取得できなくなり、Azure の PaaS 等の監視ができなくなってしまいます。
　今回はクライアントシークレットを更新する2つの方法を紹介します。

 https://docs.newrelic.com/docs/infrastructure/microsoft-azure-integrations/get-started/activate-azure-integrations/#update-app

# 今回のポイント
この記事で紹介している方法は、次の2つです。
1. **Infrastructure の UI から更新する方法**
 GUI上からクライアントシークレットを更新する方法を紹介します。
2. **NerdGraph で更新する方法**
 New Relic の設定が実行できる GraphQL API(NerdGraph) を使って更新する方法を紹介します。

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

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

# 更新手順
## Infrastructure の UI から更新する
　Azure のクライアントシークレットを更新する際は、Infrastructure のメニューを使用します。Azure を選択して現在設定されている Azure 統合の Provider account や 統合の一覧を確認します。更新対象の Provider account を選択したら **Edit account**を選択します。
![infrastructure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/cc27d0cc-15b1-8a14-7f76-e0ef446476b5.png)

　Edit account の画面を開くと **Client Secret** が空欄で表示されます。ここに新しく作成したクライアントシークレットを入力して **Save changes**をクリックします。
![edit-account.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/0987bce4-4034-63f8-c0a5-bf368c121f79.png)

すると更新する項目の確認画面が表示されます。今回は Client Secret のみを更新しているので1つだけ表示されています。
![確認画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/3b804269-ae10-d59c-22e8-9c0633e45314.png)

複数の項目を更新しようとすると更新した項目が列挙されます。
![確認画面_複数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/9539c7a0-7706-c5da-7c2b-57a67f0af19d.png)

Save changes を選択すれば更新作業は完了です。

## NerdGraph を使って更新する方法
　New Relic の設定をAPI経由で実行できる GraphQL API(NerdGraph) を使って更新する方法を紹介します。関連する New Relic の NerdGraph の公式ドキュメントはこちらです。

https://docs.newrelic.com/docs/apis/nerdgraph/examples/nerdgraph-cloud-integrations-api-tutorial/#rotate-azure-token

### NerdGraph API Explorer の設定
　今回は NerdGraph を使用するために GUI で GraphQL を実行できるツール New Relic の NerdGraph API Explorer を使って設定します。ツールの詳しい使い方はこちらのチュートリアルを確認して下さい。

https://docs.newrelic.com/jp/docs/apis/nerdgraph/get-started/nerdgraph-explorer/

　All capabilities > Apps > NerdGraph API explorer でツールにアクセスできます。
![NerdGraph API Explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/f8b5560c-b9c4-6d10-0b46-331d8d8e5816.png)

User API Key を入力して **submit** するとクエリを実行する準備は完了です。
![UserAPIKey.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/607f103a-53f2-53b9-e95d-05c50600d3e3.png)


### パラメータの確認
mutationの例が下記のように記載されているので設定するパラメータを確認していきます。
```graphql
mutation {
  cloudUpdateAccount(
    accountId: <NR_ACCOUNT_ID>
    accounts: {
      azure: {
        linkedAccountId: <NR_LINKED_ACCOUNT_ID>, 
        clientSecret: <azure_secret_token>
      }
    }
  ) {
    linkedAccounts {
      id
      name
      authLabel
      createdAt
      updatedAt
    }
  }
}
```
**\<NR_ACCOUNT_ID\>** は、New Relic のアカウントIDです。
**\<NR_LINKED_ACCOUNT_ID\>** は、Azure 統合の Provider account の ID を設定します。UI上だと以下の画面で確認が可能です。

![NR_LINKED_ACCOUNT_ID.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/84dc6d17-b9c3-5bb6-12d8-33d20707bc6c.png)
**\<azure_secret_token\>** にAzureで作成したクライアントシークレットを設定します。

　私の環境でそれぞれ値を設定すると下記のようになります。
```graphql:
mutation {
  cloudUpdateAccount(
    accountId: 3720297
    accounts: {
      azure: {
        linkedAccountId: 172051, 
        clientSecret: "ppppp~pppppppp~pppp0000PPPP000PPPP"
      }
    }
  ) {
    linkedAccounts {
      id
      name
      authLabel
      createdAt
      updatedAt
    }
  }
}
```

### 実行結果の確認
　実行すると下記のような結果が返ってくると更新は成功です。レスポンスの内容はクエリ実行時に指定できるのでカスタマイズしたい方は試してみて下さい。
```json
{
  "data": {
    "cloudUpdateAccount": {
      "linkedAccounts": [
        {
          "authLabel": "9xx99xx9-x99x-9x9x-9x99-9999x99x9999",
          "createdAt": 1685326733,
          "id": 172051,
          "name": "Azure_NR_integration",
          "updatedAt": 1729095314
        }
      ]
    }
  }
}
```
　更新に失敗すると下記のようなレスポンスが表示されます。この例では linkedAccountId を不正に変更しています。message にエラーの原因も表示されているので、エラーになった際は message の内容を確認して下さい。
```json
{
  "data": {
    "cloudUpdateAccount": null
  },
  "errors": [
    {
      "message": "Linked account 172052 was not found",
      "path": [
        "cloudUpdateAccount"
      ],
      "extensions": {
        "errorClass": "SERVER_ERROR"
      },
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ]
    }
  ]
}
```
# 最後に
 New Relic の Azure 統合を利用する際には、クライアントシークレットの更新は必要不可欠な運用です。GUI を使って簡単に更新することができるようになっていますし、NerdGraph を使った自動化にも対応しています。運用に合わせて更新方法を検討してみて下さい。

# その他
New Relicでは、**新しい機能やその活用方法**について、QiitaやXで発信しています！
**無料でアカウント作成**も可能なのでぜひお試しください！

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

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::
[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/66d6a010-e4fe-4004-a09b-c01eaad5a614.png)](https://newrelic.com/jp/contact-sales)