個人開発でAzureを利用しているのですが、Azure上のリソースやアプリケーションなどの統合監視をどうしようか検討していく中で、New Relicを試してみようということで初期設定して使ってみているので、設定方法について忘れないようにメモを残しておこうと思います。正直New RelicのUI上で細かく説明(英語)されているのですが、日本語でAzureと接続する際の手順をまとめた記事が見つけられなかったので、契約前にどんな設定するのか知りたいというニッチな需要のためにも残しておこうと思います。(そもそも自分の検索が悪くて見つけられてないだけかも)
導入方法
1. EntraIDのアプリ登録
まずはNew RelicがAzureの情報にアクセスする際に使用するサービスプリンシパルを作成する必要があります。
- EntraIDの「アプリの登録」を開く
- 「新規登録」を選択
- 以下を設定し登録する
- 名前 : 任意
- サポートされているアカウントの種類 : 「この組織ディレクトリ内のアカウントのみ」を選択
- リダイレクトURI
- 種類 : Web
- URI : https://newrelic.com
- 作成したアプリケーションの「管理」 -> 「証明書とシークレット」を開く
- 「新しいクライアントシークレット」を選択し、作成したシークレットの値を控える
2. Subscriptionのロールを割り当て
作成したサービスプリンシパルに対して、Subscriptionの必要なロール権限を付与します。 必要なロールについては以下の2つです。
- 閲覧者(Reader)
- Azure Monitoring Data Reader
- AzureポータルのSubscriptionを開く
- 「アクセス制御(IAM)」を選択
- 「ロールの割り当てを追加」→「ロールの割り当てを追加」を選択
- 上記のロールを選択(1回の操作で1つのロールしか割り当てできないので、ロール割り当ての工程を2回する必要があります)
- 「メンバーの選択」から先ほど登録したアプリを選択し割り当て
3. microsoft.insightsリソースの登録
Subscriptionに対してmicrosoft.insightsリソースを登録します。(App ServiceとかAzure Functionを利用している環境ではすでに登録済みな気もしますが…)
- AzureポータルのSubscriptionを開く
- 「リソースプロバイダー」を選択
- 「microsoft.insights」を検索し、「登録」を選択
4. New Relic側の設定
次にNew Relic側の設定画面で以下の内容を設定します。
- AccountName : New Relic内でどのAzure環境かを認識するための名前
- SubscriptionID : 上記で設定していたSubscriptionのID
- ApplicationID : 上記で作成したアプリのアプリケーションID(ClientID)
- TenantID : アプリケーションを作ったテナントのID
- ClientSecret : 控えたシークレットの値
Accountの設定が終われば、あとはテレメトリの収集対象にするリソースを選択すれば完了です。
まとめ
設定自体は普段Azureを触られている方ならあまり難しくないかなとは思いました。ただ、シークレットを使用している都合上定期的なローテーションがどうしても必要になってしまうので、それをどう運用していくかは考える必要がありそうです。