在日常的运维工作中,日志是我们分析系统运行情况、问题定位、系统优化分析等操作的主要数据源头。同时在很多客户的实际场景中,为了满足公司的审计等要求,也会需要对某种特定类型的日志数据进行持久的存储,如SecurityEvent等,从而满足公司的合规性。对于此类的需求,其实我们有多种方式可以满足,比如使用某些企业级的日志收集系统等。那么在Azure中,我们如何来持久的保存某些类型的日志记录呢?

其实在2019年10月8日,微软宣布支持每种数据类型独立增加保留时间。这意味着,如果要为SecurityEvent日志收集价值6个月的日志数据,则可以独立于其他数据类型的保留期限进行收集。具体可以参考官方文档,在撰写本文档时,要增加每种数据类型的保留时间,就需要利用Rest API进行这些更改。

需要注意的是:Usage 和 AzureActivity 不能使用数据类型设置自定义保留策略。默认情况下,它们会保留90天,并且保留90天是免费的。这些数据类型也免收数据摄取费用。他们将最多保留默认的工作空间或90天。

接下来让我们看看它是如何工作的,首先通过使用之前的方法来研究如何通过使用门户来增加保留,然后如何利用Rest API来为每种数据类型配置此功能。

通过Azure Portal调整保留时间
登录到Azure门户后,进入Log Analytics Workspace。为了配置您的数据保留,您将需要导航至“使用和估计成本”,然后导航至“数据保留”:

根据数据类型增加Azure Log Analytics的数据保留时间_第1张图片
然后会弹出“数据保留选项卡”:
根据数据类型增加Azure Log Analytics的数据保留时间_第2张图片

可以看出,我们可以滑动滑块来增加数据的保留周期。超过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/

根据数据类型增加Azure Log Analytics的数据保留时间_第3张图片

安装后,可以通过在命令提示符或PowerShell提示符中键入ARMClient来验证安装是否成功:
根据数据类型增加Azure Log Analytics的数据保留时间_第4张图片

接下来我们看下如何使用ARMClient配置每种数据类型的保留

让我们使用以下命令登录PowerShell中的Azure订阅(此命令将弹出“现代身份验证”表单,要求输入组织ID用户名和密码):

ARMClient Login

根据数据类型增加Azure Log Analytics的数据保留时间_第5张图片

登录成功后运行如下命令定义变量:

$Subscription = "00000000-0000-0000-0000-00000000000"
$ResourceGroup = "analytics-rg"
$LogAnalyticsName = "demo0327-LogAnalyticsWS"

根据数据类型增加Azure Log Analytics的数据保留时间_第6张图片

然后运行如下命令来将保留时间设置为180天

ARMClient Put /subscriptions/$Subscription/resourceGroups/$ResourceGroup/providers/Microsoft.OperationalInsights/workspaces/$LogAnalyticsName/Tables/SecurityEvent?api-version=2017-04-26-preview "{properties: {retentionInDays: 180}}"

根据数据类型增加Azure Log Analytics的数据保留时间
现在,我们的Log Analytics Workspace中为SecurityEvent收集的数据将保留180天,而没有指定的tentionInInDays属性的所有数据将保留我们在门户中配置的30天。