New RelicのAzure Monitor統合でリソースグループのタグを設定してみた

# はじめに
　New RelicとAzure Monitorの統合が正式リリースされたことで、AzureのリソースをNew Relic上で確認できるようになりました。

https://docs.newrelic.com/jp/whats-new/2023/05/whats-new-05-23-azure-monitor-integration/

　New RelicのAzure Monitorの統合では複数のサブスクリプションやリソースグループをまとめて俯瞰できるというメリットがありますが、すべてのリソースがリストやタイルで表示されてしまいシステムを構成する単位がどうなっているのかが把握しづらくなるというデメリットもあります。つまり手軽に統合・確認ができるようになった反面、Azureのリソースを整理してNew Relic上で管理していく必要があります。
　この課題を解消する方法としてNew RelicのWorkloadsという機能を活用する方法があります。ユーザーが任意のエンティティを組み合わせてグループを作成することでリソースの状態を俯瞰して捉えることができるようになります。
![Workloads](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/5ee3b0c3-16bf-5ced-fa4b-e6d41948f2f3.png)

# Azure Monitor統合とNew Relic Workloadsを組み合わせた際の問題点
Workloadsを設定する場合、下記2つの方法があります。
* 対象のエンティティを選択する
* クエリで設定した条件に一致したエンティティをグループ化する
![Workloads add](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/91437c95-7251-3000-3651-163193fc59f2.png)

　2つ目の方法であれば、Azure上でエンティティを追加すると自動的にグループ化することができます。ただ設定できる条件がエンティティの属性かタグ情報に限られます。
　ここからが今回の本題です。Azureのサブスクリプションでグループ化する場合は`azure.subscriptionid`がタグ情報に存在するため問題ありません。しかし、リソースグループでまとめる場合はタグ情報にリソースグループが含まれていないためデフォルトの設定ではグループ化することができない状態です。

# この問題の解決策
　この問題はAzure Policyを使ってリソースグループに設定したタグ情報を配下のリソースに継承させる方法で解決が可能です。Azure上で設定したタグの情報はNew Relicにも連携されます。New Relicにリソースグループのタグ情報を連携し、Workloadsの設定条件として使用することでリソースの管理工数を削減できます。

# 手順詳細
まず該当のリソースグループにタグを設定します。
![リソースグループのタグ設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/e117ae6e-a7e0-d072-b256-c692b20ab61b.png)
![タグ設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/f4ef1fb7-09e8-615c-8654-272ba099bf64.png)
画面を更新してタグが設定されていることを確認します。
![タグ設定の確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/06b0fef3-8f41-653d-f98b-c275d260107d.png)

次に該当のリソースグループで 「ポリシー」 を選択します。
![ポリシー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/4dbbb73f-3047-a204-ca95-36de679ee62d.png)
ポリシー画面に遷移したら、「定義」を選択します。
たくさんの定義が出てくると思うので、その中から 「リソース グループからタグを継承する」 を選択します。
上部カテゴリで Tags をフィルターにかけると簡単に見つけられます。
![ポリシーの定義](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/ffe6d8b5-2b86-9754-4311-133f7d573dd2.png)
「割り当て」を選択。
![割り当て](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/66eb87c9-49e2-b09b-ecd6-012d1a1265e8.png)
「スコープ」 に対象のリソースグループを指定して、「次へ」
![スコープの設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/e05bbadf-a2a9-f85f-9f13-58cb5bfd4ffb.png)
「タグ名」 に`ResourceGroup`を指定して、「次へ」
![タグ名の設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/845193a8-0454-b2e9-bbdb-6d5a9c2fb5eb.png)
既存のリソースにもタグを付与したい場合は、ここで 「修復タスクを作成する」 にチェックを入れましょう。
また、「マネージド ID の場所」も選択して、「次へ」
※ 修復タスクの詳細は以下の公式ドキュメントをご参照ください。

https://docs.microsoft.com/ja-jp/azure/governance/policy/how-to/remediate-resources

