New Relic の .NET Agent を使用して Azure Functions をモニタリングする（Windows編） 

　New Relic の APM エージェント（.Net）を使用して Azure Functions をモニタリングするための手順とデータの確認方法を紹介します。これまで New Relic の .NET Agent は Microsoft Azure が提供する PaaS のうち、Azure App Service のモニタリングを公式にサポートしていました。今回 Azure Functions の計装が可能な .Net Agent がリリースされ、Azure Functions を含むサービスのオブザーバビリティを高めることが可能になりました。
　本記事ではエージェントのインストール方法と Azure Functions 用にカスタマイズされた New Relic の UI を紹介します。

https://docs.newrelic.com/docs/serverless-function-monitoring/azure-function-monitoring/install-serverless-azure-monitoring/#windows-configuration

# 今回のポイント
この記事で紹介しているポイントは、次の２つです。
1. **Azure Functions へ .Net エージェントをインストールする手順がわかる**
 Azure Functions の拡張機能を使って New Relic の .Net エージェントをインストールする方法を紹介します。
2. **新しい Data explorer の活用方法がわかる**
 クエリを作成する際に新しい Data explorer を活用するユースケースを紹介します。

:::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)
:::

# 前提条件
　今回は下記の条件で検証しています。
 **◾️Azure Functions の詳細**
 * Hosting Plan : 従量課金（Consumption プラン）
 * ランタイム : .Net
 * バージョン : 8 (LTS), **isolated worker model**
 * OS : Windows

　設定手順は下記の公式ドキュメントをベースに実施しています。

https://docs.newrelic.com/docs/serverless-function-monitoring/azure-function-monitoring/install-serverless-azure-monitoring/#windows-configuration

# Azure Monitor 統合の設定
　Azure Monitor の収集している Functions のメトリクスを New Relic に取り込むことが可能です。　下記の記事の中で　Azure Monitor のメトリクスを統合する方法は下記の記事で紹介されています。こちらの記事を参考に設定してください。

https://qiita.com/ume67026265/items/b62f2c79473ccb6947a5

　このステップは、.Net Agent のインストールに直接関係のない手順ですが、Azure Functions で作成される APM のエンティティで Azure Monitor のメトリクスを表示することが可能です。関連するエンティティを探さなくてもすぐに確認できるのはとても便利です。詳細は[こちら](#azure-monitor-のデータも統合して確認可能)で紹介しています。

# New Relic .NET Agent のインストール
　OS が Windows の Azure Functions に .NET Agent をインストールする際は、拡張機能をインストールして環境変数の設定を行う2つのステップです。
 
## 拡張機能のインストール
　Azure Functions のメニューから拡張機能を選択して .Net Agent を追加します。
![拡張機能_追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/fafbcfe9-7f4b-96a0-ee6c-364ec880f81d.png)


　サイト拡張機能の追加で検索キーワードに "New Relic" を入力すると インストールできる New Relic の .Net Agent が表示されます。 
![拡張機能_エージェントの選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/7a91b3d0-6fe4-be46-f228-aa3af517d3a4.png)

　拡張機能を追加する際の同意事項についての確認が表示されます。問題がなければチェックして追加を実行します。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/36764f6c-8fab-12ed-f581-7b5f6871cd98.png">

　これでエージェントの追加は完了です。
![拡張機能_完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/22e64302-b504-785a-2177-a25fc3ee0ed9.png)


## 環境変数の設定
　New Relic の .Net Agent で使用する環境設定の追加を行います。追加するべき環境変数は公式ドキュメントに記載されています。下記のリンクに記載された環境変数を設定していきます。
 
 https://docs.newrelic.com/docs/serverless-function-monitoring/azure-function-monitoring/install-serverless-azure-monitoring/#configure-the-environment-variables

今回使用しているのは Windows なので対応する環境変数を設定します。
 ![公式ドキュメントの環境変数_Windows.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/3d0483ed-1c65-6394-cba5-658d7e464137.png)

　**設定**の**環境変数**を開くとアプリ設定が開きます。その中から**高度な編集**を選択して環境変数を一括で変更します。
![環境設定の編集.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/0d170118-d150-bbf2-605f-19097c42ee0a.png)

　公式ドキュメントに記載されていた環境変数をコピー＆ペーストして形式を整えます。**NEW_RELIC_LICENSE_KEY** と **NEW_RELIC_APP_NAME** は自分の環境に合わせて設定してください。**NEW_RELIC_APP_NAME** に設定した値が New Relic 上での表示名になります。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/2924caf3-6653-1978-7a93-9cedfee7c58d.png">

環境変数の編集が終わったらアプリ設定の**適用**を選択して編集内容を確定させます。
![編集の適用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/4bea48b5-7cec-16b2-f7bf-b66bf028e93e.png)

変更内容を保存する際に確認画面が表示されます。
![適用の確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/6eb835de-20aa-df0a-7fe6-612ba8427dad.png)

最後に Functions を再起動して設定は完了です。
![再起動.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/f308433b-a51e-0da9-a64c-0e886792c335.png)


# New Relic でデータを確認
Functions をトリガーして New Relic へデータを送信してデータを確認していきましょう。
## トランザクションのデータを確認可能
　環境変数で設定した名称の APM のエンティティが作成されて選択すると下記の様なサマリーが表示されます。
![Summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/e056a4c9-c3d4-6038-01ac-6cdd023a72ee.png)

　Transactionsを開くと関数名と同じトランザクションが表示されており、トランザクションの詳細な情報が確認できます。
![Transactions.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/ab920544-6dd2-d3ca-8210-8705ee55c32b.png)

## Azure Monitor のデータも統合して確認可能
　Azure metrics を選択すると Azure Monitor から収集した Azure Functions のメトリクスが確認できます。**Performance**, **HTTP Status**, **IO Operations** の3つのセクションに分かれています。
 
![Performance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/ee090fc1-56cf-5e31-64e1-dfe279e51b96.png)

![HTTP Status.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/f1098576-b5e8-fcf8-c773-2a5cf3aa1002.png)
 
![IO Operations.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/c3ec09b4-42c7-ae60-92be-c0ed188e10ee.png)

New Relic 上は APM Agent の情報をベースに作成したエンティティと Azure Monitor の情報をベースに作成したエンティティがそれぞれ存在していますが、エンティティを切り替えることなくデータへアクセスできる様になっています。

# データが表示されない場合のトラブルシューティング
　データが表示されない場合は New Relic の .Net Agent と Application Insights が競合している可能性が考えられます。Application Insights を無効化する必要があります。下記のドキュメントを参考に対応してください。

https://docs.newrelic.com/jp/docs/apm/agents/net-agent/azure-installation/no-data-reporting-microsoft-application-insights/

# まとめ
　Azure Functions の拡張機能を使って簡単に New Relic の.Net Agent をインストールできるようになりました。Azure Functions を含む Azure 上で構築されたサービスのオブザーバビリティをより向上させることが今回のアップデートで実現できます。別のアプリからコールされた場合や外部サービスの呼び出し、DBアクセス等についてはまた別の記事で詳しく紹介します。ぜひ Azure Functions に APM Agent を導入してサービスのパフォーマンス改善とユーザー体験の向上につなげてください。 

　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)