きになったのでしらべた備忘録です。
Logを大体Loganalyticsに放り込んでいるがLoganalyticsは最大2年保持されるがそれ以降は消えてしまう。でも3年保存したいまたは過去のやつは1年過ぎたら見ることもあまりないがとっておく必要はあってコストを抑えたいなどの需要に対応できるといいかなと。
最終保存場所
最終的にBlobに投げつけておけば安いし勝手には消されないであろうしライフサイクルが定義できるのでいいのでは。
https://docs.microsoft.com/ja-jp/azure/storage/blobs/storage-lifecycle-management-concepts?tabs=azure-portal
blobまで運ぶ方法
1.RunbookかLogicAppsでクエリかけたやつをBlobに出す
https://cloudsteady.jp/post/11347/
https://qiita.com/Aida1971/items/c9fcb979084aae9fd890
2.StreamAnalyticsでEventHubをかましてからBlobに置く
https://devlog.arksystems.co.jp/2016/08/03/820/
https://azure-recipe.kc-cloud.jp/2015/12/streamanalytics-1/
AzureリソースからEventHubかます方法はこのへんからたどることができそうなきがする。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/stream-monitoring-data-event-hubs
そもそも外部のlog分析ツールと連携するのにEventHubを使うのが一般的みたいな感じなのかな。
LogicAppsでクエリかけてblobに置くのを試した
上記画像でしている内容は以下のとおり。
・スケジュールコネクタで一日おきに動く
・前日の日付を関数で出す
formatDateTime(addDays(utcNow(), -1), 'yyyy-MM-dd')
・長期保存するテーブルのリストを配列にする
上記の画像でやってる内容は以下のとおり。
・配列をループ処理する
・保存するファイル名のデータ作成
・Loganalyticsに接続し現在読み込まれたテーブルのログを指定された日付の始まりから終わりまで取得
| where TimeGenerated between(datetime(\"datetime(\"@{outputs('filename-date-create')} 00:00:00.000\") .. datetime(\"datetime(\"@{outputs('filename-date-create')} 23:59:59.999\"))
・LoganalyticsからとってきたデータをCSVにする
・CSVをBlobの指定した場所に指定した日付のファイル名(ループの先頭でつくったデータ)で出力する
実行すると以下のようにblobに出力される。
LogicAppsだと途中で圧縮とかはコネクタがないなと思った(エンコードはあった)けど、AutomationだとPowerShellいけるのでどうにかなるのかもしれない(ためしてない)。