Как создать динамическое распределенное приложение в SCOM

В основе обнаружения любого компонента в распределенном приложении лежит модуль Microsoft.SystemCenter.GroupPopulator, который также используется при создании групп в SCOM.

Как известно, группы могут быть как статическими, с набором определенных объектов, так и динамическими, наполняться объектами с помощью определенных правил.

Если у вас стоит задача создания динамического распределенного приложения, т.е. объекты будут автоматически появляться в распределенном приложении при добавлении в SCOM. Вам нужно:

  1. Создать распределенное приложение с помощью Distributed Application Designer, пошаговая инструкция написана в статье https://blogs.technet.com/b/scpferublog/archive/2014/12/01/3641862.aspx.
  2. Экспортировать пакет управления, который содержит ваше распределенное приложение.
  3. Найти обнаружения, которые наполняют компоненты объектами. Они выглядят примерно так:

Далее вместо списка статических объектов ( 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.