none
Вопросы по Data Source и Discovery RRS feed

  • Вопрос

  • Добрый день!

    Пытаюсь освоить написание собственных пакетов, но пока не очень получается. Прочитал гайды "Operations Manager 2007 R2 MP Authoring Guide" и под рукой держу "Operations Manager 2007 R2 Management Pack Module Reference". Не могу понять, по какому принципу работает Data Source. На сколько я понял, Data Source - это некий Workflow, который обрабатывает полученные данные, в частности Discovery. Я создал в Authoring Console свой MP, который должен из Source тащить SystemOID сетевого устройства, затем через Data Source проверяется его OID, если совпадает, то устройство попадает в данный класс. Проблема в том, что оно не попадает, во вьюхе все время пусто :( Вот собственно сам пакет:

    <ManagementPack ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <Manifest>
        <Identity>
          <ID>MSA</ID>
          <Version>1.0.0.0</Version>
        </Identity>
        <Name>MSA</Name>
        <References>
          <Reference Alias="SC">
            <ID>Microsoft.SystemCenter.Library</ID>
            <Version>6.1.7221.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
          <Reference Alias="ND">
            <ID>Microsoft.SystemCenter.NetworkDevice.Library</ID>
            <Version>6.1.7221.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
          <Reference Alias="Windows">
            <ID>Microsoft.Windows.Library</ID>
            <Version>6.1.7221.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
          <Reference Alias="Health">
            <ID>System.Health.Library</ID>
            <Version>6.1.7221.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
          <Reference Alias="System">
            <ID>System.Library</ID>
            <Version>6.1.7221.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
        </References>
      </Manifest>
      <TypeDefinitions>
        <EntityTypes>
          <ClassTypes>
            <ClassType ID="MSA.NetworkDevice" Accessibility="Internal" Abstract="false" Base="ND!Microsoft.SystemCenter.NetworkDevice" Hosted="false" Singleton="false">
              <Property ID="IP" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
              <Property ID="OID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
            </ClassType>
          </ClassTypes>
        </EntityTypes>
        <ModuleTypes>
          <DataSourceModuleType ID="MSA.Datasource.Discovery.NetworkDevice" Accessibility="Internal" Batching="false">
            <Configuration>
              <xsd:element minOccurs="1" name="Interval" type="xsd:integer" />
              <xsd:element minOccurs="1" name="Name" type="xsd:string" />
              <xsd:element minOccurs="1" name="OID" type="xsd:string" />
            </Configuration>
            <OverrideableParameters>
              <OverrideableParameter ID="Interval" Selector="$Config/Interval$" ParameterType="int" />
            </OverrideableParameters>
            <ModuleImplementation Isolation="Any">
              <Composite>
                <MemberModules>
                  <DataSource ID="DS" TypeID="System!System.Discovery.Scheduler">
                    <Scheduler>
                      <SimpleReccuringSchedule>
                        <Interval Unit="Seconds">$Config/Interval$</Interval>
                        <SyncTime />
                      </SimpleReccuringSchedule>
                      <ExcludeDates />
                    </Scheduler>
                  </DataSource>
                  <ConditionDetection ID="Mapper" TypeID="System!System.Discovery.FilteredClassSnapshotDataMapper">
                    <Expression>
                      <SimpleExpression>
                        <ValueExpression>
                          <XPathQuery>$Config/OID$</XPathQuery>
                        </ValueExpression>
                        <Operator>Equal</Operator>
                        <ValueExpression>
                          <XPathQuery>1.3.6.1.4.1.11.2.51</XPathQuery>
                        </ValueExpression>
                      </SimpleExpression>
                    </Expression>
                    <ClassId>$MPElement[Name="MSA.NetworkDevice"]$</ClassId>
                    <InstanceSettings>
                      <Settings>
                        <Setting>
                          <Name>$MPElement[Name="System!System.Entity"]/DisplayName$</Name>
                          <Value>$Config/Name$</Value>
                        </Setting>
                      </Settings>
                    </InstanceSettings>
                  </ConditionDetection>
                </MemberModules>
                <Composition>
                  <Node ID="Mapper">
                    <Node ID="DS" />
                  </Node>
                </Composition>
              </Composite>
            </ModuleImplementation>
            <OutputType>System!System.Discovery.Data</OutputType>
          </DataSourceModuleType>
        </ModuleTypes>
      </TypeDefinitions>
      <Monitoring>
        <Discoveries>
          <Discovery ID="MSA.Discovery.NetworkDevice" Enabled="true" Target="ND!Microsoft.SystemCenter.NetworkDevice" ConfirmDelivery="true" Remotable="true" Priority="Normal">
            <Category>Discovery</Category>
            <DiscoveryTypes>
              <DiscoveryClass TypeID="MSA.NetworkDevice" />
            </DiscoveryTypes>
            <DataSource ID="DiscND" TypeID="MSA.Datasource.Discovery.NetworkDevice">
              <Interval>600</Interval>
              <Name>$Target/Property[Type="ND!Microsoft.SystemCenter.NetworkDevice"]/Name$</Name>
              <OID>$Target/Property[Type="ND!Microsoft.SystemCenter.NetworkDevice"]/SystemOID$</OID>
            </DataSource>
          </Discovery>
        </Discoveries>
      </Monitoring>
      <Presentation>
        <Views>
          <View ID="MSA.View.State" Accessibility="Internal" Enabled="true" Target="MSA.NetworkDevice" TypeID="SC!Microsoft.SystemCenter.StateViewType" Visible="true">
            <Category>Custom</Category>
            <Criteria />
          </View>
        </Views>
        <Folders>
          <Folder ID="MSA.ViewFolder.Root" Accessibility="Internal" ParentFolder="SC!Microsoft.SystemCenter.Monitoring.ViewFolder.Root" />
        </Folders>
        <FolderItems>
          <FolderItem ElementID="MSA.View.State" Folder="MSA.ViewFolder.Root" />
        </FolderItems>
      </Presentation>
      <LanguagePacks>
        <LanguagePack ID="RUS" IsDefault="false">
          <DisplayStrings>
            <DisplayString ElementID="MSA.Datasource.Discovery.NetworkDevice">
              <Name>MSA.Datasource.Discovery.NetworkDevice</Name>
              <Description />
            </DisplayString>
            <DisplayString ElementID="MSA.Discovery.NetworkDevice">
              <Name>MSA Discovery Network Device</Name>
              <Description />
            </DisplayString>
            <DisplayString ElementID="MSA.NetworkDevice">
              <Name>MSA Network Device</Name>
            </DisplayString>
            <DisplayString ElementID="MSA.NetworkDevice" SubElementID="IP">
              <Name>IP Address</Name>
            </DisplayString>
            <DisplayString ElementID="MSA.NetworkDevice" SubElementID="OID">
              <Name>OID</Name>
            </DisplayString>
            <DisplayString ElementID="MSA.View.State">
              <Name>MSA Device State</Name>
              <Description />
            </DisplayString>
            <DisplayString ElementID="MSA.ViewFolder.Root">
              <Name>MSA Devices</Name>
              <Description />
            </DisplayString>
          </DisplayStrings>
        </LanguagePack>
        <LanguagePack ID="ENU" IsDefault="true">
          <DisplayStrings>
            <DisplayString ElementID="MSA">
              <Name>HP MSA Management Pack</Name>
            </DisplayString>
            <DisplayString ElementID="MSA.Datasource.Discovery.NetworkDevice">
              <Name>MSA.Datasource.Discovery.NetworkDevice</Name>
              <Description />
            </DisplayString>
            <DisplayString ElementID="MSA.Discovery.NetworkDevice">
              <Name>MSA Discovery Network Device</Name>
              <Description />
            </DisplayString>
            <DisplayString ElementID="MSA.NetworkDevice">
              <Name>MSA Network Device</Name>
            </DisplayString>
            <DisplayString ElementID="MSA.View.State">
              <Name>MSA Device State</Name>
            </DisplayString>
            <DisplayString ElementID="MSA.ViewFolder.Root">
              <Name>MSA Devices</Name>
              <Description />
            </DisplayString>
          </DisplayStrings>
        </LanguagePack>
      </LanguagePacks>
    </ManagementPack>



    20 сентября 2011 г. 11:35
    Отвечающий

Ответы

  • Во-первых, неверная экспрессия. Нужно так:

                     <Expression>
                       <SimpleExpression>
                         <ValueExpression>
                           <Value>$Config/OID$</Value>
                         </ValueExpression>
                         <Operator>Equal</Operator>
                         <ValueExpression>
                           <Value>1.3.6.1.4.1.11.2.51</Value>
                         </ValueExpression>
                       </SimpleExpression>
                     </Expression>

    подробнее о простых экспрессиях: http://msdn.microsoft.com/en-us/library/hh135106.aspx

    Во-вторых, дискавери должен возвращать все значения ключевых свойств для экземпляров базовых и hosting классов. Здесь его нет.


    http://OpsMgr.ru/
    29 сентября 2011 г. 14:15
    Отвечающий

Все ответы

  • Во-первых, неверная экспрессия. Нужно так:

                     <Expression>
                       <SimpleExpression>
                         <ValueExpression>
                           <Value>$Config/OID$</Value>
                         </ValueExpression>
                         <Operator>Equal</Operator>
                         <ValueExpression>
                           <Value>1.3.6.1.4.1.11.2.51</Value>
                         </ValueExpression>
                       </SimpleExpression>
                     </Expression>

    подробнее о простых экспрессиях: http://msdn.microsoft.com/en-us/library/hh135106.aspx

    Во-вторых, дискавери должен возвращать все значения ключевых свойств для экземпляров базовых и hosting классов. Здесь его нет.


    http://OpsMgr.ru/
    29 сентября 2011 г. 14:15
    Отвечающий
  • Да, спасибо, я уже это понял, я с самого начала пошел по неверному пути. Кстати, можно ли в качестве таргета указывать сетевое устройство и мониторить его с помощью скриптов, запускаемых с прокси?

    29 сентября 2011 г. 22:56
    Отвечающий
  • В обшем - да, можно.
    http://OpsMgr.ru/
    30 сентября 2011 г. 6:39
    Отвечающий