PowerShell script-based relationship discovery to place APM applications in the monitoring group.
The Java APM Group Membership Discovery places discovered APM applications into the APM monitoring group.
Items within the group are targeted by rules and monitors to collect performance information.
The discovery uses a PowerShell script to create a relationship between the APM applications and the monitoring group.
Target | Microsoft.JEE.Apm.Application |
Enabled | True |
Frequency | 14400 |
Remotable | False |
Discovered Classes and their attribuets: |
---|
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.TimedPowerShell.DiscoveryProvider | Default |
<Discovery ID="Microsoft.JEE.APM.GroupMembership.Discovery" Target="Microsoft.JEE.Apm.Application" Enabled="true" Remotable="true">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.JEE.Apm.Application"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>14400</IntervalSeconds>
<SyncTime/>
<ScriptName>Relationship.ps1</ScriptName>
<ScriptBody> ##########################################################################################
# <copyright file="Relationship.ps1" company="Microsoft">
# Copyright (c) Microsoft Corporation. All rights reserved.
# </copyright>
# <summary>Script to create the relationship instance between an APM application and the
# group against which rules and monitors will run.
# </summary>
##########################################################################################
#
# The Enable parameter is used to control whether the relationship is created or destroyed
#
param($EntityId, $TargetInstanceId, $Enable, $classid, $grpClassid, $appServerInstanceId, $appServerHostName, $appName, $appType, $appObjectName)
$api = New-Object -comObject 'Mom.ScriptAPI'
Import-Module OperationsManager
$discoveryData = $api.CreateDiscoveryData(0, $EntityId, $TargetInstanceId)
if($Enable -ne "0")
{
$srcInstance = $discoveryData.CreateClassInstance($grpClassid)
$tgtInstance = $discoveryData.CreateClassInstance($classid)
$tgtInstanceid = $tgtInstance.id
$tgtInstance.AddProperty('$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$', $appServerInstanceId)
$tgtInstance.AddProperty('$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$', $appServerHostName)
$tgtInstance.AddProperty('$MPElement[Name="JEE!Microsoft.JEE.Application"]/ApplicationName$', $appName)
$tgtInstance.AddProperty('$MPElement[Name="JEE!Microsoft.JEE.Application"]/j2eeType$', $appType)
$tgtInstance.AddProperty('$MPElement[Name="JEE!Microsoft.JEE.Application"]/ObjectName$', $appObjectName)
$rel = '$MPElement[Name="Microsoft.JEE.Apm.GroupContainsApplication"]$'
$oRel = $discoveryData.CreateRelationshipInstance('$MPElement[Name="Microsoft.JEE.Apm.GroupContainsApplication"]$')
$oRelid = $oRel.id
$oRel.Source = $srcInstance
$oRel.Target = $tgtInstance
$discoveryData.AddInstance($oRel)
}
$discoveryData
</ScriptBody>
<Parameters>
<Parameter>
<Name>EntityId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>TargetInstanceId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>Enable</Name>
<Value>1</Value>
</Parameter>
<Parameter>
<Name>classid</Name>
<Value>$MPElement[Name="Microsoft.JEE.Apm.Application"]$</Value>
</Parameter>
<Parameter>
<Name>grpClassid</Name>
<Value>$MPElement[Name="Microsoft.SystemCenter.Apm.Jee.Monitored.Group"]$</Value>
</Parameter>
<Parameter>
<Name>appServerInstanceId</Name>
<Value>$Target/Host/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$</Value>
</Parameter>
<Parameter>
<Name>appServerHostName</Name>
<Value>$Target/Host/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$</Value>
</Parameter>
<Parameter>
<Name>appName</Name>
<Value>$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ApplicationName$</Value>
</Parameter>
<Parameter>
<Name>appType</Name>
<Value>$Target/Property[Type="JEE!Microsoft.JEE.Application"]/j2eeType$</Value>
</Parameter>
<Parameter>
<Name>appObjectName</Name>
<Value>$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ObjectName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
<StrictErrorHandling>false</StrictErrorHandling>
</DataSource>
</Discovery>