Azure Log Analytics の Basic Logs について

この記事では Azure Log Analytics の概要と、新しく追加された価格プランの Basic Logs についてデモ画面付きでご紹介します。

## Azure Log Analytics とは
[Azure Monitor ログ](URL:https://docs.microsoft.com/ja-jp/azure/data-explorer/data-explorer-overview) によって収集されたAzure やその他マシンやサービス リソースのログを分析できる Azure サービスのこと。
分析には Kusto Query Language が使用されており、分析機能は [Azure Data Explorer](URL:https://docs.microsoft.com/ja-jp/azure/data-explorer/data-explorer-overview) からなります。

自己理解の範囲ですが、Azureリソースを作成した場合に、自動的についてくる Azure Monitor （Auzre ポータルでは「モニター」という名前です）の機能の一つに Azure リソースのログ収集機能および Azure Monitor ログがあり、それにより収集されたログの格納先・分析サービスとして Log Analytics があるという風に解釈しています。

また、Defender for Cloud の[管理|環境設定] - [任意のサブスクリプション] - [設定|自動プロビジョニング] に遷移し、この画面の「[Azure VM の Log Analytics エージェント](URL:https://docs.microsoft.com/en-us/azure/defender-for-cloud/enable-data-collection?tabs=autoprovision-feature#disable-auto-provisioning-)」がオンになっているサブスクリプションにおいて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/08a0ab27-5d8c-bdc1-e671-6e38e90e229c.png)


Azure Monitor（モニター）にアクセスすると、「Log Analytics ワークスペース」リソースが存在しており、そこにログが集積されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/442bb607-59f7-0395-07c2-3ca73d318c99.png)

[ログ] ペインより、確かに自分の所持している Azure リソースのログが取れていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/f9d006e0-e0f2-6b43-114f-91a2aaff8978.png)

また、今お見せした Log Analytics ワークスペースは Defender for Cloud の「Azure VM の Log Analytics エージェント」がオンになっている Azure サブスクリプションにおいて、 Azure リソース作成時にできたものであり、自身で Log Analytics サービスを指定してリソース作成することも可能です。VM 建てるのと概念は一緒です。
※ VM の場合、リソースを 1 台とか 1 基とかと数えると思いますが、Log Analytics の場合はワークスペースと呼び・数えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/d78a6950-6d00-981f-a7c1-f7cbd5d34146.png)

Log Analytics ワークスペースを手ずから作成するとこんな感じになります。
上が Defender for Cloud によって自動生成されたもので、下が自身で作成したものになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/8b3c991c-56a2-f19f-384b-78a9546a23e1.png)


## Log Analytics の価格プランについて
Log Analytics はログ収集基盤のため、ログを収集（Ingestion）したり、保持（Retention）したりするのにお金がかかります。
ログの収集にかかる費用は一緒ですが、保持する期間やどんな状態で保持するかによって価格が変わりそうというのは想像に難くないかと思います。どんな状態で、というのは KQL によって検索しやすいかどうかという意味を含みます。

今までAzure Log Analytics に格納されたログはすべて Analytics Logs と呼ばれる価格プランに該当し、Log Analytics の全機能が使用可能でした。2022年2月のアップデートによって Basic Logs というログ収集・保管の価格プランが公開されました。


Analytics Logs と Basic Logs の大きな違いは以下の通りです。
| カテゴリー | Analytics Logs | Basic Logs |
|:-:|:-:|:-:|
| データの取り込み | 高い (約 450 円/GB) | 安い (約 100 円/GB) |
| 保持期間 | 30 - 730 日 | 8 日 |
| アラートの作成 | サポート | 非サポート |

※データの取り込み費用は2022/7/21時点の東日本リージョンにおける相場になります。
参考：
https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/log-analytics-workspace-overview#log-data-plans-preview
https://azure.microsoft.com/ja-jp/pricing/details/monitor/

