AzureVM と AzureArc マシンに Network Watcher Agent を導入する方法

# 1. はじめに
使っていると分かるのですが、Network Watcher Agent 便利ですね！
改めて他のマシンに Network Watcher Agent 入れようとしたところ、入れ方や見え方が異なって癖があるように見えましたので、整理するためこちらに記録を残しておきます。

# 参考 Azure Network Watcher とは？
Azure VM/Arc マシンの拡張機能として導入することが出来るエージェントです。
ネットワーク パフォーマンスの監視、診断、および分析サービスといった機能が使えるようになりますが、個人的に気に入っているのは[Azure Network Watcher 接続モニター](https://learn.microsoft.com/ja-jp/azure/network-watcher/connection-monitor-overview)を用いた死活監視機能です。
Network Watcher Agent を導入した仮想マシン/Arc マシンから、ターゲットを設定してレイテンシーなどの監視を実現することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/8d102fe3-5db7-84f8-ad12-1950d48cb3ed.png)

接続モニターのユースケースとして、以下のようなものが挙げられます。
- 2 つの VM またはスケール セット間のネットワーク接続を確認したい。
    - 米国東部リージョンの VM/スケール セットから米国中部リージョンの VM/スケール セットに ping を実行して、リージョン間のネットワーク待ち時間を比較したい。
- Microsoft 365 URL のユーザーについて、シアトルとアッシュバーンの間で待機時間を比較したい。
- ハイブリッド アプリケーションで Azure ストレージ アカウント エンドポイントに接続する必要がある。
    - オンプレミスのサイトと Azure アプリケーションは、同じエンドポイントに接続する。
    - オンプレミス サイトの待機時間を Azure アプリケーションの待機時間と比較したい。
- オンプレミスのセットアップと、クラウド アプリケーションがホストされている Azure VM/仮想マシン スケール セット間の接続を確認したい。
- Azure 仮想マシン スケール セットの 1 つまたは複数のインスタンスから Azure または Azure 以外の多層アプリケーションへの接続を確認したい。


https://azure.microsoft.com/ja-jp/products/network-watcher/

https://learn.microsoft.com/ja-jp/azure/network-watcher/connection-monitor-overview

# 2. Network Watcher Agent の導入方法
Network Watcher Agent の導入方法ですが、GUI を見ても見当たりません。
Docs を調べてみると、CLI や API で有効化する必要があります。

## 2.1 Azure VM
- 設定方法は[公式 Docs](https://learn.microsoft.com/ja-jp/azure/virtual-machines/extensions/network-watcher-windows)を参照
- Windows
    - [対応OS](https://learn.microsoft.com/ja-jp/azure/virtual-machines/extensions/network-watcher-linux#operating-system) を確認する
    - PowerShellで導入する - ``Set-AzVMExtension``
```powershell
Set-AzVMExtension `
  -ResourceGroupName "myResourceGroup1" `
  -Location "WestUS" `
  -VMName "myVM1" `
  -Name "networkWatcherAgent" `
  -Publisher "Microsoft.Azure.NetworkWatcher" `
  -Type "NetworkWatcherAgentWindows" `
  -TypeHandlerVersion "1.4"
```
- Linux
    - [対応OS](https://learn.microsoft.com/ja-jp/azure/virtual-machines/extensions/network-watcher-linux#operating-system)を確認する
    - Azure CLI を用いてデプロイする - ``az vm extension set``
```
az vm extension set --resource-group myResourceGroup1 --vm-name myVM1 --name NetworkWatcherAgentLinux --publisher Microsoft.Azure.NetworkWatcher --version 1.4
```
- 確認方法
    - Azure VM の拡張機能より、```networkWatcherAgent```が追加されていることを確認する
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/9853ea2a-07a2-e630-32e9-2ad0ff3b244f.png)

## 2.2 Azure Arc マシン
- Azure Arc で接続・登録を行う
- [Arc マシンに Azure Monitor Agent を導入する](https://learn.microsoft.com/ja-jp/azure/network-watcher/connection-monitor-install-azure-monitor-agent?tabs=PowerShellWindowsArc%2CCLIWindowsArc)
- Network Watcher 拡張機能を導入する
- Windows - ``New-AzConnectedMachineExtension`` コマンド
```
New-AzConnectedMachineExtension -Name AzureNetworkWatcherExtension -ExtensionType NetworkWatcherAgentWindows -Publisher Microsoft.Azure.NetworkWatcher -ResourceGroupName $rg -MachineName $vm -Location $location
```
- Linux - ``New-AzConnectedMachineExtension`` コマンド

```
New-AzConnectedMachineExtension -Name AzureNetworkWatcherExtension -ExtensionType NetworkWatcherAgentLinux -Publisher Microsoft.Azure.NetworkWatcher -ResourceGroupName $rg -MachineName $vm -Location $location
```
- AzureVM とは異なり、拡張機能のエージェントは ```AzureNetworkWatcherExtension``` で表示される
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/5d82782d-559e-5ba7-fec9-b1a4b673fbe1.png)

# まとめ
Azure VM と Arc 経由でコマンドや導入方法、確認方法が異なるのでご注意下さい。
本記事がどなたかの参考になれば幸いです。

＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。