Как создать динамическое распределенное приложение в SCOM
В основе обнаружения любого компонента в распределенном приложении лежит модуль Microsoft.SystemCenter.GroupPopulator, который также используется при создании групп в SCOM.
Как известно, группы могут быть как статическими, с набором определенных объектов, так и динамическими, наполняться объектами с помощью определенных правил.
Если у вас стоит задача создания динамического распределенного приложения, т.е. объекты будут автоматически появляться в распределенном приложении при добавлении в SCOM. Вам нужно:
- Создать распределенное приложение с помощью Distributed Application Designer, пошаговая инструкция написана в статье https://blogs.technet.com/b/scpferublog/archive/2014/12/01/3641862.aspx.
- Экспортировать пакет управления, который содержит ваше распределенное приложение.
- Найти обнаружения, которые наполняют компоненты объектами. Они выглядят примерно так:
Далее вместо списка статических объектов ( IncludeList), задать правило, например, обнаружение объектов по регулярному выражению:
<Discovery ID="SC_e80199dc58db47ab85f317d6cd562a44_Service_35027f900c494cbe970373f8ea010a74_ItemPopulation" Enabled="true" Target="SC_e80199dc58db47ab85f317d6cd562a44_Service_35027f900c494cbe970373f8ea010a74" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes />
<DataSource ID="DS" TypeID="SystemCenter!Microsoft.SystemCenter.GroupPopulator">
<RuleId>$MPElement$</RuleId>
<GroupInstanceId>$Target/Id$</GroupInstanceId>
<MembershipRules>
<MembershipRule>
<MonitoringClass>$MPElement[Name="MicrosoftSQLServer2012Discovery6540!Microsoft.SQLServer.2012.Database"]$</MonitoringClass>
<RelationshipClass>$MPElement[Name="SCIMembership_fbce7dd725a04618ac3cfb4e9eb7aef6"]$</RelationshipClass>
<IncludeList>
<MonitoringObjectId>{5b3d0894-daf9-7c0a-6e5d-01c1e716806f}</MonitoringObjectId>
<MonitoringObjectId>{6cd04aca-6262-8bf6-85fe-541e84211e2e}</MonitoringObjectId>
<MonitoringObjectId>{3fd4adb5-909f-2db6-eaa2-022b666abecb}</MonitoringObjectId>
<MonitoringObjectId>{62c8ebe1-fb87-3e3d-4e57-4113348ef592}</MonitoringObjectId>
<MonitoringObjectId>{b5d2ff79-99b3-ac25-72a9-cadd5f558aa9}</MonitoringObjectId>
</IncludeList>
<!-- Заменить на -->
<Expression>
<RegExExpression>
<ValueExpression>
<Property>$MPElement[Name="SystemLibrary7585010!System.Entity"]/DisplayName$</Property>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>DB1|DB2</Pattern>
</RegExExpression>
</Expression>
</MembershipRule>
</MembershipRules>
</DataSource>
</Discovery>
В результате, данный компонент распределенного приложения будет автоматически наполняться объектами класса Microsoft.SQLServer.2012.Database с именами DB1 или DB2.
Comments
- Anonymous
October 07, 2015
Очень интересный способ, но такой правкой мы по сути заблокируем себе возможность исправлять приложение в консоли SCOM. Любое сохранение приложения в консоли вызовет перезапись пакета управления и удаление наших правок. - Anonymous
February 12, 2016
Верно, данное распределенное приложение в консоли поправить нельзя. Но сама идея заключается в избавлении от рутинного ручного добавления объектов в распределенное приложение через консоль. Также Management Pack можно подписать.