????最近收到個需求,想看一下Azure虛擬機創(chuàng)建的記錄,詳細了解最近云上都有什么新增的資源,這其實也是個比較正常的需求,隨著云的使用越來越廣泛,很多企業(yè)早已不滿足于簡單的用云,而是更聚焦在如何把云用好上,更核心的一點是越來越多的企業(yè)開始關注云上的cost問題,因此資源使用的合理性越來越是企業(yè)關注的一個重點
????回歸主題,那么如何在Azure實現這個需求呢,其實在資源組的deployment記錄中是可以找到VM的創(chuàng)建記錄的,但是這種方式收集到的信息很零散,我們也不可能每個資源組都去一個個查看,整理這些信息,那么有什么好的辦法呢?
????其實我們可以直接通過Azure的PowerShell解決這個問題,只需要編寫一個簡單的腳本就可以了,首先運行以下命令,獲取到Azure近三個月的所有l(wèi)og
????
$logs?=?Get-AzureRmLog?-ResourceProvider?Microsoft.Compute?-StartTime?(Get-Date).AddDays(-90)?-Maxrecord?100000
foreach($log?in?$logs) { ????if(($log.OperationName.Value?-eq?'Microsoft.Compute/virtualMachines/write')?-and?($log.SubStatus.Value?-eq?'Created')) ????{ ????????Write-Output?"$($log.caller)?created?vm?$($log.Id.split("/")[8])??at?$($log.EventTimestamp)??in?Resource?Group?$($log.ResourceGroupName)" ????} }
????
這樣就能看到VM創(chuàng)建的記錄了!
那么如果想把這些信息匯總到Excel里呢?可以通過以下的代碼即可!
[pscustomobject[]]$VMObjects?=?$null foreach?($log?in?$logs)?{ ????????if?(($log.OperationName.Value?-eq?'Microsoft.Compute/virtualMachines/write')?-and?($log.SubStatus.Value?-eq?'Created'))?{ ????????????Write-Output?"$($log.caller)?created?vm?$($log.Id.split("/")[8])??at?$($log.EventTimestamp)??in?Resource?Group?$($log.ResourceGroupName)" ????????????$VMObject?=?New-Object?-TypeName?psobject ????????????$VMObject?|?Add-Member?-MemberType?NoteProperty?-Name?SubscriptionName?-Value?$SubscriptionName ????????????$VMObject?|?Add-Member?-MemberType?NoteProperty?-Name?SubscriptionID?-Value?$SubscriptionID ????????????$VMObject?|?Add-Member?-MemberType?NoteProperty?-Name?ResourceGroup?-Value?$log.ResourceGroupName ????????????$VMObject?|?Add-Member?-MemberType?NoteProperty?-Name?VMName?-Value?$log.Id.split("/")[8] ????????????$VMObject?|?Add-Member?-MemberType?NoteProperty?-Name?Time?-Value?$log.EventTimestamp ????????????$VMObjects?+=?$VMObject ????????} ????} ???? ????$OutputPath="C:\vm.csv" ????$VMObjects?|?Export-Csv?-NoTypeInformation?-LiteralPath?$OutputPath
最后要說的是,這種方法只能收集到90天以內的日志,因為Azure平臺開放給用戶的最長時間的log就是90天