Ситуация: OpsMgr мониторит серверы в нескольких доменах.
(К слову. Если домены связаны доверительными отношениями и работает Kerberos, то агенты прозрачно аутентифицируются на OpsMgr. Иначе надо использовать сертификаты.)
Задача. За домены отвечают разные люди. Поэтому нужно управлять настройками (перекрытиями) и делать оповещения на основе доменной принадлежности объектов. Например, если на сервере переполнился диск, то оповещение отправлятся администратору того домена, которому принадлежит сервер.
Для этого надо создать группы для каждого домена. Причем используя динамическое членство, чтобы новые объекты домена автоматически попадали в группу домена и, как следствие, все настройки применялись автоматически. Например, ввели в домен новый сервер, поставили на него агент, сервер автоматически появился в группе, к нему автоматически применились настройки соответствующие группе, и автоматически пошли оповещения нужному человеку.
Создать группу включающую все компьютеры домена легко. Запускаем оснастку Operations Console — Authoring – Create New Group. Выбираем Windows Computer, добавляем условие с атрибутом NetbiosDomainName$ (или DNSDomainName$) равно «MyDomain».
Теперь если для этой группы выбрать в меню View Group Members, то откроется окно со списком всех компьютеров домена.
(Конечно можно создавать группу не на основе Windows Computer, а на более «точном» классе, например, Windows Server 2008.)
Группа готова и можно любое правило или монитор точно нацелить на нужный домен, задав перекрытие для этой группы. Что и требовалось.
Неожиданно обнаружилась засада с оповещениями. Оказывается оповещения рассылаются не на объекты Windows Computer и его наследников, а на объекты HealthServiceWatcher. Значит надо делать группу автоматически включающую объекты класса HealthServiceWatcher. К сожалению такие конструкции невозможно создавать в консоле управления и приходится строить их вручную.
Путь к решению был найден в статье http://wchomak.spaces.live.com/Blog/cns!F56EFE25599555EC!1506.entry?wa=wsignin1.0&sa=530974408
Делать одну группу мне не захотелось: смешивать разные объекты созданные для разных целей не есть хорошо. Поэтому я сделал для оповещений отдельную группу. В Operations Console создал пустую группу. Экспортировал MP. Открыл его в Notepad и добавил условие динамического членства: включать только объекты HealthServiceWatcher для которых объекты Windows Computer относятся к домену «MyDomain»:
<MembershipRule>
<MonitoringClass>$MPElement[Name="SystemCenter!Microsoft.SystemCenter.HealthServiceWatcher"]$</MonitoringClass>
<RelationshipClass>$MPElement[Name="MicrosoftSystemCenterInstanceGroupLibrary6172210!Microsoft.SystemCenter.InstanceGroupContainsEntities"]$</RelationshipClass>
<Expression>
<Contains>
<MonitoringClass>$MPElement[Name="SystemCenter!Microsoft.SystemCenter.HealthService"]$</MonitoringClass>
<Expression>
<Contained>
<MonitoringClass>$MPElement[Name="MicrosoftWindowsLibrary6172210!Microsoft.Windows.Computer"]$</MonitoringClass>
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="MicrosoftWindowsLibrary6172210!Microsoft.Windows.Computer"]/NetbiosDomainName$</Property>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>MyDomain</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Contained>
</Expression>
</Contains>
</Expression>
</MembershipRule>
После редактирования файла с MP, импортируем его обратно, ждем несколько минут, пока он активируется и проверяем членство в нашей группе: должны отобразиться все объекты HealthServiceWatcher нужного домена.
Теперь эту группу можно использовать для создания подписок на оповещения.
Полезные ссылки:
1. Dynamic Computer Groups that send Heartbeat Alerts
2. How to get alerts for domain group membership changes
3. GroupCalc
6. Monitoring for Heartbeat Failures on non-Server Agents
7. Alert notification troubleshooting in System Center Operations Manager 2007
Filed under: Operations Manager | Leave a comment »