また、保持期間が終了したログおよびデータ テーブルは **Archived Logs を[有効化](URL:https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#set-retention-and-archive-policy-by-table)する**ことにより、**最大7年間**まで保管できます。
![MicrosoftTeams-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/a8441441-01da-2681-0219-921cfbc32812.png)


参考：
https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/log-analytics-workspace-overview#data-retention-and-archive
Archived Logs にアーカイブされたログは Rest API 等を使用して [Search Job](URL:https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/search-jobs?tabs=api-1%2Capi-2%2Capi-3) や [Restore](URL:https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/restore?tabs=api-1%2Capi-2) を実行することで KQL による分析が可能です。検証結果は今後改めて記載します。

## Basic Logs の特徴
Basic Logs の特徴を以下に抜粋します。
- 以下に記載の特定演算子（オペレーター）のみ使用可能
    - where
    - extend
    - project ※project-away, project-rename 等も含む
    - parse と parse-where
- Microsoft Sentinel の分析ルールや、Azure Monitor のアラートへの利用はできない
- 以下のデータ テーブルでのみ使用可能
    - Azure Monitor の [Logs ingestion API](URL:https://docs.microsoft.com/en-us/azure/azure-monitor/logs/logs-ingestion-api-overview) で収集したもの　※ DCR (データ収集ルール) による収集も含まれる
        - 例
            - [CommonSecurityLog](URL:https://docs.microsoft.com/en-us/azure/azure-monitor/reference/tables/commonsecuritylog)
            - [SecurityEvents](URL:https://docs.microsoft.com/en-us/azure/azure-monitor/reference/tables/securityevent)
            - [Syslog](URL:https://docs.microsoft.com/en-us/azure/azure-monitor/reference/tables/syslog)
            - [WindowsEvents](URL:https://docs.microsoft.com/en-us/azure/azure-monitor/reference/tables/windowsevent)
    - ContainerLogV2　※Container Insights によって収集された Kuberenetes のログ
    - AppTraces　※Application Insights のトレース ログ
- [HTTP データ コレクター API](URL:https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/data-collector-api) を使用して収集したログは対象外


参考：
https://techcommunity.microsoft.com/t5/microsoft-sentinel-blog/ingest-archive-search-and-restore-data-in-microsoft-sentinel/ba-p/3195126
https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/basic-logs-configure?tabs=portal-1%2Cportal-2

## Basic Logs の有効化
[Azure Portal から GUI 操作で変更する方法](URL:https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/basic-logs-configure?tabs=portal-1%2Cportal-2#set-table-configuration)について公開されていました。
[Log Analytics ワークスペース]を選択し、[設定|テーブル(プレビュー)]を選択します。
Basic Logs 対応のデータテーブルにて [...] をクリックし、[テーブルの編集]を選択します。
今回は Application Insights の AppTraces テーブルに対して実施してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/f49b4176-016f-4a7a-9f83-795f843f0758.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/e8674138-93dc-83a2-131c-170304a348ee.png)


以下のように [Table plan] にて [Basic] が選択可能であることを確認します。
ContainerLog と AppTraces については実行できることを確認しましたが、それ以外のデータ テーブルについては要検証な状況です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/eb9d793e-83bf-5da9-8f43-bf145b617ed3.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/00757fde-278e-e33e-f914-cf3bac1ac694.png)

[Table Plan]にて[Basic]を選択すると、以下の画面のようになります。[保存]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/5e7c03c5-5245-81cc-3313-648a26c42ac1.png)

変更後は以下のように表示されます。Archived Logs の設定も有効であるように見えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/9c474b28-3d7e-4fd4-cc85-31de72fa0c21.png)

[MS 公式 Docs](URL:https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/basic-logs-configure?tabs=portal-1%2Cportal-2#retention-and-archiving-of-basic-logs) を読む限り、**Total Retention Period を規定値の 90 日から変更しなかった場合、Total Retention Period 分まで Archive Logs が有効になる**ようです。 

Basic Logs は [Log Analytics ワークスペース] の [全般|ログ] ペインでも確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668292/ce85d6cc-fe13-3ea5-1e4f-9cfdef50820a.png)

参考：
https://qiita.com/YoshiakiOi/items/580603b6827834fbf32d