Log Analytics Workspace のアーカイブログへの移動を30日待たずに行う。

こんにちは、駆け出しアーキテクトのやまぱんです。

今回はMSのドキュメントわかりにくいなーと思い、確認したので備忘録としてメモしておきます。

### やりたいこと
Log Analytics Workspace のアーカイブログへの移動を30日待たずに行う。
つまり、インタラクティブな保存期間を30日未満にするか、即時にアーカイブ期間に移動するということを行いたい。

:::note info
アーカイブログとは：アーカイブ ログとして保存することで保存料金を下げ、長期間保存しておくことができる、ログの種類です。Log Analytics Workspace に取り込まれたデータは**インタラクティブな保存期間**を経て、**アーカイブ期間**(アーカイブログ)と移動します。
:::


### 困った点

公式 Docs を見ると4日で設定できそうな事が書かれているが、実際には Azure Portal からは設定できない!!(最短でも30日になっている)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/2fcb95f6-d8b0-3008-9c5a-03a0b3c83c51.png)
> **4 日から 730 日の範囲** のインタラクティブな保持期間でデータを保持できます。

https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#set-retention-and-archive-policy-by-table

### 解決策
結論から言えば、 Azure CLI や Azure PowerShell を使うことで最短4日に設定することが可能です。


コマンド例はこちらに載っています。

https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/data-retention-archive?tabs=cli-1%2Cportal-2#set-retention-and-archive-policy-by-table

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/4909f46a-e7c8-7622-00a3-52e8f27b5cc8.png)


####  実行例 -  Azure CLI 
* 設定する 
インタラクティブな保存期間(--retention-time)：四日、トータルの保持期間(--total-retention-time)730日で設定した例です。
```
az monitor log-analytics workspace table update --subscription <Subscription ID> --resource-group <rリソースグループ> --workspace-name <ワークスペース名> --name <Table名> --retention-time 4 --total-retention-time 730 - o table
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/0603764f-d6d4-bbbf-bbfe-5e8274982d76.png)

* 確認する

```
az monitor log-analytics workspace table show --subscription <Subscription ID> --resource-group <rリソースグループ> --workspace-name <ワークスペース名> --name <Table名> -o table
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/5e84fb92-81e7-a417-2dd6-d6fa0eb89b71.png)

:::note info
--retention-time に 4(日) 未満の数字を入れた場合はエラーが出て設定できない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/33e4fb1a-4a11-62e3-d15f-8441ee23c1af.png)
```
Error Message："InvalidArgumentValue: --retention-time: Invalid format: '3' is less than 4"
```
:::

####  実行例 -  Azure PowerShell
もちろんAzure PowerShellでも可能。
Azure PowerShellのバージョンが古いとコマンドを認識しない可能性があります。(実際なった)
このあたりを参考にして最新版を導入してください。
**msiでインストールした人はmsiでしかアップデートできないのでお気をつけてください**

https://learn.microsoft.com/ja-jp/powershell/azure/install-azps-windows?view=azps-10.0.0&tabs=powershell&pivots=windows-psgallery

https://github.com/Azure/azure-powershell/releases

* 設定
インタラクティブな保存期間(-RetentionInDays)：4日、トータルの保持期間(-TotalRetentionInDays ):730日で設定した例です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/1ea13684-68bc-226c-c16c-b60288fc6f95.png)

* 設定確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/727077cf-8b2b-e09e-5185-eef13681d4bc.png)

:::note info
-RetentionInDays 1 に 4(日) 未満の数字を入れた場合はエラーが出て設定できない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/27411482-a30b-a334-79d8-99effd5a1a62.png)
```
Error Message：
Update-AzOperationalInsightsTable: Operation returned an invalid status code 'BadRequest'
Bad Request
{"error":{"code":"InvalidParameter","message":"The specified retention value is invalid. Operation Id: '156699c0f04ebc8483f692226abad9ce'"}}
```
:::


####  Azure Portal で確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/b818ac1a-7425-0192-fe9b-dfae2eb7a581.png)

設定前にはなかった Azure Portal のプルダウンメニューにも4日が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/4c8cbf5d-eaff-16ed-f348-82db61bb5b1e.png)

<再掲-設定前>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/ae1ed8af-bf6b-bcc0-2c7b-bcc1a50acfa5.png)


###  Log Analytics の料金について
Log Analytics のデータの保持は最初の31日間無料です。

> **"Log Analytics ワークスペースに取り込まれたデータは、最初の 31 日間 (または Microsoft Sentinel がワークスペースで有効になっている場合は 90 日間) まで無料で保持できます。"**

https://azure.microsoft.com/ja-jp/pricing/details/monitor/

上記のことからインタラクティブな期間が 1~30日であればどれであってもそもそも保管コストはかからないので、インタラクティブな期間を短くしてもコスト的なメリットないです。


### あとがき
Azure Portal からでは設定できない旨Docsに記載されていないのでエスカレーションしました。
"タシカニワカリニクイネ" とコメントもらったので、そのうち修正してくれそうです。
 Azure 、Azure Portal ではできないけど Azure CLI やAzure PowerShell、 APIでできることっていうのは実は結構ありますよね。

もっと親切なドキュメントになることを祈るばかりです。