VPN Gateway のログを LogAnalytics に保存する

# はじめに
VPN Gateway は、外部から 仮想ネットワーク への VPN 接続 を受け付ける事ができます。

なお、ハード機器の ルーター や L3SW であれば、コマンドでログインして すぐにログを見る事ができますが、 VPN Gateway の場合は、すぐにログは見ることができません。

VPN ゲートウェイ への接続や切断、BGP ルートの伝播 などは アクティビティログでは見る事ができません。そのようなログを見るためには、リソースログを Log Analytics と連携する必要があります。そのための手順を 次章 以降で説明しています。

:::note warn
**ハマりどころ**
VPN ゲートウェイ の ログ監視設定は、誰しも 必ずハマってしまうポイントが２つあります。

本記事を参考にしていただければ、それを乗り越えて構成することができるようになると思います。
:::

**VPN Gateway の 既定のログ**
なお、既定で Azure Portal から参照できるログは、アクティビティ ログ のみです。
アクティビティ ログは、リソースを 追加・削除・変更 などを いつ・誰が実施したのかを確認できますが、それだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5db1d8a2-e3db-e6c8-dc80-4365dffef8f5.png)

アクティビティログを Log Analytics に保存する場合は、本手順とは別に 以下の記事の手順を実施する必要があります。

https://qiita.com/carol0226/items/791c37494a2a9995c486

# 前提事項
事前に、以下の記事の手順を参照して Log Analytics ワークスペースをデプロイします。

https://qiita.com/carol0226/items/eb07275fe8b3eda4a703

当然、VPN Gateway も準備しておきます。

https://qiita.com/carol0226/items/2504c08a88a53bb35f2b

# VPN Gateway の診断設定
VPN Gateway のリソースログを参照できるようにする手順です。
まず、２つのハマりどころについて説明します。

:::note warn
**ハマりどころ：その１**
VPN Gateway で診断設定を行う際に、戸惑う点があります。
過去に、その他のリソース（VM , ストレージ , Azure Firewall）などの診断設定を実施したことがある場合、それと同じように実施しようとすると、「診断設定」のメニューを見つけられずに戸惑います。

 VPN Gateway の診断設定は、左ペインのメニューに 「診断設定」が存在しないため、別の手順を実施する必要があります。

以下のメニューを見ても、どこにも「診断設定」はありません。
<img width="150" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6cf6f802-dcf2-feda-9324-f8145d98b2ed.png">
:::

:::note alert
**ハマりどころ：その２**
**Azure Monitor** は、**"監視"** というサービス名に変わっています。
以下の記事で、この点は 詳しく解説しています。

**Azure Portal で Azure Monitor は "監視" だった！**
https://qiita.com/carol0226/items/7ff6dad36a6caa36875d
:::

では、上記の ハマりどころ を踏まえた構成手順を 紹介します。

0. Azure Portal にサインインし、検索窓で **監視** を探して 選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bacd39a7-4bd2-c0c8-5e2d-288a2e06855d.png)
　<br>
0. **モニター** のリソースのページが開かれるので、左ペインの **設定** を開き **診断設定** を選択します。続いて リソースタイプ から **仮想ネットワークゲートウェイ** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8c9f7541-9283-198b-4c3c-23fdfe20fff1.png)
　<br>
0. 一覧表示された ゲートウェイ の中から、今回 ログ監視を行いたいゲートウェイを選択します。なお、緑枠の箇所をみると この時点では **無効** になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/28dd3256-4e7d-79f9-b08b-1127e76db91e.png)
　<br>
0. 以下の画面が表示されるため **＋診断設定を追加する** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6bfe5b65-8832-e25f-63bb-8395fd3ee033.png)
　<br>
0. 以下の画面が表示されるため ①～⑦ まで、順に操作していきます。
① = 診断設定の名称を任意で指定します
② = 取得するログの種類を指定します
　　　allLogs を選ぶか、下段にある カテゴリ から任意で選びます
③ = 監査ログを取得するかどうかを指定します
④ = メトリックを取得するかどうかを指定します
⑤ = ログを LogAnalytics に取得するので、チェックを入れます
⑥ = 事前に作成しておいた LogAnalytics の名称を選択します
⑦ = **保存** ボタンを押します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bff89867-d9a4-efea-7780-b9c261dbd502.png)
　<br>
0. 以下のような通知が表示されれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9df1701f-9993-4b5a-b2bb-22dca43b61e4.png)
　<br>
0. 以下のように 一覧に 診断設定 が追加されれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b52864a2-d7f1-678c-bcd3-67a2562839c8.png)
　<br>
0. 項番 2 の画面に戻ると、該当のゲートウェイ の **診断の状態** が **有効** になっていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/cde72030-8337-15c8-dd75-b42ea1677fe7.png)

# ワークスペースに保存された VPN Gateway ログ の参照
保存されたログは、以下の操作で参照できます。
① 左ペインの **ログ** を選択します。
② **時間の範囲** を適切な範囲に設定します。
③ KQL を入力します。 **AzureDiagnostics** と入力することで、アプリケーションルール によって制御された際のログが表示されます。
④ **実行** を押すと、KQL 命令が実行された結果が表示されます。
⑤ 表示されたログは、赤枠 をクリックすると 内容を開いて参照できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b87fa1e4-daa0-40a6-4e01-24ad2fc25ee6.png)

:::note info
以下のように 一部の文字列を入力することで 参照可能な　KQL が表示されます。選択して入力できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1642701e-5fb7-2cb8-47a8-c3cccc4613ae.png)
:::

:::note alert
**注意点**
AzureDiagnostics を選択すると、以下のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/fced5e29-1fee-b95b-417d-ff81edd67398.png)

そのあと **実行** を押すと、エラーになります。
エラーの原因は、２行目の | です。 | は、続けて命令を書く時に必要がですが、続きの命令が無い場合には、削除してから実行する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b8f5f91e-3348-6d79-e644-3193e500da3a.png)
:::

VPN ゲートウェイでは、以下の KQL でログを参照できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/548c2d71-5165-de35-8ee8-469da7e04010.png)

例えば、VPN 接続の 接続 & 切断 の様子を見たい場合は、以下のようなクエリを書くことで実現できます。
~~~
AzureDiagnostics
| where Message contains 'connection successful' or Message contains 'disconnect'
~~~
以下の例では、***tnogu@carol226.com というユーザーが 接続＆切断 をしたことを示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d25a181f-1821-e437-4988-11d45e4dd75a.png)

以下のリファレンスも参考にしてみてください。

**例：P2S 接続の成功**
https://learn.microsoft.com/ja-jp/azure/azure-monitor/reference/queries/azurediagnostics?wt.mc_id=mvp_407731#successful-p2s-connections

**例：S2S トンネル connet/disconnect イベント**
https://learn.microsoft.com/ja-jp/azure/azure-monitor/reference/queries/azurediagnostics?wt.mc_id=mvp_407731#s2s-tunnel-connetdisconnect-events

# 関連情報

https://jpaztech.github.io/blog/network/vpngw-how-to-check-maintenance/

https://learn.microsoft.com/ja-jp/azure/vpn-gateway/troubleshoot-vpn-with-azure-diagnostics?wt.mc_id=mvp_407731