Monday, December 15, 2014

Create a Group containing all Computers hosting an Application

This sample is using SQL Server even if there is already a group (SQL Computers) available when importing the SQL MPs.

There is a link to the gallery if you’d like to download the sample MP at the bottom of this post.

Create a MP with a Group that contains all classes involved

This task is just in case that you’re not so familiar in how to find the proper class ID.

Create a new Group within a (new) MP:

clip_image002

Select all classes involved (here Windows Computers and SQL Engines):

clip_image004

The formula now looks like the following one and would show all Windows Computers and all SQL Engines what is not the target of this task:

clip_image006

Export MP and edit the MP (for instance using Notepad++).

Increase the MP Version

The next step is increase the version number to allow importing it again in your Management Group:

<Manifest>
<Identity>
<ID>Custom.Groups.Management.Pack</ID>
<Version>1.0.0.1</Version>
</Identity>

Optional: set default language

Move down to LanguagePacks.
Change isDefault to true for the language you’d like to use by default:

<LanguagePack ID="ENU" IsDefault="false">
should become
<LanguagePack ID="ENU" IsDefault="true">

Remove other languages if not needed.

Optional: cleanup the automatically created IDs

Search and replace the automatically generated IDs by something more readable, for instance:

Folder_2caa4b7e281c435b841a54dd143e8fdd
should become
Custom.Groups.Management.Pack.Folder

UINameSpace53f2e808dba448bab7f3f717cc8b2d4f
should become
Custom.Groups.Management.Pack.WindowsHostingSql

Change the Group Calculation to include all SQL Servers

To change the group calculation just add the green marked lines, copy and paste the yellow marked class from the red section to the green one and remove the red marked ones:

<DataSource ID="GroupPopulationDataSource" TypeID="SystemCenter!Microsoft.SystemCenter.GroupPopulator">
    <RuleId>$MPElement$</RuleId>
    <GroupInstanceId>$MPElement[Name="Custom.Groups.Management.Pack.WindowsHostingSql.Group"]$</GroupInstanceId>
    <MembershipRules>
        <MembershipRule>
            <MonitoringClass>$MPElement[Name="MicrosoftWindowsLibrary7585010!Microsoft.Windows.Computer"]$</MonitoringClass>
            <RelationshipClass>$MPElement[Name="MicrosoftSystemCenterInstanceGroupLibrary7585010!Microsoft.SystemCenter.InstanceGroupContainsEntities"]$</RelationshipClass>
            <Expression>
                <Contains>
                    <MonitoringClass>$MPElement[Name="MicrosoftSQLServerLibrary6510!Microsoft.SQLServer.DBEngine"]$</MonitoringClass>
                </Contains>
            </Expression>
        </MembershipRule>
        <MembershipRule>
            <MonitoringClass>$MPElement[Name="MicrosoftSQLServerLibrary6510!Microsoft.SQLServer.DBEngine"]$</MonitoringClass>
            <RelationshipClass>$MPElement[Name="MicrosoftSystemCenterInstanceGroupLibrary7585010!Microsoft.SystemCenter.InstanceGroupContainsEntities"]$</RelationshipClass>
        </MembershipRule>
    </MembershipRules>
</DataSource>

Import the MP in SCOM

Save the XML and import it into SCOM

Check the Group

Under Authoring, Groups, search for the group and right-click to show all members:

clip_image010

The view should contain all computers hosting SQL monitored by your SCOM.

Download

The sample MP from above can be found here: https://gallery.technet.microsoft.com/Sample-MP-for-Group-of-26dce52c

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.
Read Full Post...

Monday, December 8, 2014

Correlated Missing Event Detection

Since it is not possible to drop more than 2 images into a forum reply I use my blog to provide the screenshot for a question there.

The original thread can be found here.

Under Authoring, Monitor, create a new unit monitor. Choose Correlated Missing Event Detection:

clip_image002

Enter a proper name and description and choose your target (Windows Computer would be all):

clip_image004

Select the event log for the event that resets your monitor back to healthy (if you’ve chosen event reset above):

clip_image006

Enter the event ID and the source. I took the single occurring of event ID 2 as a reset as a sample:

clip_image008

Choose the event log where the first event is logged:

clip_image010

Enter the event ID for the first event you’re expecting:

clip_image012

Choose the event log for the second event:

clip_image014

Enter the event ID for the second event you’re expecting:

clip_image016

Choose the correlation mode, here B must follow A within 60sec:

clip_image018

Select the missing event as warning and in the other as healthy (could be timer reset either):

clip_image020

Configure the alert settings as you’d like to see the alert in the alert views:

clip_image022

Cheers,
Patrick

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.
Read Full Post...

Unable to copy new agent to this computer

Today I had an interesting one:

I had to update a lot of UNIX/Linux machines from 1.5.1-112 to 1.5.1-138 (shipped at the same time as SCOM 2012 R2 UR4). As expected a couple of machines did not update successfully. Unfortunately, a lot of machines had the status “Failed” – all but one with the Message “Unable to copy new agent to this computer” with the exit code “-1073479144”.

Before I wanted to discuss that situation with the UNIX team I wanted to try it again and during the next update wave just half of the machines ended up failed, the rest has been successful. So I tried again and again and after 5 iterations all machines (but one with another failure) have been updated without any other issue.

Conclusion: don’t give up when you see this error and try it again. Smile

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.
Read Full Post...

Tuesday, December 2, 2014

KMS MP for KMS running on WS2012

Unfortunately there is no KMS MP for WS2012. However, the existing MP for KMS on WS2012 works for KMS on WS2012 as well. And, of course, SCOM 2007 MPs work with SCOM 2012 (R2) either.

Just create a new string value "KeyManagementServiceVersion" with the value "dummy" (or anything else) under
HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform

