Categories: Windows

Server Manager на Windows Server 2012 R2

А вы пользуетесь Server Manager? Server Manager появился в операционной системе Windows Server 2008. Однако, в версии Windows Server 2012 внешний вид Server Manager был радикально изменён. Когда я иногда обращал на него внимания, то не понимал, как такая разноцветная программа может управлять чем-то на сервере, то есть с точки зрения моего мозга, привыкшего к серости серверных операционок Server Manager казался несерьезной побрякушкой. Я не понимал, что Server Manager под Windows Server 2012 – это потомок Server Manager под Windows Server 2008

В принципе не мудрено запутаться, ведь привычная древовидная структура, в виде которой были представлены все роли, фичи, логи и т.д. были заменены на простой список ролей в левой части окна. Лишь через полгода после первой встречи с Server Manager на Windows Server 2012, я начал понимать, что эта программа может служить не только для добавления ролей, консолей и фич. Оказывается, благодаря Server Manager можно держать под контролем всю серверную (и не только) инфраструктуру организации. Даже не представляю, как раньше я обходился без этого менеджера.

Прозрение по поводу полезности сервер менеджера пришло ко мне после настройки RDS. Там четко указывалось, что настройку нескольких серверов надо производить с одного сервера. Я сразу оценил удобство, не надо ходить с одного сервера на другой, а можно установить все роли тут же с одного сервера, просто запуская процессы на остальных, даже не видя их рабочие столы и это с использованием GUI, а не Powershell. Затем я заметил, что в разделе Dashboard отображаются проблемы, которые есть на сервере, при этом если в Server Manager добавить несколько серверов, то отображаются уведомления со всех серверов.

Кроме всего прочего, после установки RSAT на Windows 8, Server Manager доступен и здесь. Я решил попытаться мониторить серверы прямо с рабочего места. Добавил все серверы организации в сервер менеджер, доустановил, где это было необходимо WinRM 4. Конечно, не без проблем, но со временем в дашборде Server Manager появились уведомления о проблемах. Особенно полезным мне показалось наличие уведомлений о превышении порога нагрузки на центральный процессор и оперативную память. Тут нет возможности настроить уведомления на почту или в линк, однако, достаточно несколько раз в день заглянуть в Server Manager, чтобы быть в курсе происходящего на серверах.

О чем уведомляет Server Manager:

  1. необходимость перезагрузки сервера (после установки обновлений или ролей);
  2. ошибки в журнале событий Windows;
  3. службы Windows находятся в неположенном состоянии;
  4. превышение порога загрузки процессора и памяти;
  5. не соответствие рекомендациям BPA.

И всё это в одном окне. Как я уже ранее упоминал, самым полезным мне показалось возможность получать уведомление о проблемах с производительностью на сервере. Для того, чтобы получать эти уведомления, необходимо на сервере запустить счётчики производительности. Они будут сохранять показатели загрузки процессора и памяти в папку C:\PerfLogs на сервере, где запущены счетчики производительности. При этом размер папки при сборе недельной статистики не превышает 50Мб.

Если на каком-то сервере возникли проблемы с производительностью, через Server Manager даже можно посмотреть, какие процессы сколько процессорного времени использовали в критический момент.

После того как Server Manager настроен, туда добавлены серверы, необходимо как-то обновлять этот список серверов. Оказалось, для того, чтобы автоматизировать этот процесс необходимо изменять XML файл, в котором хранится список управляемых серверов. Логично для этого использовать Powershell. Ниже скрипт, который по расписанию запускается каждый день пока я хожу на обед и автоматически обновляет список серверов в Server Manager.

# Импорт модуля AD для перебора всех серверов в AD
import-module activedirectory

# Закрыть Server Manager
get-process ServerManager | stop-process –force

# Объявить переменные
$adsArray = @()
$xmlArray = @()

# Список серверов, которые я не хочу видеть в Server Manager
$srvException = @( 'server-test01', ‘server-test02’)

# Расположение файла со списком серверов
$file = get-item "$env:APPDATA\Microsoft\Windows\ServerManager\ServerList.xml"

# Сделать бекап файла
copy-item –path $file –destination $file-backup –force

# Прочитать файл со списком серверов
$xml = [xml] ( get-content $file )

# Заполнить массив серверов из AD
ForEach( $objServer IN Get-ADComputer -Filter { OperatingSystem -like "*Server*" }`
 -Properties operatingSystem ) {
    if( $srvException -notcontains $objServer.Name ) {
        $adsArray += "$( $objServer.Name).ab.ru"
    }
}

# Заполнить массив серверов из списка
for( $i=0; $i -lt @( $xml.ServerList.ServerInfo ).Length; $i++ ) {
    $xmlArray += @( $xml.ServerList.ServerInfo )[$i].Name
}

# Сравнить массивы
Compare-Object $xmlArray $adsArray
$c = Compare-Object $xmlArray $adsArray
# Добавить в список новые серверы
for( $n=0; $n -lt $c.Length; $n++ ) {
    if( $c[$n].SideIndicator -eq "=>" ) {
        $newserver = @( $xml.ServerList.ServerInfo )[0].clone()
        $newserver.name = "$( $c[$n].InputObject )"
        $newserver.lastUpdateTime = “0001-01-01T00:00:00”
        $newserver.status = “2”
        $xml.ServerList.AppendChild( $newserver )
    }
}

# Поместить список в файл
$xml.Save( $file.FullName )
# Запустить Server Manager
ServerManager.exe –WindowStyle Maximized 

Вот и всё, чем я хотел поделить с миром о Server Manager. Надеюсь, и читатель найдёт полезным этот инструмент администрирования, хотя он, конечно не заменит Saqwel Remote Administration Tool.

Saqwel

Share
Published by
Saqwel

Recent Posts

Azure App Configuration and access to Key Vault references

We decided to use an Azure App Configuration to store configs of backend. App Configuration…

2023-08-24

Azure cli az acr login hangs

I have encountered an issue with az acr login --name <acr_name> command. It hanged and…

2023-08-23

Error: Unable to read Docker image into resource: unable to find or pull image nginx:latest

I have tried to learn terraform from scratch and found pretty simple tutorial for beginners.…

2022-09-09

Скрыть поле модели от Swagger (Hide field of model from Swagger)

При внедрении Swagger в проекте .Net Core Web API потребовалось скрыть одно поле из примера,…

2020-04-24

Прогноз цен на акции

Около года назад я решил попробовать заработать на фондовой бирже, покупая и продавая акции. Изучая…

2019-07-20

Installation failed with error code: (0x00000490), “Element not found. “

Во время установки .NET Framework столкнулся с ошибкой Installation failed with error code: (0x00000490), "Element…

2018-12-20