Scom

Creating SCOM Dashboards in VSAE

Creating SCOM Dashboards in VSAE

I’ve recently setup some dashboards in SCOM 2007 R2 for colleagues who haven’t used SCOM much before.Initially I created these in the console, but when it came to replicating these in our SCOM 2012 R2 environment I decided to have a go at coding them in VSAE (Visual Studio Authoring Extensions for Visual Studio – including 2015 community).I didn’t find much information on creating simple 2007 style dashboard, so I exported my unsealed MP from the 2007 scom console and had a look at the xml.

It wasn’t as complicated as the 2012 style dashboards, but I did have some trouble to start with. The actual config of the dashboard, excluding the display string, can be as little as 3-4 lines

<View ID="MP_Team_Views.Dashboard.LogicalDisk" Accessibility="Public" Target="System!System.Entity" TypeID="SC!Microsoft.SystemCenter.DashboardViewType" Visible="true" Comment="Logical Disk Dashboard">
        <Category>Operations</Category>
        <PanelConfiguration Columns="1" Rows="2">
          <Cell Row="1" Column="1" ViewID="MP_Team_Views.View.Alert.LogicalDisk"></Cell>
          <Cell Row="2" Column="1" ViewID="MP_Team_Views.View.State.LogicalDisk"></Cell>
        </PanelConfiguration>
      </View>

Looking at the above, you can see the dashboard intially, just looks like any other view. Its a different type, that that’s all.the First difference is <Panel Configuration Columns=“1″ Rows=“2″>.However, this still makes quite a bit of sense.The view this creates (below), has 1 column and 2 rows.

A 2 Pane Scom View

Its not a great example, but we had no issues with logical disks when I took this screenshot (Yeh!).This line can change quite a bit, you can have almost as many columns and rows as you would like.However, if you look at the example templates some times you have odd layouts (i.e. a column of 3 rows on the left and just 1 row on the left). This is achieved by adding “RowSpan=“3” to the <Cell.. Line.For example one of the 3 rows in column 1 in the above example would have this code

<Cell Row="1" Column="1" ViewID="MP_Team_Views.View.Alert.HeartBeatFailure"></Cell>

Where as the below example with a large panel on the right would have the below code

<Cell Row="1" Column="2" RowSpan="3" ViewID="MS02!Microsoft.SystemCenter.Agent.AgentsByVersion"></Cell>

If you compare the two lines, they are pretty similar, however the second line has “RowSpan” option as described before.You can set this to 2, 3, 4 or whatever you want but it can’t be more than the rows in the other column (if that makes sense)

A Scom 2 Panes and 4 View

That’s pretty much it for a simple dashboard. I’ve included all my code for the first Dashboards I did.Its the whole MP, so you will need to cut and paste the bits you need and work within the VASE templates. If you have searched for how to author dashboard, I will assume your already familiar with these 🙂

Anyway, here is the final code

