Assembly: Microsoft.EnterpriseManagement.OperationsManager (in microsoft.enterprisemanagement.operationsmanager.dll)
Usage
Visual Basic |
---|
Dim instance As SnapshotMonitoringDiscoveryData |
Syntax
Visual Basic |
---|
Public Class SnapshotMonitoringDiscoveryData |
C# |
---|
public class SnapshotMonitoringDiscoveryData |
C++ |
---|
public ref class SnapshotMonitoringDiscoveryData |
J# |
---|
public class SnapshotMonitoringDiscoveryData |
JScript |
---|
public class SnapshotMonitoringDiscoveryData |
Example
The following example:
-
Connects to a Management Group.
-
Creates a connector.
-
Initializes the newly created connector.
-
Imports a management pack (if it is not already loaded).
-
Gets the monitoring class for each of the defined SnapshotMonitoringDiscoveryData objects, MonitoringClass objects, CustomMonitoringObject, CustomMonitoringRelationshipObject, and MonitoringClassProperty objects for discovery.
-
Sets the monitoring property value for each of the objects.
-
Sets the source and target for the relationship object.
-
Adds the discovery data to the Operation Manager.
-
Commits the discovery data to the Operation Manager over the newly built connector.
Visual Basic | ![]() |
---|---|
' Synchronously runs a task to get a list of ' rules or monitors running on a specific agent-managed computer. Imports System Imports System.Collections.Generic Imports System.Collections.ObjectModel Imports System.Diagnostics Imports Microsoft.EnterpriseManagement Imports Microsoft.EnterpriseManagement.Administration Imports Microsoft.EnterpriseManagement.Common Imports Microsoft.EnterpriseManagement.Configuration Imports Microsoft.EnterpriseManagement.ConnectorFramework Imports Microsoft.EnterpriseManagement.Monitoring Imports System.IO Imports System.Text Namespace DiscoveryDataInsertion Class DiscoveryDataInsertionSample Dim m_managementGroup As ManagementGroup Dim m_monitoringConnector As MonitoringConnector Dim m_routerMonitoringObject As MonitoringObject Dim m_routerPortMonitoringObject As MonitoringObject Dim m_routerFanMonitoringObject As MonitoringObject Public Sub New( _ ByVal managementServerName As String) Debug.Assert(managementServerName.Length > 0) ConnectToManagementGroup(managementServerName) CreateConnector() ImportMPIfNeed() End Sub Public Sub InsertDiscoveryData() Dim discoveryData As SnapshotMonitoringDiscoveryData = _ New SnapshotMonitoringDiscoveryData() Dim routerClass As MonitoringClass Dim routerPortClass As MonitoringClass Dim routerFanClass As MonitoringClass Dim entityClass As MonitoringClass Dim fanContainedInRouterRelationshipClass As MonitoringRelationshipClass Dim routerMonitoringObject As CustomMonitoringObject Dim routerPortObject As CustomMonitoringObject Dim routerFanMonitoringObject As CustomMonitoringObject Dim relationshipObject As CustomMonitoringRelationshipObject Dim routerIdProp As MonitoringClassProperty Dim portIdProp As MonitoringClassProperty Dim fanIdProp As MonitoringClassProperty Dim displayNameProp As MonitoringClassProperty routerClass = GetMonitoringClass("SdkDemo.DiscoveryDataInsertion.Router") routerPortClass = GetMonitoringClass("SdkDemo.DiscoveryDataInsertion.RouterPort") routerFanClass = GetMonitoringClass("SdkDemo.DiscoveryDataInsertion.RouterFan") entityClass = GetMonitoringClass("System.Entity") fanContainedInRouterRelationshipClass = _ GetMonitoringRelationshipClass("SdkDemo.DiscoveryDataInsertion.RouterContainsFan") routerIdProp = routerClass.GetMonitoringProperty("RouterId") portIdProp = routerPortClass.GetMonitoringProperty("PortId") fanIdProp = routerFanClass.GetMonitoringProperty("FanId") displayNameProp = entityClass.GetMonitoringProperty("DisplayName") routerMonitoringObject = New CustomMonitoringObject(routerClass) routerPortObject = New CustomMonitoringObject(routerPortClass) routerFanMonitoringObject = New CustomMonitoringObject(routerFanClass) relationshipObject = _ New CustomMonitoringRelationshipObject(fanContainedInRouterRelationshipClass) routerMonitoringObject.SetMonitoringPropertyValue(routerIdProp, "1") routerMonitoringObject.SetMonitoringPropertyValue(displayNameProp, "Router 123") ' There is a hosting relationship between the router and the router port. ' In order for OpsMgr to know to what router it needs to associate with the port object, ' we need to set the key prop of the router (RouterId) on the hosted object(RouterPort). ' There is no need to explicitly create a relationship object for relationships of type hosting. ' An instance of the relationship will be created automatically. routerPortObject.SetMonitoringPropertyValue(routerIdProp, "1") routerPortObject.SetMonitoringPropertyValue(portIdProp, "1") routerPortObject.SetMonitoringPropertyValue(displayNameProp, "Port #1") routerFanMonitoringObject.SetMonitoringPropertyValue(fanIdProp, "1") routerFanMonitoringObject.SetMonitoringPropertyValue(displayNameProp, "Fan #1") relationshipObject.SetSource(routerMonitoringObject) relationshipObject.SetTarget(routerFanMonitoringObject) discoveryData.Include(routerPortObject) discoveryData.Include(routerMonitoringObject) discoveryData.Include(routerFanMonitoringObject) discoveryData.Include(relationshipObject) discoveryData.Commit(m_monitoringConnector) ' Obtain references to the newly created objects ' they will be used to insert events and performance data m_routerMonitoringObject = m_managementGroup.GetMonitoringObject(CType(routerMonitoringObject.Id, Guid)) m_routerPortMonitoringObject = m_managementGroup.GetMonitoringObject(CType(routerPortObject.Id, Guid)) m_routerFanMonitoringObject = m_managementGroup.GetMonitoringObject(CType(routerFanMonitoringObject.Id, Guid)) End Sub Private Sub ConnectToManagementGroup(ByVal managementServerName As String) m_managementGroup = New ManagementGroup(managementServerName) End Sub '--------------------------------------------------------------------- Private Sub CreateConnector() Dim mcfAdmin As ConnectorFrameworkAdministration Dim connectorGuid As Guid = New Guid("DE1FC259-FE16-44ce-B90E-708CADE55909") mcfAdmin = m_managementGroup.GetConnectorFrameworkAdministration() Try m_monitoringConnector = mcfAdmin.GetMonitoringConnector(connectorGuid) Catch e As Microsoft.EnterpriseManagement.Common.ObjectNotFoundException ' the connector does not exist, so create it Dim connectInfo As ConnectorInfo = New ConnectorInfo() connectInfo.Description = "This is a sample connector to demonstrate discovery data insertion" connectInfo.DisplayName = "Sample connector" connectInfo.Name = "Sample connector" m_monitoringConnector = mcfAdmin.Setup(connectInfo, connectorGuid) End Try If Not m_monitoringConnector.Initialized Then m_monitoringConnector.Initialize() End If End Sub Private Function GetMonitoringClass( _ ByVal className As String) As MonitoringClass Dim monitoringClasses As ReadOnlyCollection(Of MonitoringClass) monitoringClasses = m_managementGroup.GetMonitoringClasses(className) If (monitoringClasses.Count = 0) Then Throw New ApplicationException("Failed to find monitoring class " & className) End If Return monitoringClasses(0) End Function Private Function GetMonitoringRelationshipClass( _ ByVal relationshipName As String) As MonitoringRelationshipClass Dim relationshipClasses As ReadOnlyCollection(Of MonitoringRelationshipClass) relationshipClasses = _ m_managementGroup.GetMonitoringRelationshipClasses(relationshipName) If (relationshipClasses.Count = 0) Then Throw New ApplicationException("Failed to find monitoring relationship " & relationshipName) End If Return relationshipClasses(0) End Function Private Sub ImportMPIfNeed() Dim criteria As ManagementPackCriteria = _ New ManagementPackCriteria("Name = 'SdkDemo.DiscoveryDataInsertion'") If (m_managementGroup.GetManagementPacks(criteria).Count = 0) Then Dim mgmtPackPath As String mgmtPackPath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) & _ "\SdkDemo.DiscoveryDataInsertion.xml" m_managementGroup.ImportManagementPack(New ManagementPack(mgmtPackPath)) End If End Sub Public Overloads Shared Function Main(ByVal args() As String) As Integer Dim dataInsertion As DiscoveryDataInsertionSample = _ New DiscoveryDataInsertionSample("ManagementServerName") dataInsertion.InsertDiscoveryData() End Function End Class End Namespace |
C# | ![]() |
---|---|
using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using Microsoft.EnterpriseManagement.Administration; using Microsoft.EnterpriseManagement; using Microsoft.EnterpriseManagement.ConnectorFramework; using Microsoft.EnterpriseManagement.Monitoring; using Microsoft.EnterpriseManagement.Configuration; using System.Collections.ObjectModel; using System.IO; namespace DiscoveryDataInsertion { class DiscoveryDataInsertionSample { ManagementGroup m_managementGroup; MonitoringConnector m_monitoringConnector; MonitoringObject m_routerMonitoringObject; MonitoringObject m_routerPortMonitoringObject; MonitoringObject m_routerFanMonitoringObject; public DiscoveryDataInsertionSample( string managementServerName ) { Debug.Assert(managementServerName.Length > 0); ConnectToManagementGroup(managementServerName); CreateConnector(); ImportMPIfNeed(); } public void InsertDiscoveryData() { SnapshotMonitoringDiscoveryData discoveryData = new SnapshotMonitoringDiscoveryData(); MonitoringClass routerClass; MonitoringClass routerPortClass; MonitoringClass routerFanClass; MonitoringClass entityClass; MonitoringRelationshipClass fanContainedInRouterRelationshipClass; CustomMonitoringObject routerMonitoringObject; CustomMonitoringObject routerPortObject; CustomMonitoringObject routerFanMonitoringObject; CustomMonitoringRelationshipObject relationshipObject; MonitoringClassProperty routerIdProp; MonitoringClassProperty portIdProp; MonitoringClassProperty fanIdProp; MonitoringClassProperty displayNameProp; routerClass = GetMonitoringClass("SdkDemo.DiscoveryDataInsertion.Router"); routerPortClass = GetMonitoringClass("SdkDemo.DiscoveryDataInsertion.RouterPort"); routerFanClass = GetMonitoringClass("SdkDemo.DiscoveryDataInsertion.RouterFan"); entityClass = GetMonitoringClass("System.Entity"); fanContainedInRouterRelationshipClass = GetMonitoringRelationshipClass("SdkDemo.DiscoveryDataInsertion.RouterContainsFan"); routerIdProp = routerClass.GetMonitoringProperty("RouterId"); portIdProp = routerPortClass.GetMonitoringProperty("PortId"); fanIdProp = routerFanClass.GetMonitoringProperty("FanId"); displayNameProp = entityClass.GetMonitoringProperty("DisplayName"); routerMonitoringObject = new CustomMonitoringObject(routerClass); routerPortObject = new CustomMonitoringObject(routerPortClass); routerFanMonitoringObject = new CustomMonitoringObject(routerFanClass); relationshipObject = new CustomMonitoringRelationshipObject(fanContainedInRouterRelationshipClass); routerMonitoringObject.SetMonitoringPropertyValue(routerIdProp, "1"); routerMonitoringObject.SetMonitoringPropertyValue(displayNameProp, "Router 123"); //There is a hosting relationship between the router and the router port. //In order for OpsMgr to know to what router it needs to associate with the port object, //we need to set the key prop of the router (RouterId) on the hosted object(RouterPort). //There is no need to explicitly create a relationship object for relationships of type hosting. //An instance of the relationship will be created automatically. routerPortObject.SetMonitoringPropertyValue(routerIdProp, "1"); routerPortObject.SetMonitoringPropertyValue(portIdProp, "1"); routerPortObject.SetMonitoringPropertyValue(displayNameProp, "Port #1"); routerFanMonitoringObject.SetMonitoringPropertyValue(fanIdProp, "1"); routerFanMonitoringObject.SetMonitoringPropertyValue(displayNameProp, "Fan #1"); relationshipObject.SetSource(routerMonitoringObject); relationshipObject.SetTarget(routerFanMonitoringObject); discoveryData.Include(routerPortObject); discoveryData.Include(routerMonitoringObject); discoveryData.Include(routerFanMonitoringObject); discoveryData.Include(relationshipObject); discoveryData.Commit(m_monitoringConnector); //Obtain references to the newly created objects //they will be used to insert events and performance data m_routerMonitoringObject = m_managementGroup.GetMonitoringObject((Guid)routerMonitoringObject.Id); m_routerPortMonitoringObject = m_managementGroup.GetMonitoringObject((Guid)routerPortObject.Id); m_routerFanMonitoringObject = m_managementGroup.GetMonitoringObject((Guid)routerFanMonitoringObject.Id); } private void ConnectToManagementGroup(string managementServerName) { m_managementGroup = new ManagementGroup(managementServerName); } //--------------------------------------------------------------------- private void CreateConnector() { ConnectorFrameworkAdministration mcfAdmin; Guid connectorGuid = new Guid("DE1FC259-FE16-44ce-B90E-708CADE55909"); mcfAdmin = m_managementGroup.GetConnectorFrameworkAdministration(); try { m_monitoringConnector = mcfAdmin.GetMonitoringConnector(connectorGuid); } catch (Microsoft.EnterpriseManagement.Common.ObjectNotFoundException error) { //the connector does not exist, so create it ConnectorInfo connectorInfo = new ConnectorInfo(); connectorInfo.Description = "This is a sample connector to demonstrate discovery data insertion"; connectorInfo.DisplayName = "Sample connector"; connectorInfo.Name = "Sample connector"; m_monitoringConnector = mcfAdmin.Setup(connectorInfo, connectorGuid); } if (!m_monitoringConnector.Initialized) { m_monitoringConnector.Initialize(); } } private MonitoringClass GetMonitoringClass( string className ) { ReadOnlyCollection<MonitoringClass> monitoringClasses; monitoringClasses = m_managementGroup.GetMonitoringClasses(className); if (monitoringClasses.Count == 0) { throw new ApplicationException("Failed to find monitoring class " + className); } return (monitoringClasses[0]); } private MonitoringRelationshipClass GetMonitoringRelationshipClass( string relationshipName ) { ReadOnlyCollection<MonitoringRelationshipClass> relationshipClasses; relationshipClasses = m_managementGroup.GetMonitoringRelationshipClasses(relationshipName); if (relationshipClasses.Count == 0) { throw new ApplicationException("Failed to find monitoring relationship " + relationshipName); } return (relationshipClasses[0]); } private void ImportMPIfNeed() { ManagementPackCriteria criteria = new ManagementPackCriteria("Name = 'SdkDemo.DiscoveryDataInsertion'"); if (m_managementGroup.GetManagementPacks(criteria).Count == 0) { string mgmtPackPath; mgmtPackPath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\SdkDemo.DiscoveryDataInsertion.xml"; m_managementGroup.ImportManagementPack(new ManagementPack(mgmtPackPath)); } } public static void Main(string[] args) { DiscoveryDataInsertionSample dataInsertion = new DiscoveryDataInsertionSample("ManagementServerName"); dataInsertion.InsertDiscoveryData(); } } } |
Remarks
An instance of the SnapshotMonitoringDiscoveryData class represents a list of monitoring objects and monitoring relationships to add to or remove from Operations Manager.
The Snapshot discovery data replaces all data that was previously discovered by the connector. Any monitoring objects or relationships that were previously discovered but are not included in the instance of SnapshotMonitoringDiscoveryClass will be removed when Commit is called.
The Snapshot discovery indicates to the system that this is everything it has discovered. The Snapshot discovery effectively deletes anything that was previously discovered and the current discovery is everything that has been discovered. This is all of the discovery data that a connector is aware of.
Inheritance
Hierarchy
Microsoft.EnterpriseManagement.ConnectorFramework.SnapshotMonitoringDiscoveryData