ライフサイクル管理を設定する際の Blob の種類について
目次
• はじめに
• 自動でログを削除するライフサイクル管理ポリシーの作成方法
• 作成したライフサイクル管理ポリシーの確認方法
• まとめ
• 3行要約
はじめに
Azure Monitor の出力するログ(以下の写真参照、[insights-logs-XXXX] )を一定期間が経った後に消すために Azure Storage の Blob のライフサイクル管理の規則を入れたけれど、想定していた通りに消えないというお問い合わせをいただくことが時々あります。
このログは、診断設定で [他のストレージ アカウントに保存する] を選択したため出力される、対象アカウント(ここでは、「satest0829」)のログです。下記のスクリーンショットでは、「satest0829」 ストレージ アカウントの読み取り、上書き、削除のログを 「r40904mon」 ストレージ アカウントに出力させる診断設定になります。
(診断設定の作成方法に関しては、以下の URL で確認出来ます。
Azure Monitor の診断設定|診断設定の作成)
ライフサイクル管理設定を行ったのにもかかわらず、このようなログが削除されない理由は、ライフサイクル管理ポリシーの対象がブロック BLOB のみになっていて、追加 BLOB を対象に入れていないことに起因します。
では、診断設定を変えずに、このようなログを自動で削除するためのライフサイクル管理ポリシーを実際に構成してみましょう。
自動でログを削除するライフサイクル管理ポリシーの作成方法
- Azure Portal からログ出力対象のストレージ アカウントに移動します。
-
[データ管理] の [ライフサイクル管理] を選択し、[規則を追加 (Add a rule)] をクリックします。
-
必要に応じて詳細を選択します。
ここで、Azure Monitor が出力する insights-logs-XXXX と表記されるコンテナー配下のログは追加 BLOB になるので、ポリシー作成時に [追加 BLOB (Append blobs)] を対象にする必要があります。
-
条件(生成された後に実行するか、最後に修正された後に実行するか)を選択し、実行(削除)までの期間を設定し、[追加 (Add)] を選択します。
これで、ライフサイクル管理ポリシーの作成は完了です。
Azure Portal の他、PowerShell、Azure CLI 又は Azure Resource Manager テンプレートを使用してライフサイクル管理ポリシーを構成、編集する方法やその他の詳細については以下の URL で確認出来ます。
ライフサイクル管理ポリシーを構成する
*ライフサイクル ポリシーは、プラットフォームによって 1 日に 1 回実行されます。 新規ポリシーを作成した後、アクションによっては、初回実行時に最大 24 時間かかる場合がありますのでご注意ください。
作成したライフサイクル管理ポリシーの確認方法
では、実際にログがライフサイクル管理ポリシーによって削除されたか確認する方法は何があるのでしょうか?
• 件数だけの場合
メトリックで Delete Blob 実行の件数を一目で見ることが可能です。
Azure Monitor で Metrics に移動します。ストレージ アカウントの範囲を選択し適用すると、チャートが作成されます。その後、フィルターの [メトリック] 部分で [Transactions] を選択します。更に上の方にある [フィルターの追加 (Add Filter)] を選択し、[プロパティ (Property)] に [API name]、[値 (Value)] に [DeleteBlob] を入力すると、時間軸に沿った実行を確認することが出来ます。
(その他のメトリック操作の詳細に関しては、以下の URL で確認出来ます。
Azure Monitor のメトリックス エクスプローラーの高度な機能 )
ただし、このチャートにはライフサイクル管理ポリシーだけでなく、Azure Portal からの手動削除など、他の操作による Delete Blob も含まれます。そのため、実行数が多い場合は以下の Log Analytics を利用し、ライフサイクル管理ポリシーの実行状況を詳細に確認することが出来ます。
• 詳細に確認する場合
Log Analytics を使用し Delete Blob のオペレーションを列挙することが可能です。この方法は予めログの出力先として設定したストレージ アカウントの Log Analytics を作成する必要があります。
先ず、対象 Log Analytics ワーク スペース(写真では、「workspacefordeleteblob」)に移動します。[全般 (General)] の項目より[ログ (Logs)] を選択し、以下のクエリを実行した結果が BLOB の削除が成功したログとなります。
StorageBlobLogs
| where OperationName == "DeleteBlob"
| where StatusText == "Success"
| where UserAgentHeader contains "ObjectLifeCycleScanner"
各項目をクリックすると、テナント ID や URI などの詳細情報が更に確認出来ます。
まとめ
ファイル ベースの方法で簡単に確認できるため、診断設定を利用しストレージ アカウントのログを出力するように設定した場合でも、そのログが多くなると確認しづらくなります。このようなジレンマを解決するため、ライフサイクル管理ポリシーを構成し一定期間が経過した後自動的にログが削除されるように設定することが出来ます。また、このポリシーの実行状況をメトリックや Log Analytics などを利用し確認することが出来ます。
3行要約
- 診断設定でログの出力が出来る
- ライフサイクル管理ポリシーで対象の Blob 種類を [追加 BLOB (Append blobs)] に設定することで、一定期間が経過した後ログを自動的に削除することが出来る
- メトリックや Log Analytics などでログの自動削除を確認することが出来る
2022 年 9 月 9 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。