<?xml version="1.0" encoding="utf-8"?>
<ManagementPack SchemaVersion="2.0" ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Manifest>
    <Identity>
      <ID>MP_Team_Views</ID>
      <Version>1.0.0.11</Version>
    </Identity>
    <Name>MP-Team Views</Name>
    <References>
      <Reference Alias="DC">
        <ID>DataONTAP.Cluster</ID>
        <Version>4.0.1.6366</Version>
        <PublicKeyToken>5d4427961a9a0646</PublicKeyToken>
      </Reference>
      <Reference Alias="MSGP">
        <ID>Microsoft.SQLServer.Generic.Presentation</ID>
        <Version>6.5.1.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SC">
        <ID>Microsoft.SystemCenter.Library</ID>
        <Version>7.0.8433.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Windows">
        <ID>Microsoft.Windows.Library</ID>
        <Version>7.5.8501.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="MWSAL">
        <ID>Microsoft.Windows.Server.AD.Library</ID>
        <Version>6.0.8293.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="MWSC">
        <ID>Microsoft.Windows.Server.ClusterSharedVolumeMonitoring</ID>
        <Version>6.0.7296.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="MWSL">
        <ID>Microsoft.Windows.Server.Library</ID>
        <Version>6.0.7296.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>7.5.8501.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <Presentation>
    <Views>
      <View ID="MP_Team_Views.View.State.LogicalDisk" Accessibility="Public" Target="MWSL!Microsoft.Windows.Server.LogicalDisk" TypeID="SC!Microsoft.SystemCenter.StateViewType" Visible="true" Comment="Logical Disk State View">
        <Category>Operations</Category>
      </View>
      <View ID="MP_Team_Views.View.Alert.NetAppQuotas" Accessibility="Public" Target="DC!DataONTAP.Cluster.DataVserver.Volume.Qtree" TypeID="SC!Microsoft.SystemCenter.AlertViewType" Visible="true" Comment="NetApp Quota  Alerts">
        <Category>Operations</Category>
        <Criteria>
          <ResolutionState>
            <State>0</State>
          </ResolutionState>
        </Criteria>
      </View>
      <View ID="MP_Team_Views.Dashboard.NetappLunsQuotas" Accessibility="Public" Target="System!System.Entity" TypeID="SC!Microsoft.SystemCenter.DashboardViewType" Visible="true" Comment="Netap Lun and Quota Dashboard">
        <Category>Operations</Category>
        <PanelConfiguration Columns="1" Rows="2">
          <Cell Row="1" Column="1" ViewID="View.Alert.NetAppLuns"></Cell>
          <Cell Row="2" Column="1" ViewID="View.Alert.NetAppQuotas"></Cell>
        </PanelConfiguration>
      </View>
      <View ID="MP_Team_Views.Dashboard.LogicalDisk" Accessibility="Public" Target="System!System.Entity" TypeID="SC!Microsoft.SystemCenter.DashboardViewType" Visible="true" Comment="Logical Disk Dashboard">
        <Category>Operations</Category>
        <PanelConfiguration Columns="1" Rows="2">
          <Cell Row="1" Column="1" ViewID="MP_Team_Views.View.Alert.LogicalDisk"></Cell>
          <Cell Row="2" Column="1" ViewID="MP_Team_Views.View.State.LogicalDisk"></Cell>
        </PanelConfiguration>
      </View>
      <View ID="MP_Team_Views.View.Alert.LogicalDisk" Accessibility="Public" Target="Windows!Microsoft.Windows.LogicalDisk" TypeID="SC!Microsoft.SystemCenter.AlertViewType" Visible="true" Comment="Logical Disk Alerts">
        <Category>Operations</Category>
        <Criteria>
          <ResolutionState>
            <State>0</State>
          </ResolutionState>
        </Criteria>
      </View>
      <View ID="MP_Team_Views.View.Alert.NetAppLuns" Accessibility="Public" Target="DC!DataONTAP.Cluster.DataVserver.Volume" TypeID="SC!Microsoft.SystemCenter.AlertViewType" Visible="true" Comment="NetApp Lun  Alerts">
        <Category>Operations</Category>
        <Criteria>
          <ResolutionState>
            <State>0</State>
          </ResolutionState>
        </Criteria>
      </View>
    </Views>
    <Folders>
      <Folder ID="MP_Team_Views.TopFolder" Accessibility="Internal" ParentFolder="SC!Microsoft.SystemCenter.Monitoring.ViewFolder.Root" />
      <Folder ID="MP_Team_Views.DBAFolder" Accessibility="Internal" ParentFolder="MP_Team_Views.TopFolder" />
      <Folder ID="MP_Team_Views.MSTFolder" Accessibility="Internal" ParentFolder="MP_Team_Views.TopFolder" />
      <Folder ID="MP_Team_Views.BaseFolder" Accessibility="Internal" ParentFolder="MP_Team_Views.MSTFolder" />
      <Folder ID="MP_Team_Views.DashboardFolder" Accessibility="Internal" ParentFolder="MP_Team_Views.MSTFolder" />
    </Folders>
    <FolderItems>
      <FolderItem ElementID="MSGP!Microsoft.SQLServer.Generic.Presentation.View.SQLServerAlerts" Folder="MP_Team_Views.DBAFolder" ID="Id_0" />
      <FolderItem ElementID="MSGP!Microsoft.SQLServer.Generic.Presentation.View.SQLServerComputers" Folder="MP_Team_Views.DBAFolder" ID="Id_1" />
      <FolderItem ElementID="MWSL!Microsoft.Windows.Server.LogicalDisk.Health.Dashboard.View" Folder="MP_Team_Views.DashboardFolder" ID="Id_0" />
      <FolderItem ElementID="MWSC!Microsoft.Windows.Server.ClusterSharedVolumeMonitoring.ClusterSharedVolume.DashboardView" Folder="MP_Team_Views.DashboardFolder" ID="Id_1" />
      <FolderItem ElementID="MWSC!Microsoft.Windows.Server.ClusterDisksMonitoring.ClusterDisk.DashboardView" Folder="MP_Team_Views.DashboardFolder" ID="Id_2" />
      <FolderItem ElementID="MWSAL!Microsoft.Windows.Server.AD.ActiveAlerts" Folder="MP_Team_Views.BaseFolder" ID="Id_0" />
      <FolderItem ElementID="MP_Team_Views.View.State.LogicalDisk" Folder="MP_Team_Views.BaseFolder" ID="MP_Team_Views.View.State.LogicalDisk.FolderItem" />
      <FolderItem ElementID="MP_Team_Views.View.Alert.NetAppQuotas" Folder="MP_Team_Views.BaseFolder" ID="MP_Team_Views.View.Alert.NetAppQuotas.FolderItem" />
      <FolderItem ElementID="MP_Team_Views.Dashboard.NetappLunsQuotas" Folder="MP_Team_Views.DashboardFolder" ID="MP_Team_Views.Dashboard.NetappLunsQuotas.FolderItem" />
      <FolderItem ElementID="MP_Team_Views.Dashboard.LogicalDisk" Folder="MP_Team_Views.DashboardFolder" ID="MP_Team_Views.Dashboard.LogicalDisk.FolderItem" />
      <FolderItem ElementID="MP_Team_Views.View.Alert.LogicalDisk" Folder="MP_Team_Views.BaseFolder" ID="MP_Team_Views.View.Alert.LogicalDisk.FolderItem" />
      <FolderItem ElementID="MP_Team_Views.View.Alert.NetAppLuns" Folder="MP_Team_Views.BaseFolder" ID="MP_Team_Views.View.Alert.NetAppLuns.FolderItem" />
    </FolderItems>
  </Presentation>
  <LanguagePacks>
    <LanguagePack ID="ENU" IsDefault="true">
      <DisplayStrings>
        <DisplayString ElementID="MP_Team_Views.TopFolder">
          <Name>Custom Dashboards</Name>
          <Description></Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.MSTFolder">
          <Name>MST View</Name>
          <Description></Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.BaseFolder">
          <Name>Base Views</Name>
          <Description></Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.DashboardFolder">
          <Name>Dashboards</Name>
          <Description></Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.DBAFolder">
          <Name>DBA View</Name>
          <Description></Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.View.State.LogicalDisk">
          <Name>Logical Disk State View</Name>
          <Description>Logical Disk State View</Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.View.Alert.NetAppQuotas">
          <Name>NetApp Quota  Alerts</Name>
          <Description>NetApp Quota  Alerts</Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.Dashboard.NetappLunsQuotas">
          <Name>Netap Lun and Quota Dashboard</Name>
          <Description>Netap Lun and Quota Dashboard</Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.Dashboard.LogicalDisk">
          <Name>Logical Disk Dashboard</Name>
          <Description>Logical Disk Dashboard</Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.View.Alert.LogicalDisk">
          <Name>Logical Disk Alerts</Name>
          <Description>Logical Disk Alerts</Description>
        </DisplayString>
        <DisplayString ElementID="MP_Team_Views.View.Alert.NetAppLuns">
          <Name>NetApp Lun  Alerts</Name>
          <Description>NetApp Lun  Alerts</Description>
        </DisplayString>
      </DisplayStrings>
      <KnowledgeArticles></KnowledgeArticles>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>