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 | Copy Code |
|---|---|
' 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# | Copy Code |
|---|---|
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


