1

有没有可能获取虚拟机创建日期的方法?

我现在已经尝试了以下

AzureActivity
| where TimeGenerated > ago(90d)
| where ResourceProvider == "Microsoft.Compute" and OperationName == "Create or Update Virtual Machine"
| project Resource ,Datum = format_datetime(EventSubmissionTimestamp, 'MM') ,Caller
| distinct Datum , Resource , Caller
| order by Datum 

此 kusto 查询将从连接到它的 VM 中读取日志。并从 vm 及其调用方 ID 获取所有创建或更新虚拟机操作。

但这是创建和更新所以每次更新虚拟机时它都会给我双倍的价值。

我也在 PowerShell 中尝试过

$GetVM = Get-AzureRMVM
Foreach ($vms in $GetVM)
{
$vm = get-azurermvm -name $vms.Name -ResourceGroupName $vms.ResourceGroupName
$log = Get-AzureRmLog -ResourceId $vm.Id -StartTime (Get-Date).AddDays(-90) -WarningAction silentlyContinue 
Write-Output "- Found VM creation at $($log.EventTimestamp) for VM $($log.Id.split("/")[8]) in Resource Group $($log.ResourceGroupName) found in Azure logs"  
}

但似乎也无法在日志文件中找到创建日期。有没有人知道是否可以在脚本语言、Kusto、Powershell 中找到虚拟机的创建日期...

4

5 回答 5

2

如果创建日期晚于 90 天,则无法直接找到创建日期。但这是一个很好的解决方法:https ://savilltech.com/2018/02/13/checking-the-creation-time-of-an-azure-iaas-vm/

于 2019-05-08T07:08:02.497 回答
1

门户确实在云服务的仪表板中显示为云服务创建,但未针对特定 VM 显示(您可以使用 Azure PowerShell 查看Get-AzureService <cloud service name> | select DateCreated)。

当您快速创建虚拟机时,总是会创建一个新的云服务,因此虚拟机和云服务的创建时间是相同的。但由于您可以将多个虚拟机添加到云服务中,因此您不能总是依赖它。

在门户的 VM 仪表板底部,如果您查看 VHD 列,则 VHD 名称包括磁盘创建日期作为名称的一部分,但这仅适用于从映像创建的 VM。如果 VM 是从磁盘创建的,则名称可以是任何名称。您可以在 Azure PowerShell 中使用Get-AzureVM <cloud service name> <VM name> | Get-AzureOSDisk | select medialink.

门户中管理服务下的操作日志可让您搜索过去 30 天的操作,因此如果 VM 是在上个月创建的,您可以在那里找到操作的证据(例如CreateHostedServiceCreateDeployment操作)。

对于从映像创建的 Windows 虚拟机,其时间戳WaSetup.log反映WaSetup.xmlC:\Windows\panther\虚拟机的供应时间。

希望能帮助到你。

于 2019-05-07T12:22:09.090 回答
1

对我来说获得 Azure VM 创建日期的最简单方法是查看 OS 磁盘的创建日期

  1. 在 Azure 门户上浏览到您的 VM
  2. 在左侧,单击刀片“磁盘”
  3. 在操作系统磁盘部分下,单击您的操作系统磁盘。
  4. 在 OS 磁盘的概览边栏选项卡中,您可以看到Time Created 字段

注意:我所有的 Azure VM 都是使用 OS 磁盘创建的,并且从未更改过。

希望能帮助到你。干杯。

于 2021-05-10T08:09:38.183 回答
0

如果您检查相应资源组中的部署,您将看到该 RG 中每个部署的上次修改日期。

于 2019-09-27T07:00:00.130 回答
0

通过调整 ActivityLog 查询而不是 Powershell,我找到了另一种让它为我工作的方法。使用 HTTPRequest 属性似乎给了我我需要的东西。

AzureActivity
| where TimeGenerated > ago(7d)
| where ResourceProvider contains "Microsoft.Compute" and OperationName == "Create or Update Virtual Machine"
| where HTTPRequest contains "PUT"
| project VMName = Resource, Created_On = format_datetime(EventSubmissionTimestamp,'dd-MM-yyyy-HHtt'), User = Caller
| distinct Created_On, VMName, User
| order by Created_On 

就我而言,我试图在过去 7 天内删除虚拟机。出于某种原因,以下查询的时间没有正确显示,因此我不得不将其转换为我的时区。

AzureActivity
| where TimeGenerated > ago(7d)
| where ResourceProvider == "Microsoft.Compute" and OperationName == "Delete Virtual Machine"
| where HTTPRequest contains "DELETE"
| extend MyTimeZone = EventSubmissionTimestamp + 8h
| project VM_Name = Resource, Deleted_On = format_datetime(MyTimeZone, 'dd-MM-yyyy-HHtt'), User = Caller
| distinct Deleted_On , VM_Name , User
| order by Deleted_On
于 2021-05-27T08:01:23.253 回答