I develop integration with SCOM. But I am a green hand in it.
I have created management pack XML and it works fine.
Please review management pack below:
<ManagementPack xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ContentReadable="true">
<Manifest>
<Identity>
<ID>CloudMonix.ResourceMonitoring</ID>
<Version>1.0.0.0</Version>
</Identity>
<Name>CloudMonix Resource Monitoring Pack</Name>
<References>
<Reference Alias="System">
<ID>System.Library</ID>
<Version>7.5.8501.0</Version>
<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
</Reference>
<Reference Alias="SystemCenter">
<ID>Microsoft.SystemCenter.Library</ID>
<Version>7.0.8437.0</Version>
<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
</Reference>
</References>
</Manifest>
<TypeDefinitions>
<EntityTypes>
<ClassTypes>
<ClassType ID="CloudMonix.ResourceMonitoring.Resource" Accessibility="Public" Abstract="false" Base="System!System.Entity" Hosted="false" Singleton="false">
<Property ID="ResourceId" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
<Property ID="ResourceType" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
<Property ID="ResourceStatus" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
<Property ID="ResourceGroups" Type="string" Key="false" CaseSensitive="false" Length="1024" MinLength="1" />
</ClassType>
</ClassTypes>
</EntityTypes>
</TypeDefinitions>
<Presentation>
<Views>
<View ID="CloudMonix.ResourceMonitoring.MainView" Accessibility="Public" Enabled="true" Target="CloudMonix.ResourceMonitoring.Resource" TypeID="SystemCenter!Microsoft.SystemCenter.StateViewType" Visible="true">
<Category>Operations</Category>
<Criteria>
<InMaintenanceMode>false</InMaintenanceMode>
</Criteria>
<Presentation>
<ColumnInfo Index="0" SortIndex="0" Width="100" Grouped="false" Sorted="true" IsSortable="true" Visible="true" SortOrder="Descending">
<Name>State</Name>
<Id>CloudMonix.ResourceMonitoring.Resource</Id>
</ColumnInfo>
<ColumnInfo Index="1" SortIndex="-1" Width="100" Grouped="false" Sorted="false" IsSortable="true" Visible="true" SortOrder="Ascending">
<Name>Resource Type</Name>
<Id>ResourceType</Id>
</ColumnInfo>
<ColumnInfo Index="2" SortIndex="-1" Width="100" Grouped="false" Sorted="false" IsSortable="true" Visible="true" SortOrder="Ascending">
<Name>Resource Name</Name>
<Id>DisplayName</Id>
</ColumnInfo>
<ColumnInfo Index="3" SortIndex="-1" Width="100" Grouped="false" Sorted="false" IsSortable="true" Visible="true" SortOrder="Ascending">
<Name>Resource Status</Name>
<Id>ResourceStatus</Id>
</ColumnInfo>
<ColumnInfo Index="4" SortIndex="-1" Width="100" Grouped="false" Sorted="false" IsSortable="true" Visible="true" SortOrder="Ascending">
<Name>Resource Groups</Name>
<Id>ResourceGroups</Id>
</ColumnInfo>
</Presentation>
<Target />
</View>
</Views>
<Folders>
<Folder ID="CloudMonix.ResourceMonitoring.MainFolder" Accessibility="Public" ParentFolder="SystemCenter!Microsoft.SystemCenter.Monitoring.ViewFolder.Root" />
</Folders>
<FolderItems>
<FolderItem ElementID="CloudMonix.ResourceMonitoring.MainView" Folder="CloudMonix.ResourceMonitoring.MainFolder" />
</FolderItems>
</Presentation>
<LanguagePacks>
<LanguagePack ID="ENU" IsDefault="false">
<DisplayStrings>
<DisplayString ElementID="CloudMonix.ResourceMonitoring">
<Name>CloudMonix Resource Monitoring</Name>
<Description></Description>
</DisplayString>
<DisplayString ElementID="CloudMonix.ResourceMonitoring.MainFolder">
<Name>CloudMonix Folder</Name>
<Description></Description>
</DisplayString>
<DisplayString ElementID="CloudMonix.ResourceMonitoring.MainView">
<Name>CloudMonix Resource View</Name>
<Description></Description>
</DisplayString>
<DisplayString ElementID="CloudMonix.ResourceMonitoring.Resource">
<Name>CloudMonix Resource</Name>
<Description></Description>
</DisplayString>
<DisplayString ElementID="CloudMonix.ResourceMonitoring.Resource" SubElementID="ResourceId">
<Name>Resource Id</Name>
<Description></Description>
</DisplayString>
<DisplayString ElementID="CloudMonix.ResourceMonitoring.Resource" SubElementID="ResourceType">
<Name>Resource Type</Name>
<Description></Description>
</DisplayString>
<DisplayString ElementID="CloudMonix.ResourceMonitoring.Resource" SubElementID="ResourceStatus">
<Name>Resource Status</Name>
<Description></Description>
</DisplayString>
<DisplayString ElementID="CloudMonix.ResourceMonitoring.Resource" SubElementID="ResourceGroups">
<Name>Resource Groups</Name>
<Description></Description>
</DisplayString>
</DisplayStrings>
</LanguagePack>
</LanguagePacks>
</ManagementPack>
I have installed this management pack using SCOM SDK and ImportManagementPack method.
Also I have developed Inbound Connector as described in example.
I can send discovery data, performance metrics and events using my connector. And it works fine.
The result of successful import is on the screenshot:
The monitoring objects were created correctly.
But these objects have Not monitored
Health State.
My main question is how to change Health State?
My logic for Health State is very simple:
- If
Resource Status
(please look this property in the screenshot and in management pack XML) property is equal toReady
then Health State isSuccess
. - If
Resource Status
property is equal toDown
then Health State isError
. - Otherwise Health State is
Not monitored
.
I have reviewed many documents (here and here) and found that I need to create monitor, monitor types, expression rules for changing Health State.
Also I have checked XML examples here.
But I don't understand how to define my expressions and how to add necessary information to management pack XML file.
The best answer for me is complete XML example with implementation of expression rules of my logic.
Thanks in advance.