After that the MP will discover the KMS. Just give it time (24h), restart the agent or override the discovery interval temporarily.

The “old” MP can be downloaded here:
http://www.microsoft.com/en-us/download/details.aspx?id=12419

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.
Read Full Post...

Monday, October 27, 2014

Authorized Users Dashboard

It is always a pain to determine all users that have permissions in Operations Manager and the SCOM user role and AD group.

So I created a script that to show all that data in a PowerShell Grid Widget. The view at the end looks like the screenshot:

image

Of course you can change the sort order as expected by the role, group, user or account name.

There is no additional configuration necessary since the script takes the management server from the registry.

The script can be downloaded directly from the TechNet Gallery: https://gallery.technet.microsoft.com/PSGW-Authorized-Users-e566c5aa

You can easily install the AD PowerShell module if you run the Operations Console on a server OS by entering the following command in an elevated PowerShell:
Add-WindowsFeature RSAT-AD-PowerShell
For Windows 7:
http://www.microsoft.com/en-us/download/details.aspx?id=7887
For Windows 8:
http://www.microsoft.com/en-us/download/details.aspx?id=28972
For Windows 8.1:
http://www.microsoft.com/en-us/download/details.aspx?id=39296

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.
Read Full Post...

Monday, October 13, 2014

SQL Dashboards do not show Display Name

In the version 6.5.1.0 of the SQL Management Pack the dashboards have been changed and adopted to 2008 besides of 2012.

Unfortunately, in some SCOM environments (seems to be the ones that are upgraded from 2007) the DB display name is not shown in the Databases widget and the column is empty.

The problem is that in the dashboard MPs there is a value “$Object/PropertyCollection[Name=’DisplayName’]$” and that collection simply does not exist.

This can be tested by extracting the MP to XML, searching for the string “PropertyCollection[Name=’DisplayName’]$” and replacing it by “Property[Name=’DisplayName’]$”.

Please keep in mind that the MP/XML is still intellectual property of Microsoft and that the EULA apply!

The sample above is only to show the reason for the missing value.

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.
Read Full Post...

Thursday, August 14, 2014

Pending agent error during discovery

Yesterday I’ve seen an interesting issue at a customer: whenever they tried to deploy an agent using the discovery wizard they immediately after kicking off the discovery get an information, that the agent is already under pending management. However, there were no agents under Administration, Pending Management.

Weird, but using the PowerShell Get-SCOMPendingManagement showed exactly the machine supposed to be discovered.

Usually you’d fire a Get-SCOMPendingManagement | Deny-SCOMPendingManagement and discover the machine again to be sure that the discovery and push-deployment was ok. Unfortunately that brought up an error again.

So we had to approve it first using Get-SCOMPendingManagement | Approve-SCOMPendingManagement and delete the agent from Agent Managed before re-discovering it successfully this time.

Again, this is just a workaround. Until now I’ve haven’t seen that issue again to dive deeper into troubleshooting.

Not a big thing but tricky at all.

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.

Read Full Post...

Thursday, July 3, 2014

Different Resolution States in Consoles

After you’ve updated from SCOM 2007 to 2012 (or later) your console users might see different resolution states than you’ve configured see under Administration/Settings/Alerts.

That might be the case if you’ve used custom resolution states with IDs that are now used by the resolution states coming with the 2012 (or younger) version. Those resolution states are used in TFS WI sync scenarios to show the state of the related WI directly at the alert.

You can move to the settings and re-enter your display string for each resolution state. I recommend to take other IDs than the ones reserved for TFS (247, 248, 249, 250, 254) if that is possible in your environment.

Happy SCOM’ing,
Patrick

Read Full Post...

PowerShell Grid Widget Troubleshooting

A quick way to troubleshoot problems in the new PowerShell Grid Widgets and show the error directly in the dashboard:

image

Just implement the following lines into your existing widget script:

...
foreach ($object in $objects) {
 
$dataObject = $ScriptContext.CreateInstance("xsd://foo!bar/baz")
  $dataObject["Id"] = [String]($object.Id)
  $dataObject["..."] = [String](...)
  if ($error) {
    $dataObject["Error"] = [String]($error)
    $error.clear()
  }

  $ScriptContext.ReturnCollection.Add($dataObject)
}

The $error.clear() cleans up the $error variable so that every line in your dashboard only shows the related errors.

The error column will disappear once no error has occurred and you switched to another view and back.

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.

Read Full Post...

Wednesday, June 25, 2014

Connected Users Dashboard

Below you find a script to show all connected SDK users in your SCOM 2012 R2 UR2 management group.
You can just paste the code into a PowerShell Grid Widget. The dashboard will after that look that way:
image
There is no additional configuration necessary since the script takes the management server from the registry.

Update: I added some lines to get the display name for the user from AD. In case that the AD PowerShell module is not installed, the script shows the following text in the Note column: "Please install RSAT Feature (http://bit.ly/UIX5gT)". You can easily replace it by any other text if you don’t want that to be shown. Please find more information after the script.

Update: You can download the script from the TechNet gallery as well: https://gallery.technet.microsoft.com/PSGW-Connected-Users-20817b14

<removed script and moved to TechNet gallery>

You can easily install the AD PowerShell module if you run the Operations Console on a server OS by entering the following command in an elevated PowerShell:
Add-WindowsFeature RSAT-AD-PowerShell
For Windows 7:
http://www.microsoft.com/en-us/download/details.aspx?id=7887
For Windows 8:
http://www.microsoft.com/en-us/download/details.aspx?id=28972
For Windows 8.1:
http://www.microsoft.com/en-us/download/details.aspx?id=39296
Thanks to The PowerShell Guy for his PowerShell hints.
All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.

All information is provided "as is" without any warranty! Try in lab before. Handle with care in production.
Read Full Post...