Получить дату создания виртуальной машины Azure

Есть ли способ получить дату создания виртуальной машины?

Я уже пробовал следующее

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 будет считывать журналы с подключенной к нему виртуальной машины. и получить все операции создания или обновления виртуальной машины с виртуальной машины и ее идентификатора вызывающего абонента.

Но это create и Обновить, поэтому каждый раз, когда виртуальная машина обновляется, я получаю двойные значения.

Я пробовал также в 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,...

Вы пробовали это? savilltech.com/2018/02/13/… В противном случае, кажется, нет встроенного способа

silent 07.05.2019 14:16

Я глубже изучил предоставленное вами решение, и это действительно помогло мне. Если вы измените свой комментарий в ответе, я приму это.

achahbar 08.05.2019 08:36

готово :) см. ответ ниже

silent 08.05.2019 09:08
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
3
12 268
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Портал показывает Создано для облачной службы на панели мониторинга облачной службы, но не отображается для конкретной виртуальной машины (что можно увидеть в Azure PowerShell с помощью Get-AzureService <cloud service name> | select DateCreated).

При быстром создании виртуальной машины всегда будет создаваться новая облачная служба, поэтому время создания будет одинаковым для виртуальной машины и облачной службы. Но поскольку вы можете добавить несколько виртуальных машин в облачную службу, вы не всегда можете на это полагаться.

На панели мониторинга виртуальной машины на портале внизу, если вы посмотрите на столбец VHD, имя VHD включает дату создания диска как часть имени, хотя это верно только для виртуальных машин, созданных из образа. Если виртуальная машина была создана с диска, имя может быть любым. Вы можете получить это имя диска ОС в Azure PowerShell с помощью Get-AzureVM <cloud service name> <VM name> | Get-AzureOSDisk | select medialink.

Журналы операций в разделе «Службы управления» на портале позволяют выполнять поиск операций за последние 30 дней, поэтому, если виртуальная машина была создана в прошлом месяце, вы можете найти там свидетельство операции (например, операции CreateHostedService и CreateDeployment).

Для виртуальных машин Windows, созданных из образа, метка времени на WaSetup.log и WaSetup.xml в C:\Windows\panther\ отражает время подготовки виртуальной машины.

Надеюсь, поможет.

Предоставленная вами команда не сработала для меня. Но идея, тем не менее, что-то спровоцировала. Я создал небольшой скрипт, который реализует ту же концепцию. Однако, если виртуальная машина имеет неуправляемый диск, эта концепция не работает. Что создаст серые пятна, если я захочу получить виртуальные машины, созданные за последние 90 дней.

achahbar 07.05.2019 15:13

Да, как такового решения с полным доказательством не существует, это просто альтернатива тому же самому. вот почему я говорил о нескольких вариантах.

Mohit Verma 07.05.2019 15:17

Ваши решения очень полезны, но решение @silent помогло, потому что оно дало мне дату создания всех виртуальных машин, независимо от того, какой диск я использовал. И поэтому я не могу не дать ему утвердительный ответ. Но ваш ответ был столь же ценен; Большое спасибо

achahbar 08.05.2019 08:39
Ответ принят как подходящий

Нет прямого способа узнать дату создания, если она позже 90 дней. Но вот хорошее обходное решение: https://savilltech.com/2018/02/13/checking-the-creation-time-of-an-azure-iaas-vm/

Если вы отметите Развертывания в соответствующей группе ресурсов, вы увидите дату последнего изменения для каждого развертывания в этой RG.

Самый простой способ получить дату создания виртуальной машины Azure — посмотрите на дату создания Диска ОС.

  1. Перейдите к своей виртуальной машине на портале Azure.
  2. С левой стороны нажмите на лезвие «Диски».
  3. В разделе «Диск ОС» нажмите на свой диск ОС.
  4. В колонке Обзор вашего диска ОС вы можете увидеть Поле «Время создания».

Примечание. Все мои виртуальные машины Azure были созданы с помощью диска ОС и никогда не менялись.

Надеюсь, поможет. Ваше здоровье.

Я нашел еще один способ заставить его работать на меня, настроив ваш запрос 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

Другие вопросы по теме