是否可以获取虚拟机创建日期?
我已经尝试了以下方法
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获取所有创建或更新虚拟机操作。
但这是创建并更新,因此每次更新VM时,它都会给我双倍的价值。
我也在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,...内找到虚拟机的创建日期?
答案 0 :(得分:1)
该门户的确在Cloud Service的仪表板中显示了为Cloud Service创建的,但未为特定的VM显示(您可以使用带有Get-AzureService <cloud service name> | select DateCreated
的Azure PowerShell看到该门户)。
快速创建VM时,将始终创建新的云服务,因此VM和云服务的创建时间相同。但是,由于您可以将多个VM添加到一个云服务中,因此您不能总是依靠它。
在门户中VM的仪表板上的底部,如果您查看VHD列,则VHD名称包括磁盘创建的日期作为名称的一部分,尽管这仅适用于从映像创建的VM。如果VM是从磁盘创建的,则名称可以是任何名称。您可以使用Get-AzureVM <cloud service name> <VM name> | Get-AzureOSDisk | select medialink
在Azure PowerShell中获得该OS磁盘名称。
门户网站管理服务下的操作日志可让您搜索最近30天的操作,因此,如果虚拟机是在上个月创建的,则可以在那里找到操作的证据(例如CreateHostedService
和{ {1}}个操作)。
对于从映像创建的Windows VM,CreateDeployment
中WaSetup.log
和WaSetup.xml
上的时间戳反映了VM的配置时间。
希望有帮助。
答案 1 :(得分:1)
如果创建日期晚于90天,则无法直接找到创建日期。但这是一个不错的解决方法:https://savilltech.com/2018/02/13/checking-the-creation-time-of-an-azure-iaas-vm/
答案 2 :(得分:0)
如果选中相应资源组中的“部署”,则将在该RG中看到每个部署的“上次修改日期”。
答案 3 :(得分:0)
对我来说,获取 Azure VM 创建日期的最简单方法是查看操作系统磁盘的创建日期
注意:我所有的 Azure VM 都是使用 OS 磁盘创建的,从未更改过。
希望有帮助。干杯。
答案 4 :(得分: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