0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure LogAnalythicsワークスペースのログをCLI経由で削除する

Posted at

Azure LogAnalythicsワークスペースに対してログ削除の要求(AzureRESTAPI)を行う。AzureCLIを使用してcurlコマンドで削除要求を投げる。

目次

  1. Azure LogAnalythicsワークスペースについて
  2. 前提条件
  3. 削除リクエスト作成
  4. 削除の実行(Azure CLI/curl)

1. Azure LogAnalythicsワークスペースについて

一般的にログの確認を行う場合は各APIのApplication Insightから行うが、Application Insightのログは紐付いているLogAnalythicsワークスペースに集約される。
LogAnalythicsワークスペースから確認が可能なログの削除を行う。
( = LogAnalythicsワークスペースに設定されているログ保存期間を過ぎたものはこの手順では削除できない。)

2. 前提条件

  • Application InsightとLogAnalythicsワークスペースのテーブルの比較参照先が明らかであること
  • Application Insightのログ画面で削除対象のログが絞り込めること → LogAnalythicsワークスペースでも該当ログが確認できていること

3. 削除リクエスト作成

削除要求URIの作成

削除要求URIは 「対象LogAnalythicsワークスペースのリソースID」+「purge?api-version=yyyy-mm-dd」 の形式。
「purge?~」手前までが対象LogAnalythicsワークスペースの情報となるため、リソースIDを参照する。

削除URI
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/purge?api-version=2020-08-01

リソースIDの確認方法
 >対象のLogAnalythicsワークスペースを開く
 >概要画面の右上、「JSONビュー」をクリック
 >リソースIDが表示される

削除要求JSONの作成

基本的には削除対象を絞り込んだKQLをJSON形式にする。

削除JSON
{
  "table": "Heartbeat",
  "filters": [
    {
      "column": "TimeGenerated",
      "operator": ">",
      "value": "2017-09-01T00:00:00"
    }
  ]
}

複数条件の場合は下記のように条件をカンマで区切る。

削除JSON
{
  "table": "Heartbeat",
  "filters": [
    {
      "column": "TimeGenerated",
      "operator": ">",
      "value": "2017-09-01T00:00:00"
    },{
      "column": "Properties",
      "key": "UserId"
      "operator": "==",
      "value": "xxxx-xxxx-xxxx-xxxx-xxxx-xxxx"
    }
  ]
}

3. 削除の実行(Azure CLI/curl)

削除要求の実行には削除権限(Data Purge Role)が必要

AzureCLIを使用してAzureにサインインする。

Azure CLI
az login

トークン情報を取得する。

Azure CLI
az account get-access-token

設定によっては上記手順での取得が出来ないため、その場合はAzureの認証設定周りの構成を要確認。

上記で取得したトークン、削除要求URI、削除要求JSONを使用する。
※data部分はシングルクォーテーションで囲む

curl
curl -X POST -i 
-H "Authorization:Bearer <TOKEN>"
-H "Content-Type:application/json"
-d '<JSON>' <URI>

ステータスコード202で正常応答、ボディ部は下記形式でオペレーションIDが返ってくる。

レスポンスbody
{
  "operationId": "7d7cf277-9113-4ab3-8359-d0364b74d01d"
}

削除処理は削除リクエストを投げてから完了するまでに時間がかかるため、オペレーションIDを使用して状況を確認する。

確認の際は下記形式。
URIは削除要求と同様にリソースIDを参照、オペレーションIDを指定することで該当処理の状態確認を行う形。

curl
curl -H
"Authorization:Bearer <TOKEN>"
"https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/operations/<OPERATIONID>?api-version-2020-08-01"

レスポンスは"completed"または"pending"のどちらかのみ。
削除にはかなり時間がかかる模様。

消去中
{
  "status": "completed"
}
完了時
{
  "status": "completed"
}

ステータスがcompletedになっていることを確認し、念のためブラウザからもログが消えていることを確認して削除完了。

リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?