Discover Linux Clustered Services

Linux.ClusterMonitoring.Service.Discovery (Discovery)

Element properties:

TargetLinux.ClusterMonitoring.Node
EnabledTrue
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Unix.Authoring.TimedShellScript.PropertyBag.Discovery.DataSource Default

Source Code:

<Discovery ID="Linux.ClusterMonitoring.Service.Discovery" Target="Linux.ClusterMonitoring.Node" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Linux.ClusterMonitoring.Service">
<Property TypeID="Linux.ClusterMonitoring.Service" PropertyID="ServiceName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="UnixAuth!Unix.Authoring.TimedShellScript.PropertyBag.Discovery.DataSource">
<Interval>28800</Interval>
<TargetSystem>$Target/Host/Property[Type="Unix!Microsoft.Unix.Computer"]/NetworkName$</TargetSystem>
<ShellScript>

#!/bin/bash
clustat |grep -e 'service:' |awk '{print $1}'|tr '\n' ';'

</ShellScript>
<ScriptArguments/>
<Timeout>60</Timeout>
<UserName>$RunAs[Name="Linux.ClusterMonitoring.Account"]/UserName$</UserName>
<Password>$RunAs[Name="Linux.ClusterMonitoring.Account"]/Password$</Password>
<PSScriptName>ParseServices.ps1</PSScriptName>
<PSScriptBody>

param([string]$StdOut,[string]$StdErr,[string]$ReturnCode)
if ($ReturnCode -eq "0"){
$api = New-Object -comObject 'MOM.ScriptAPI'
[array]$ar= $StdOut.Split(";")
foreach ($line in $ar){
$sEntityType = $Line.split(":")[0].ToLower()
$sEntityName = $line.split(":")[1]
If ($sEntityType -eq "service"){
$bag = $api.CreatePropertyBag()
$bag.AddValue("Type","$sEntityType")
$bag.AddValue("Name","$sEntityName")
$bag
}

}

}

</PSScriptBody>
<FilterExpression>
<RegExExpression>
<ValueExpression>
<XPathQuery>Property[@Name='Type']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^service$</Pattern>
</RegExExpression>
</FilterExpression>
<ClassId>$MPElement[Name="Linux.ClusterMonitoring.Service"]$</ClassId>
<InstanceSettings>
<Settings>
<Setting>
<Name>$MPElement[Name='Unix!Microsoft.Unix.Computer']/PrincipalName$</Name>
<Value>$Target/Host/Property[Type="Unix!Microsoft.Unix.Computer"]/PrincipalName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name='Linux.ClusterMonitoring.Node']/NodeName$</Name>
<Value>$Target/Property[Type="Linux.ClusterMonitoring.Node"]/NodeName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name='Linux.ClusterMonitoring.Service']/ServiceName$</Name>
<Value>$Data/Property[@Name='Name']$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name='System!System.Entity']/DisplayName$</Name>
<Value>Service: $Data/Property[@Name='Name']$</Value>
</Setting>
</Settings>
</InstanceSettings>
</DataSource>
</Discovery>