在日常的運維工作中,日誌是我們分析系統運行情況、問題定位、系統優化分析等操作的主要數據源頭。同時在很多客戶的實際場景中,爲了滿足公司的審計等要求,也會需要對某種特定類型的日誌數據進行持久的存儲,如SecurityEvent等,從而滿足公司的合規性。對於此類的需求,其實我們有多種方式可以滿足,比如使用某些企業級的日誌收集系統等。那麼在Azure中,我們如何來持久的保存某些類型的日誌記錄呢?
其實在2019年10月8日,微軟宣佈支持每種數據類型獨立增加保留時間。這意味着,如果要爲SecurityEvent日誌收集價值6個月的日誌數據,則可以獨立於其他數據類型的保留期限進行收集。具體可以參考官方文檔,在撰寫本文檔時,要增加每種數據類型的保留時間,就需要利用Rest API進行這些更改。
需要注意的是:Usage 和 AzureActivity 不能使用數據類型設置自定義保留策略。默認情況下,它們會保留90天,並且保留90天是免費的。這些數據類型也免收數據攝取費用。他們將最多保留默認的工作空間或90天。
接下來讓我們看看它是如何工作的,首先通過使用之前的方法來研究如何通過使用門戶來增加保留,然後如何利用Rest API來爲每種數據類型配置此功能。
通過Azure Portal調整保留時間
登錄到Azure門戶後,進入Log Analytics Workspace。爲了配置您的數據保留,您將需要導航至“使用和估計成本”,然後導航至“數據保留”:
然後會彈出“數據保留選項卡”:
可以看出,我們可以滑動滑塊來增加數據的保留週期。超過31天或更低的價格都包含在我們的定價計劃中。因此,假設我們要捕獲6個月的SecurityEvent日誌數據,但我們想保留30天的其他所有數據保留時間。在2019年10月8日之前,這是不可能的。如果必須收集6個月的SecurityEvent Log數據,我們將有兩個選擇:
- 將數據保留增加到6個月,並將Log Analytics Workspace中的所有數據保留6個月。不利的一面是將所有數據保留6個月的成本增加。
- 僅爲Azure SecurityEvent日誌數據創建另一個Log Analytics Workspace,並將數據保留時間設置爲6個月,而收集所有其他數據類型的數據的另一個Log Analytics Workspace保留30天。
但是由於此新功能於2019年10月8日推出,因此不再需要限於以上兩個選項。
通過Rest API根據數據類型調整保留時間
接下來我們將使用ARMClient這個工具來進行一些必要的Rest API調用,從而幫助我們實現將SecurityEvent日誌的保留時間增加到6個月,同時所有其他類型的日誌保留時間不變。我們將使用Chocolatey安裝ARMClient。命令如下:
choco install armclient --source=https://chocolatey.org/api/v2/
安裝後,可以通過在命令提示符或PowerShell提示符中鍵入ARMClient來驗證安裝是否成功:
接下來我們看下如何使用ARMClient配置每種數據類型的保留
讓我們使用以下命令登錄PowerShell中的Azure訂閱(此命令將彈出“現代身份驗證”表單,要求輸入組織ID用戶名和密碼):
ARMClient Login
登錄成功後運行如下命令定義變量:
$Subscription = "00000000-0000-0000-0000-00000000000"
$ResourceGroup = "analytics-rg"
$LogAnalyticsName = "demo0327-LogAnalyticsWS"
然後運行如下命令來將保留時間設置爲180天
ARMClient Put /subscriptions/$Subscription/resourceGroups/$ResourceGroup/providers/Microsoft.OperationalInsights/workspaces/$LogAnalyticsName/Tables/SecurityEvent?api-version=2017-04-26-preview "{properties: {retentionInDays: 180}}"
現在,我們的Log Analytics Workspace中爲SecurityEvent收集的數據將保留180天,而沒有指定的tentionInInDays屬性的所有數據將保留我們在門戶中配置的30天。