![修復](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/189d0ae4-198e-a1dc-9bbf-f401729bfd9d.png)
問題無ければ「作成」します。
![作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/90394f3a-07a6-e548-ee8b-c86e4e563a2c.png)
以上で作業は完了です。
ポリシーが適用されるまで 30 分程度かかる場合があるのでご注意ください。
# ポリシーの適用状況を確認する
 ポリシー画面にもどって、「コンプライアンス」 を選択すると、先ほど作成したポリシーが追加されていることが分かります。追加されたポリシーを選択すると、詳細が確認できます。また、画像のように 「修復タスク」 タブを選択すると、既存リソースに対してタグを適用する修復タスクの進行状況が確認できます。
![修復](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/a2c2fac3-d2df-ef32-89c8-f9f06d25a637.png)
「修復状態」 が完了になったのでリソースグループに戻ってみます。
![修復状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/efbc95e8-22a8-cc73-e70b-b1cfe180e421.png)
確認すると、全てのリソースにタグが付与されています。
![リソース一覧ータグ追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/b0bd5e28-bee5-c80c-503a-0eac10f95cac.png)
また、新たにリソース (Functions) を作成してみます。
新規作成されてみるとタグが付いていることが確認できます。
![リソース追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/31d74a5e-eeb2-e631-d498-5043e6796989.png)
# New Relicとの統合におけるタグの取り込みを確認する
　New Relicの画面でタグの取り込みを確認します。All Entitiesの一覧からAzureのリソースを選択し、エンティティ名の下にあるタグマークをクリックするとエンティティに付与されたタグが確認できます。今回追加した`ResourceGroup`もタグの中に含まれています。
![タグの確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/29537f29-b4b5-7e68-6fba-ade5923607a2.png)
このタグを条件に設定してWorkloadsを設定してみます。フィルターにResourceGroupを設定すると該当のリソースグループ配下のAzureのリソースが表示されました。「Add this query」 をクリックすると条件が追加されるため 「Save」 で保存します。
![Workloadsの条件設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/d7b8790e-acc6-a067-871f-064e5232b340.png)
タグの設定されたリソースだけがWorkloadsに表示されるようになりました。
![Workloads確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/5d1a6226-aeea-cd32-cfbe-a0feeecf2e39.png)
# 新規作成したリソースが動的に反映される
　また、新たにリソース (Functions) を作成してみます。
新規作成されてみるとタグが付いていることが確認できます。
![リソース追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/0c3f8150-f2a6-3108-a37b-40a5a20c576e.png)
　次にNew RelicのWorkloadsでリソースが追加されることを確認します。
反映までに時間がかかるため、設定しているデータのポーリング間隔に合わせて時間を空けてください。追加の設定を実施することなくNew RelicのWorkloads上でもリソースが追加されることが確認できました。
![Workloads-自動追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/152a3492-fccd-8069-575f-491f0714cda5.png)
# まとめ
　Azure Policyの活用は、New Relic上でのリソース管理を大幅に自動化することを可能にします。このプラットフォームでは、リソースグループの管理を一元化するためにタグを活用することができます。それは単にグループ化の手段ではなく、本番環境とステージング環境を容易に判別し、それに応じてリソースを整理するための強力なツールになります。
　Azureリソース管理に苦労している方々にとって、New Relic Workloadsとタグの組み合わせは解決策を提供します。これにより、効率的なリソース管理が実現し、それによる課題が軽減されます。
　さらに、AzureのEventHubやBlob Storageといったサービスを利用して、リソースログやアクティビティログをNew Relicに連携することも可能です。この連携により、あらゆる情報を一元化し、全体のリソース管理を効果的に行うことが可能となります。これは、管理者が新たな視点で全体のパフォーマンスを評価し、必要に応じてリソースの割り当てを調整できるようにするための重要なステップです。
　Azure PolicyとNew Relicの組み合わせは、リソース管理の効率化、情報の一元化、そして運用環境の最適化に大きな助けとなるのでぜひ一度試してみてください。


https://docs.newrelic.com/jp/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-monitor/

https://newrelic.com/jp/blog/how-to-relic/how-to-azureintegration

https://newrelic.com/jp/blog/how-to-relic/azure-gcp-logforwarding