LogAnalyticsWorkspaceのデータエクスポート設定について

#### はじめに
甲子園ついに始まりましたね。私は、毎年この時期が一番楽しいです。
さて、本記事ではLog Analytics Workspaceのデータエクスポートについて触れていきます。
ビギナー向けの内容になっております。

#### 目次
[データエクスポートとは](#データエクスポートとは)
[送信されたデータ形式](#送信されたデータ形式)
[設定方法](#設定方法)
　[・LogAnalyticsWorkspaceでデータエクスポートの設定をする](#loganalyticsworkspaceでデータエクスポートの設定をする)
　[・StorageAccountのネットワーク設定](#storageaccountのネットワーク設定)
　[・LogAnalyticsWorkspaceのネットワーク分離](#loganalyticsworkspaceのネットワーク分離)
[参考文献](#参考文献)

## データエクスポートとは
Log Analytics Workspaceで設定可能な機能となります。Azure Monitor Pipelineに到着したデータをStorageAccountまたはイベントハブへ送信ができます。
データエクスポートを実装することで、以下のように収集したログをLog Analytics WorkspaceとStorage Account(Azure Blob Storage)へ並行でログを格納することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/c3f1009a-e779-d31c-8299-a414450e018c.png)

上図にもあるように、TransformKQLで変換した後のデータをStorage Accountとイベントハブへ送信できます。

## 送信されたデータ形式
Storage Accountへ送信したデータは以下のような形式で格納されます。
なお、コンテナやディレクトリはStorage Accountに存在しない場合もデータの出力時に自動で作成されます。
#### ◇コンテナ名
Storage Accountへ以下のコンテナに出力されます。

+ am-<テーブル名>
 
例えば「swlogs_cl」というテーブル名をデータエクスポートする場合、「am-swlogs_cl」というコンテナ名になります。
#### ◇ディレクトリパス
ディレクトリパスは以下のようになります。
~~~ ディレクトリパス
WorkspaceResourceId=/subscriptions/subscription-id/resourcegroups/<リソース グループ>/providers/microsoft.operationalinsights/workspaces/<ワークスペース>/y=<4 桁の数値年>/m=<2 桁の数値月>/d=<2 桁の数値日>/h=<2 桁の 24 時制の時間>/m=<2 桁の 60 分制の分>
~~~
最後の「m=<2 桁の 60 分制の分>」は5分毎に作成されます。
#### ◇ファイル
JSON形式で出力します。以下のファイルに出力されます。
+ PT05M.json

5分間、ひたすらこちらの「PT05M.json」ファイルに出力されますが、書き込み件数が5万件という制限があり溢れた分は「PT05M_<連番>.json」といった形で別のファイルに出力されます。
ファイルの中身はこんな感じとなります。(参考までに)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/440fced7-8cf1-fb58-6107-bcc058a476cc.png)

## 設定方法
極めて簡単です。大きな流れは以下です。
1. 仮想マシンからLog Analyticsへのデータ収集ルールを作成する
1. Azure Storage Account並びにBlobを作成する
1. LogAnalytics Workspaceでデータエクスポートの設定をする

1と2は本記事では割愛します。趣旨と外れるので、またの機会に紹介しますね。
参考までに以下記事がおすすめです。
+ [MS|Azure Monitor でデータ収集規則 (DCR) を作成および編集する](https://learn.microsoft.com/ja-jp/azure/azure-monitor/essentials/data-collection-rule-create-edit?tabs=portal)
+ [MS|Azure Storage アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/storage/common/storage-account-create?tabs=azure-portal)

### LogAnalyticsWorkspaceでデータエクスポートの設定をする
①Azure Portalからデータエクスポートの設定をしたいLog Analytics Workspaceの設定ページを開き、「データエクスポート」を選択します。

②「新しいエクスポートルール」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/ad03d0b0-6ed0-2acf-93a9-5666f07cd637.png)

③ルール名を記載して画面下の「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/2b54684c-2237-408c-12e2-788efee7643c.png)

④データエクスポートを行うテーブルを選択して画面下の「次へ」をクリックします。
テーブル名の左側のチェックボックスをクリックすることで、全テーブルの選択もできます。
（カスタムテーブルは後ろに_CLが付きます。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/527371f8-6214-c0f4-fd87-749f439899ce.png)

⑤送信先の指定をして「次へ」をクリックします。
◇Storage Accountの場合
+ サブスクリプション
+ Storage Account

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/8014c269-b29c-f206-f53a-ca055bb16719.png)

◇イベントハブの場合
+ サブスクリプション
+ イベントハブの名前空間
+ イベントハブ名

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/74f7c502-b3df-2390-c55b-5db2a4340622.png)

⑥「確認および作成」タブで「作成」をクリック

以上で、エクスポートルールの作成ができました。
後は、ログをLog Analytics Workspaceに送ってテストをしてみましょう。

### StorageAccountのネットワーク設定
Storage Account側で完全にパブリック通信を遮断すると、Azure Monitorからの通信を受け取れずStorage Accountがエクスポートされたログを受け取れません。そのため、Storage AccountにはAzureサービスからのパブリック通信を許可する設定が必要です。
そのため、以下のようにFWを無効にしておくか、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/aa41181a-7cbd-773f-b5dc-6c08dee5805c.png)

FWを有効にする場合は、「信頼されたサービスの一覧にある Azure サービスがこのストレージ アカウントにアクセスすることを許可します。」を有効にしておく必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/ef97d24f-b134-e3e3-31df-89b3a282cd4f.png)

### LogAnalyticsWorkspaceのネットワーク分離
Log Analytics Workspace側の「ネットワークの分離」設定はデータエクスポートには影響していないみたいでした。こちらは、あくまでログの収集とクエリに対してのみ影響を持つみたいです。

#### 参考文献
+ [MS|Azure Monitor の Log Analytics ワークスペース データ エクスポート](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/logs-data-export?tabs=portal)
+ [Japan Azure Monitoring Support Blog|Azure Monitor エージェントでカスタム ログを取得する方法](https://jpazmon-integ.github.io/blog/LogAnalytics/AMA_CustomLog/)