Как узнать время работы сервера ESXI, за минуту
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов на просторах рунета Pyatilistnik.org. В прошлый раз вам подробно рассказал принцип работы двух замечательных утилит "Robocopy"и "Iperf", благодаря им мы научились тестировать скорость сетевого канала и копировать файлы. Двигаемся дальше и сегодня вновь поговорим про гипервизор VMware. В данной публикации я расскажу, как узнать время работы сервера ESXI, это так называемый "Uptime". Рассажу и покажу известные мне методы.
Для чего нужно уметь определять время работы сервера?
Перед тем, как я разберу все известные мне методы, я бы хотел привести несколько примеров, когда вам это будет полезно. У одного моего приятеля на работе есть кластер ESXI с 20-ю гипервизорами на базе VMware ESXI 6.5. Сами ESXI хосты еще не успели поставить на мониторинг в Zabbix, там были настроены только виртуальные машины. В какой-то момент приходят уведомления, что несколько виртуальных серверов стали недоступны по PING и были перезапущены в итоге.
Зайдя потом на виртуальные машины, там выскакивало сообщение, что они были выключены не запланированно, и в логах Windows было событие с кодом ID 1074. Зайдя на vCenter все ESXI хосты визуально ошибок не имели, нужно было понять происходило ли падение системы, для этого можно посмотреть логи ESXI, но быстрее воспользоваться любым из методов позволяющих посмотреть время работы гипервизора.
Второй пример, когда необходимо уметь узнавать время работы сервера ESXI, это с целью безопасности. Каждый месяц разработчики программного обеспечения выпускают новые обновления безопасности и улучшения функциональности, затягивать с этим процессом особо не стоит, особенно если это очень опасно с получением несанкционированного доступа.
Методы определения времени работы сервера ESXI
Лично я знаю, как минимум пять способов определения Uptme у серверов ESXI, они ни чем не сложнее определения времени работы в Windows.
- Узнать время работы сервера можно из интерфейса vCenter или веб-формы ESXI
- Через ssh и команду Uptime
- Через ssh и команду esxtop
- Через PowerCLI
- Через файл лога vmksummary.log
Узнаем время работы через web-интерфейс
И так если у вас есть vCenter сервер, то подключаемся к его интерфейсу, выбираем корень и переходим на вкладку "Hosts & Cluster". Далее вкладка "Hosts", тут вы найдете список всех ваших сервером, где будет отдельный столбец "Uptime".
Если столбца "Uptime" не будет, то щелкните правым кликом по любому столбцу и из контекстного меню выберите пункт "Show/Hide Columins".
Далее выберите пункт "Uptime", это добавит данный столбец.
Так же в vCenter вы можете выбрать отдельный хост ESXI и на вкладке "Summary" можно обнаружить пункт "Uptime".
То же самое вы обнаружите зайдя на веб-интерфейс отдельного хоста ESXI.Там нужно выбрать раздел "Host", на главном экране будет так же пункт "Uptime", он покажет время работы в днях.
Узнаем время работы сервера ESXI через ssh команды
Перед тем, как вы будите выполнять представленные ниже команды, вам необходимо включить ssh на ESXI хосте. Далее введите простую команду:
В результате вы увидите информативную строку, по типу "13:54:34 up 10 days, 15:49:33"
Второй вариант, это воспользоваться мега командой esxtop. Введите в ssh консоли:
В результате у вас откроется информация, о производительности ESXI хоста, но тут в левом верхнем углу вы обнаружите время работы сервера.
Узнаем время работы сервера ESXI через PowerCLI
Напоминаю PowerCLI, это дополнительные командлеты PowerShell, позволяющие управлять и автоматизировать виртуальной инфраструктурой. Чтобы вывести список всех ваших серверов со значениями времени работы, вам нужно выполнить вот такую команду:
В моем примере есть даже сервер ESXI с "Uptime" в 314 дней.
Еще один вариант, это использование вот такой конструкции с сортировкой по убыванию:
et-Date) | Select -ExpandProperty Days}} | Sort-Object -Descending -Property "Uptime"
Так же вы можете запускать скрипт PowerShell по расписанию, который будет вам присылать отчет по почте:
Get-Module -Name VMware* -ListAvailable | Import-Module
#Подключение к вашему vCenter серверу.
Connect-VIServer <IP Address или DNS имя сервера> -User '<Domain\UserName>' -Password '<Пароль>'
$head = @'
<style>
body { background-color:#FFFFFF;
font-family:calibri;
font-size:11pt; }
td, th { border:1px solid black;
border-collapse:collapse; }
th { color:white;
background-color:black; }
table, tr, td, th { padding: 2px; margin: 0px }
table { margin-left:50px; }
</style>
'@
$Output = Get-VMHost | Sort-Object -Property Name
$body = $PP1Output | select Name,Parent,ConnectionState,@{N="Uptime(Days)"; E={New-Timespan -Start $_.ExtensionData.Summary.Runtime.BootTime -End (Get-Date) | Select -ExpandProperty Days}} | ConvertTo-Html -PreContent "<h1>PP1 ESXi Availability Report:- $D</h1>" | foreach {if ($_ -like "*<td>Maintenance</td>*"){$_ -replace "<tr>","<tr bgcolor=yellow>"} elseif($_ -notlike "*<td>Connected</td>*"){$_ -replace "<tr>","<tr bgcolor=red>"}else{$_} } | Out-String
$body1 = Get-Cluster | Select @{N="Cluster Name";E={Get-Cluster -Name $_}}, @{N="ESXi Host Count"; E={($_ | Get-VMHost).Count} },@{N="VM Count"; E={($_ | Get-VM).Count}} | ConvertTo-Html -PreContent "<h2>ESXi & VM Count in vCenter: </h2>" | Out-String
$finalout = ConvertTo-HTML -head $head -PostContent $body,$body1 | Out-String
#Отправка электронного письма
Send-MailMessage -From 'Sender@pyatilistnik.org' -To 'reciever@pyatilistnik.org' -Subject 'Host Health Check' -body "$finalout" -BodyAsHtml -SmtpServer '<SMTP IP ADDRESS>'
#Отключаемся от сервера vCenter
disconnect-viserver -confirm:$false
Как узнать время работы сервера ESXI через логи
Существует такой журнал vmksummary.log в нем можно найти время загрузки ESXI сервера. Подключитесь по ssh к своему хосту и выполните запрос к системе:
В итоге вы получите все записи, с загрузками гипервизора.
Как видите методов определить время работы сервера ESXI очень много, вы можете выбрать любой, что подходить только вам. На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.