Pull to refresh

Comments 21

Отличная картинка в заголовке с разрешением 1700х1100
Отличный комментарий по теме статьи!
Картинка и правда не очень подходит…

А по теме статьи — вы не рассматривали такие готовые решения с напильником как zabbix, Nagios, Munin?
Вот вам ссылки на связанные тему:
ru.wikipedia.org/wiki/Zabbix
habrahabr.ru/post/30494/
habrahabr.ru/qa/16919/

Как я понял, у вас нет проблем с серверами не на Винде ( тот же CentOS).
Спасибо за замечание по делу. Для этого, как я понимаю, нужно, чтобы SNMP Service был настроен на Windows машинах. А у нас эти сервисы на данный момент даже не установлены. Я хотел решение с как можно меньшим вмешательством в нашу среду. А насчет тех замечательных программ, мы уже используем Zenos и пытаемся еще применить Zabbix, но это больше вотчина моего коллеги, вышеупомянутого Линукс-гуру. Линукс проблемы это уже его головная боль, хотя бывают они крайне редко. Мы же, виндузятники, на данный момент используем для наблюдения за всей нашей сетью What's Up Gold 2006, а теперь так же мой небольшой скрипт.
snmp клиент разворачивается тем же повершеллом, фаервольная политика для открытия snmp — дело еще 10 минут.
вообще какая-то странная смесь и каша, если честно. Я бы уже решал на чем-то одном, то же powershell прекрасно умеет даже письма писать, и сервисы рестартовать в случае падения
А не проще через WMI обойти все хосты и нужные сервисы ремотно стартовать или что там надо сделать, а результаты скинуть в лог?
Ну WMI я использовал, чтобы собрать дампы о состоянии, а именно PoweShell. А дальше уже использовал Питон, ибо еще одной целью было обучение ему. Но я полностью с Вами согласен, что все можно было бы сделать и через WMI, обходя использования Линукса и Питона. В конце концов я получил удовольствие от знакомства с этим замечательным языком.
Я, уж простите, не могу понять, как можно получать удовольствие от Питона, реализуя на нем примитивный парсинг текстового выхлопа, полученный заталкиванием в тектовый файл объектного выхлопа из Powershell, тогда как можно напрямую обращаться к свойству Status сервиса. Зачем тогда вообще powershell, если можно было сделать «sc query > services.txt»? Хорошо бы, в рамках процесса обучения, о котором так много было сказано, начать с понимания — когда и какой инструмент надо применять. Например, выборка списка проверяемых хостов и сервисов из конфига в XML с последующим опросом серверов на предмет запущенности этих сервисов выглядит как:

[xml]$services = Get-Content d:\test.xml
$services.services.service | %{ get-service -ComputerName $_.host -Name $_.service } | ? { $_.Status -ne "Running" }

Вместо XML можно использовать Import-CSV, результат можно выдать в Export-CSV, еще несколько строк займет отправка почты.
Sc query было бы труднее парсить. А вот использование xml Горд (вышеупомянутый линукс-гуру) мне предложил, но так как моя программа довольно проста, то я решил оставить это все в виде обычных текстовых файлов. Да и потом PoweShell я знаю очень поверхносто на уровне опрашивания системы по сервисам или разные атрибуты Active Directory. Но мне нравится Ваша идея, а именно ее локаничность. Если Вас не затруднит, не могли бы Вы подробно прокомментировать свой код и описать структуру xml файла? Или мне сразу стоит отправиться в Гугл за мануалами по PoweShell?
Вам за пределы powershell можно вообще не выходить. проверка запущенности нужных сервисов это реально пару команд, в случае их внезапного падения — попытка перезапуска, в случае проблемы и тут — письмо администратору.
А не проще ли обойтись без PowerShell, только питоном? Пакет pywin32 умеет не только проверять статусы служб, но и запускать/останавливать их.
а зачем городить внешний софт если вполне хватает штатно продуманного psh?
Про pywin32 не знал, спасибо, надо будет проверить. А Python был выбран в целяъ обучения. Я не отрицаю, что можно было все сделать в psh. Кстати, я думаю получше познакомиться с shell скриптами.
Несколько заметок
1. Сервисы windows by default умеют «самоперезапускаться». Это можно настроить на соответствующей вкладке свойств сервиса.
2. Там же есть параметр, позволяющий запустить внешнее приложение или скрипт в ответ на падение. Я не пробовал, поймет ли он просто ps1 файл, но можно испытать. В вашем случае было бы достаточно просто отправлять скриптом почту на Nй раз падения сервиса. И не нужно городить такой огород.
psh скрипт можно запустить как c:\...\....\powershell.exe c:\scripts\test.ps1, например. только установить executialpolicy в unrestricted или подписать скрипты
Вы правы, но что случится, если сервис поменяет свой Startup Type?
ну, вообще в рамках изменения конфигурации такие вещи отслеживаемы. А если не в рамках, апррувер изменения получит по ушам за изменние конфигурации «by default»
Мне думается что сам он вряд ли это сделает. А для того чтобы это не происходило есть GPO, где вы можете создать базовую конфигурацию. В случае изменения GPO вернет все «взад» на следующей итерации. Чтобы отслеживать такие вещи, нужно, видимо, иметь некую базу, хранящую дефолтные состояния. В общем это усложнение, мне думается
Если честно, то один раз такое случилось, когда мне надо было давать по шапке. Однажды на Exchange сервере одно из обновлений, по-моему это .NET 4, занимало слишком длительное время, я, ничтоже сумнящеся, перезагрузил сервер. Половина сервисов поменяло стартап тип на Manual. Восстановили, смотря на второй почтовый сервер с примерно такой же конфигурацией. Так что с тех пор я держу список для каждого сервера с необходимыми сервисами.
Для этого есть тестовая лаборатория, по хорошему. где можно и понаблюдать за поведением зверушки.
PS. а зачем мониторить установку обновлений то? поставил ставиться ми пошел себе по делам, как захочет перезагрузиться — само скажет, а не захочет — вот и кейс что перезагрузка не нужна — аппрувим на один из серверов, ждём пару дней, если всё ок — аппрувим на второй, и недайбоже это делать во второй половине недели
Мы по старинке вручную обновляем обычно в вечер пятницы или на выходных. Серверов не так много, а их работа очень критична.
Sign up to leave a comment.

Articles