TCP Port monitoring in SCOM without using template.

April 6, 2016

Hello everyone,

As you may or may not know, creating TCP monitors in SCOM through use of the template is a fairly time intensive task, especially if you have to create a ton of TCP monitors. Furthermore, templates are fine for smaller scale Operations Manager environments but tend to create a lot of unneccessary groups, overrides, views etc.

So naturally I was looking for a more elegant solution as I did not want to go through creating 100’s TCP monitors. My first thought was to google if anything exists already, and to my surprise, I did not find any immediate solutions.
What I did find however was the following post. (Credits to Gowdhaman Karthikeyan)

This post explains how you can use a powershell discovery with a comma seperated file or ‘CSV’ to add the proper TCP Port instances in SCOM.
This has some significant advantages over using the template (as  outlined in the blog post):

  • You can let other teams add TCP monitors themselves, with minimum SCOM knowledge or access.
  • It is more scalable, as it does not create any unnecessary groups, overrides, views compared to the template.
  • It is a lot faster, as you dont have to go through the template for each TCP monitor you want to create.
  • The information is centrally stored in the CSV.

The blogpost covers the class/discovery creation of these TCP port instances, but does not cover the monitoring part. As I did not have time to wait for part 2, I decided to use his management pack to add monitoring to it as well.

To enable monitoring I went through the following steps:

  • Created a Visual Studio solution and migrated the classes/discovery in my new management pack.
  • Create a ‘dummy’ TCP port monitor from the template wizard and save it in a new management pack.
  • Export this management pack, and manipulating the datasources to change the hardcoded stuff to the properties of our custom class.

This is what the initial datasource for the monitor looks like generated by the template:

<ModuleTypes>
<DataSourceModuleType ID=”TCPPortCheck_078ada71de03493d927d74746d848bd6.TCPPortCheckDataSource” Accessibility=”Public” Batching=”false”>
<Configuration />
<ModuleImplementation Isolation=”Any”>
<Composite>
<MemberModules>
<DataSource ID=”Scheduler” TypeID=”System!System.Scheduler”>
<Scheduler>
<SimpleReccuringSchedule>
<Interval Unit=”Seconds”>120</Interval>
</SimpleReccuringSchedule>
<ExcludeDates />
</Scheduler>
</DataSource>
<ProbeAction ID=”Probe” TypeID=”MicrosoftSystemCenterSyntheticTransactionsLibrary!Microsoft.SystemCenter.SyntheticTransactions.TCPPortCheckProbe”>
<ServerName>server1.customer.org</ServerName>
<Port>80</Port>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID=”Probe”>
<Node ID=”Scheduler” />
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>MicrosoftSystemCenterSyntheticTransactionsLibrary!Microsoft.SystemCenter.SyntheticTransactions.TCPPortCheckData</OutputType>
</DataSourceModuleType>

The bold part is the hardcoded part we have to replace. However, we do not have added any data yet from our target class to the data source, which we will have to add as well. The datasource eventually looks like this:

<DataSourceModuleType ID=”TCPPortMonitor.TCPPortCheck.DataSource” Accessibility=”Public” Batching=”false”>
<Configuration>
<xsd:element name=”ServerName” type=”xsd:string” />
<xsd:element name=”Port” type=”xsd:int” />
<xsd:element name=”NoOfRetries” type=”xsd:int” />
<xsd:element name=”TimeWindowInSeconds” type=”xsd:int” />
</Configuration>
<ModuleImplementation Isolation=”Any”>
<Composite>
<MemberModules>
<DataSource ID=”Scheduler” TypeID=”System!System.Scheduler”>
<Scheduler>
<SimpleReccuringSchedule>
<Interval Unit=”Seconds”>$Config/TimeWindowInSeconds$</Interval>
</SimpleReccuringSchedule>
<ExcludeDates />
</Scheduler>
</DataSource>
<ProbeAction ID=”Probe” TypeID=”Synth!Microsoft.SystemCenter.SyntheticTransactions.TCPPortCheckProbe”>
<ServerName>$Config/ServerName$</ServerName>
<Port>$Config/Port$</Port>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID=”Probe”>
<Node ID=”Scheduler” />
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>Synth!Microsoft.SystemCenter.SyntheticTransactions.TCPPortCheckData</OutputType>
</DataSourceModuleType>
</ModuleTypes>

The monitor types will have to be changed as well, as the properties of the class are not passed through in the template version of the monitor.
So it went from this:

<UnitMonitorType ID=”TCPPortCheck_078ada71de03493d927d74746d848bd6.TimeOut” Accessibility=”Public”>
<MonitorTypeStates>
<MonitorTypeState ID=”TimeOutFailure” NoDetection=”false” />
<MonitorTypeState ID=”NoTimeOutFailure” NoDetection=”false” />
</MonitorTypeStates>
<Configuration />
<MonitorImplementation>
<MemberModules>
<DataSource ID=”DS1″ TypeID=”TCPPortCheck_078ada71de03493d927d74746d848bd6.TCPPortCheckDataSource” />
<ConditionDetection ID=”CDTimeOutFailure” TypeID=”System!System.ExpressionFilter”>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type=”UnsignedInteger”>StatusCode</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type=”UnsignedInteger”>2147952460</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
<ConditionDetection ID=”CDNoTimeOutFailure” TypeID=”System!System.ExpressionFilter”>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type=”UnsignedInteger”>StatusCode</XPathQuery>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type=”UnsignedInteger”>2147952460</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
</MemberModules>
<RegularDetections>
<RegularDetection MonitorTypeStateID=”TimeOutFailure”>
<Node ID=”CDTimeOutFailure”>
<Node ID=”DS1″ />
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID=”NoTimeOutFailure”>
<Node ID=”CDNoTimeOutFailure”>
<Node ID=”DS1″ />
</Node>
</RegularDetection>
</RegularDetections>
</MonitorImplementation>
</UnitMonitorType>

To this:

<UnitMonitorType ID=”TCPPortMonitor.TimeOut.MonitorType” Accessibility=”Public”>
<MonitorTypeStates>
<MonitorTypeState ID=”TimeOutFailure” NoDetection=”false” />
<MonitorTypeState ID=”NoTimeOutFailure” NoDetection=”false” />
</MonitorTypeStates>
<Configuration>
<xsd:element name=”ServerName” type=”xsd:string” />
<xsd:element name=”Port” type=”xsd:int” />
<xsd:element name=”NoOfRetries” type=”xsd:int” />
<xsd:element name=”TimeWindowInSeconds” type=”xsd:int” />
</Configuration>
<MonitorImplementation>
<MemberModules>
<DataSource ID=”DS1″ TypeID=”TCPPortMonitor.TCPPortCheck.DataSource”>
<ServerName>$Config/ServerName$</ServerName>
<Port>$Config/Port$</Port>
<NoOfRetries>$Config/NoOfRetries$</NoOfRetries>
<TimeWindowInSeconds>$Config/TimeWindowInSeconds$</TimeWindowInSeconds>
</DataSource>
<ConditionDetection ID=”CDTimeOutFailure” TypeID=”System!System.ExpressionFilter”>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type=”UnsignedInteger”>StatusCode</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type=”UnsignedInteger”>2147952460</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
<ConditionDetection ID=”CDNoTimeOutFailure” TypeID=”System!System.ExpressionFilter”>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type=”UnsignedInteger”>StatusCode</XPathQuery>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type=”UnsignedInteger”>2147952460</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
</MemberModules>
<RegularDetections>
<RegularDetection MonitorTypeStateID=”TimeOutFailure”>
<Node ID=”CDTimeOutFailure”>
<Node ID=”DS1″ />
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID=”NoTimeOutFailure”>
<Node ID=”CDNoTimeOutFailure”>
<Node ID=”DS1″ />
</Node>
</RegularDetection>
</RegularDetections>
</MonitorImplementation>
</UnitMonitorType>

By changing the monitor types and datasource part of the code, the hardest part is basically done. All we have to do is create 4 monitors and use the proper monitor types. These are the monitors that are included in the management pack:

  • TCP Unreachable Monitor
  • TCP Timeout Monitor
  • DNS Resolution Monitor
  • Connection Refused Monitors.

I have not added any performance collection yet, but will probably add this in a later stage.

Before of after importing the management pack, make sure you still have to follow these steps:

  • A share on which you will place the CSV file. It should be reachable from the management servers and the default management server action account should have access to the share. The discovery runs on an a default interval of  4 hours. The CSV file should look like this (make sure to use a ‘comma’ as your delimiter!):
  • Change the sharename of the discovery by overriding the filepath property in the discovery (TCP Monitoring Class Discovery).
    aa
  • Create views based on the TCP Monitoring Class, as I always use Squared Up instead of the standard scom console, I decided not to include any views in the MP. Here are some screenshots of what it looks like:
    8
    10
    9

Note: this MP only works with 2012 R2, but you can change the references to an older version and it should work as well.

As always, I would recommend to test the management pack before using it. Feel free to comment should you run into any issues. The management pack can be downloaded here

Regards,

Jasper


Squared Up v2.3 – SCOM Dashboards – New features

December 8, 2015

Hello Everyone,

Today I am going to cover the new release of my favourite SCOM dashboarding product Squared Up.
Here are some of the new features, ordered by usefulness:

  • Open Access Dashboards
    This feature replaces read-only dashboards, and its a pretty big deal. Previously you still required SCOM permissions when logging in to read only.
    Open access allows you to share non-interactive dashboards without having to log in, ideal for sharing dashboards on TV’s. These dashboards also do not consume a named user license.
    It is also a great replacement for performance (or availabililty even)reports. As you may or may not know, creating performance reports in SCOM can be a serious pain in the behind, especially for non-scom guru’s.
    Now you can create a performance dashboard quick and easy with squared up (it literally takes 5 minutes for me to create one), and share it with your colleagues. What’s even more convenient is they can access it any time, anywhere,on any platform, and the data is near real time. Compare this to scheduled reports, where you still need to wait for it to be generated, it really is a thing of the past.
    Furthermore, open access dashboards generates a bitmap, which are then updated every 60 seconds automatically. This means that, regardless of how many people are watching the dashboard, they are watching data that is only being queried in the background once, which makes it very scalable!
    So here’s how it works:

    • You create a dashboard in Squared Up (that one is pretty obvious :))
    • As you can see, on the right you have a ‘share’ button as we all recognize from using our smartphones. Click this button to make the dashboard open access.
      ScreenHunter_231 Dec. 08 16.05
    • This gives us the choice to make it open access with or without authentication, and some view options, for fullscreen, embedded functionalities. Click Generate.
      ScreenHunter_232 Dec. 08 16.07
    • Clicking generate will show you the randomly generated URL. Previous dashboards had a certain suffix, which was easy to predict. Open access eliviates this issue.
      ScreenHunter_233 Dec. 08 16.11
    • The dashboards is generated the first time its opened, this takes about 5-10 seconds depending on the amount of data. Afterwards the dashboard will refresh by itself. The timestamp on the dashboard will show this.
      ScreenHunter_234 Dec. 08 16.14.jpg
      ScreenHunter_235 Dec. 08 16.15.jpg
    • That’s it! You can now share this URL with all your colleagues.
  • Colored lines on performance graphs.
    Maybe you’d say, why is this such a big deal? Well it really compliments the open access dashboards. In the previous release, when using the graph in read-only mode, you had no idea which was what because you had no means to hover over performance counters. The colors are also consistent for the whole dashboard, this means that server X for example will have the same color in every graph section.
    By introducing colors, they also introduced a ‘key’, here’s a screenshot to clarify this:
    ScreenHunter_237 Dec. 08 16.19.jpg
    So now open access dashboards have more contextual information of what the graphs represent. Really neat!
    Plus it adds some ‘flair’ to your dashboards :).

    • Other improvements in the performance section are things like being able to choose your resolution (or data aggreggation), for smaller scopes you might want near real time info, whereas for longer periods you would probably want the hourly or daily data. Remember, real time stuff is a lot more costly on the data warehouse. Previously you had no control over this (as far as I knew)
      ScreenHunter_238 Dec. 08 16.21.jpg
    • Here’s a screenshot of the new ‘coloring’ options of the performance sections:
      ScreenHunter_240 Dec. 08 16.26.jpg
  • Next up, the alert section has been revamped. You have a lot more control over how you want to show your alerts.
    • First new options are being able to choose between error, warning and info or any combination of this, previously this was only possible through the use of criteria. This makes the whole process more user friendly.
      ScreenHunter_241 Dec. 08 16.28.jpg
    • The colums section is also new, here you can choose which columns you want to show regarding your alerts, and shuffle them around by using drag and drop.
      ScreenHunter_242 Dec. 08 16.31.jpg
  • Improved installation user experience.
    The installation has been further simplified.To be honest, it was already very easy to install, but they made further improvements regarding this. Setting permissions on the data warehouse is a thing of the past.
    login-setup1.png

    • After installation you are also introduced to a new page, which navigates you to some very useful squaredup resources.
      ScreenHunter_243 Dec. 08 16.37.jpg

Version 2.3 is another step in the right direction to what I consider to be a console replacement. If you haven’t patched yet, you definitely should. It was a very smooth and painless process for me.

Regards,

Jasper


Setting up a high-available SquaredUp webfarm

September 1, 2015

Hello Everyone,

Today I’m going to talk about how to set-up the SquaredUp solution in a high-available manner. SquaredUp is a 3rd party product for SCOM which enables you to visualize your monitoring data on a lightweight HTML5 Website. I really love working with the product, and provides an enormous added value to your SCOM setup.

For more info, check out their website at http://www.squaredup.com

The reason I created this blog post is because SquaredUp has pieces and bits of info on their support page on how to configure SquaredUp load balanced but lacks an overview of how to accomplish this from start to finish. Furthermore some steps are not described on the website, and had to contact squaredup support to get it to work. The version I installed was 2.1.9

Here’s a list of components we’ll use for our setup:

  • 2 Windows Server 2012 R2, these will be used as our webservers.
  • 1 Citrix Netscaler for loadbalancing purposes.
  • 1 NFS share on a fileserver cluster, where we will save our dashboard configuration.
  • 1 service account for our application pool identity (which is the only one we’ll be using throughout the whole guide).
  • 1 A record for our load balanced URL.

A simple drawing of what it looks like:

Visio SquaredUp

How it works:

Web requests are coming in from the loadbalancer via https, the loadbalancer does the SSL offloading and communicates with the SquaredUp web servers via port 80. Both SquaredUp webservers have a domain account as their application pool identity, which is required for single sign on to work, more on SPN’s and constrained delegation later. The webservers have their dashboard configuration stored on the same share, so we always see the same dashboards, regardless of the webserver the loadbalancer redirects us to.
For the share to work, we need to create symbolic links to three folders.

The high level steps of the setup are as follows:

  1. Installing the IIS role on both web servers and creating the IIS website.
  2. Creating the necessary firewall rules.
  3. Running the squaredup setup.
  4. Changing the application pool identity.
  5. Configuring permissions on the SCOM Data Warehouse.
  6. Activating the SquaredUp licenses on both webservers.
  7. Changing the default dashboards location to our network share.
  8. Configure Windows Authentication in IIS
  9. Creating the necessary SPN records
  10. Configuring delegation in Active Directory

1. Installing the IIS role and creating the website

Normally, you can skip this step, but I don’t want SquaredUp to be installed under the default website, so I installed IIS to precreate an IIS website.

  • Open powershell on the webserver as administrator and run the following command:
    install-windowsfeature Web-Server,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Http-Errors,Web-Static-Content,Web-Health,Web-Http-Logging,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Mgmt-Tools,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,NET-Framework-45-ASPNET
  • Create the new SquaredUp website in IIS.
    1
    2
  • Repeat this process for the other webserver as well

2. Install SquaredUp

  • Log on to one of the webserver and open an elevated prompt
  • Execute the following command: (ofcourse, change the EXE if you have a newer version of SquaredUp), this will install SquaredUp under our precreated IIS website.
    SquaredUpInstaller-2.1.9.218.exe –prop.installroot:”C:\inetpub\SquaredUp” –prop.websitename:”SquaredUp”
  • Go through the installer, it is fairly straight forward.
  • When asked for the management server address, use one of the management server addresses, I use webserver 1 with management server1, webserver 2 with management server 2. I tried using a DNS round robin record which refers to both management servers, but with it, I could not get single sign on to work well.
  • Ofcourse, repeat this for the other webserver too

3. Change the application pool identity

  • Create a user account in AD, domain user rights should be sufficient. This account will be used for our application pool identity
  • Log on to the webservers, and open an elevated command prompt
  • Get the SID of the account by running wmic useraccount where (name='<username>’ and domain='<domain>’) get sid. Copy the SID.
  • In the prompt, navigate to C:\inetpub\SquaredUp\SquaredUpv2\Tools 
    Execute the command:
    config.exe applypermissions <SID>
    3
  • Open IIS Manager
  • Click Application Pools -> Right Click SquaredUpV2 -> Select Advanced Settings…
    4
  • Click the next to Identity
    4
  • Select Custom Account -> Click Set…
    5
  • Fill in the username and password and click OK

4. Configuring the permissions on the Data Warehouse

  • Open a SQL Management studio and connect to the instance where your Data warehouse is located.
    Create a new login…, assign the service account of the application pool identity.
    6
  • At user mapping, select your SCOM data warehousedatabase and give the user OpsMgrReader rights.
    7

5. Activating the SquaredUp licenses on both webservers

Our webservers could not reach the internet, so in this tutorial I had to manually install the licenses.

  • Browse to C:\inetpub\SquaredUp\SquaredUpv2\tools
  • Run Microsoft.Licensing.LicAdmin.exe
  • On the File menu, select Activation Wizard…
    8
  • Select I want to request a license file
    9
  • Enter the activation key
    10
  • Copy to clipboard -> Click Finish
    11
  • Open a browser on your client and go to http://squaredup.com/manual-activation/
    Fill in your email, squaredup key and the activation request from the previous step and an e-mail will be sent with a .txt file
  • Save the attachment from the e-mail and change the rename_me.txt to license.bin
  • Log on to your primary webserver and open the licadmin.exe tool again. Click Open
    12
  • Navigate to the copied .bin file from the email attachment and click Open
  • The license is now installed, repeat this process for the secondary webserver as well.
  • Open IIS Manager again. Navigate to Sites -> SquaredUp -> SquaredUp -> Application Settings.
  • Fill in License-server-name and fill in the FQDN of the primary server12
  • Recycle the application pool on both webservers for the license to work.

6. Add firewall rules

Make sure to allow inbound TCP Port 80 on the windows firewall. You can easily configure this by running the following powershell command on both webservers:

  • New-NetFirewallRule -DisplayName “SquaredUp WebSite” -Direction Inbound –LocalPort 80 -Protocol TCP -Action Allow –profile “Domain”

Or you could only allow the loadbalancer IP’s to allow incoming port 80 requests, that is up to you to decide.


7. Change the dashboard configuration location to a network share

  • Create a share, preferably clustered, and give the application pool identity user account full permissions on this share.
  • Log on to the webserver.
  • Navigate to C:\inetpub\SquaredUp\SquaredUpv2
  • Move the folders Configuration, UserContentStorage and Userprofiles to your share.
  • Open an elevated prompt and create the symbolic links as follows:
    mklink /D “C:\inetpub\SquaredUp\SquaredUpv2\Configuration” \\<share>\Configuration
    mklink /D “C:\inetpub\SquaredUp\SquaredUpv2\UserContentStorage” \\<share>\UserContentStorage
    mklink /D “C:\inetpub\SquaredUp\SquaredUpv2\UserProfiles” \\<share>\UserProfiles
  • Repeat this for the other webserver as well.

8. Configure Windows Authentication in IIS

  • Open IIS manager on the first webserver
  • In the left pane : select the Website where Squared Up is installed and select the Squared Up application
    13
  • Click Authentication in the right hand pane
    14
  • Disable all authentication methods except Windows Authentication15
  • Right Click Windows Authentication and choose Advanced Settings
  • Turn off extended protection and Enable kernel-mode authentication. Ensure negotiate is above NTLM
    15
  • Go to Sites -> SquaredUp -> Click the Configuration Editor
    16
  • Fill in section: system.webServer/security/authentication/windowsAuthentication
    17
  • Set UseAppPoolCredentials to true
  • On the right hand side click Apply
    16
  • Open an elevated command prompt, run c:\inetpub\wwwroot\squaredupv2\tools\config.exe windows
  • Repeat this for the other web server as well

9. Create SPN Records

  • Open an elevated command prompt on a webserver (can be any domain joined server really), this requires domain admin rights.
  • run the following commands:
    setspn -s HTTP/<NETBIOSNAMEWEBSERVER1> <SERVICEACCOUNTAPPLICATIONPOOL>
    setspn -s HTTP/<NETBIOSNAMEWEBSERVER2> <SERVICEACCOUNTAPPLICATIONPOOL>
    setspn -s HTTP/<FQDNWEBSERVER1> <SERVICEACCOUNTAPPLICATIONPOOL>
    setspn -s HTTP/<FQDNWEBSERVER2> <SERVICEACCOUNTAPPLICATIONPOOL>
    setspn -s HTTP/<LOADBALANCEDURL>:443 <SERVICEACCOUNTAPPLICATIONPOOL>
    Examples to clarify:
    setspn -s HTTP/webserver1.contoso.local contoso\squaredup_webaccount
    setspn -s HTTP/webserver2.contoso.local contoso\squaredup_webaccount
    setspn -s HTTP/webserver1 contoso\squaredup_webaccount
    setspn -s HTTP/webserver2 contoso\squaredup_webaccount
    setspn -s HTTP/squaredup.contoso.com:443 contoso\squaredup_webaccount

10. Configure delegation in Active Directory Users and Computers

  • Open Active Directory Users And Computers
  • Search for our application pool user account, right click it and open the Properties. Click the tab delegation17
  • Click Trust this user for delegation for specified services only, and click Add.
    Select the MSOMSdkSvc service type, it should have the management server names next to them. Add all SCOM Management servers that the SquaredUp webservice will connect to (as described in step 2, during the installation of SquaredUp). It should look something like this:
    18

That should wrap up the installation, the part of the load balancer is not described as this was not done by myself, but this is fairly straightforward.

Some things to take into consideration when upgrading to a newer version:

  • You will have to recreate the symbolic links, as the installer creates new local directories.
  • You will have to reapply security on the SquaredUp folders, as described in step 3, with the config.exe command.
  • If you are running into a permission issue during the logon, try giving the service accounts rights within SCOM, but this should not be needed.

Should you run into some issues, feel free to leave a comment!

Kind regards,

Jasper


SCOM – Topology widget blank issue

April 13, 2015

Hey everyone,

Today I would like to share an issue with the Topology widget in SCOM. The topology widget allows us to upload a background image in SCOM and drop monitoring objects on them. It allows us to create some cool custom dashboards, for example:

PICRPT08

The issue that I was experiencing was that on some computers, the background image of the widget popped up, and then suddenly disappeared, resulting in a blank dashboard without any monitoring objects. This occurs in both the web and operations console.

I have had issues with displaynames and regional settings before in management packs I created and I figured this had to be something similar. First thing I did was export the XML of the dashboard and change from  to , this sometimes resolves some displaynames issues (for distributed applications in reports for example). This did not fix my issue however.
SCOM sets this value default to “False” as I assume it looks to the regional settings of the computer you are creating the management pack on, however I am not sure of this.

When I started comparing settings between a working computer and a not working computer I saw some differences in the regional settings. The computer where the dashboard was not working had its system locale set to Dutch (Belgium).

To resolve this, simply change the system locale to English (United States) in your regional settings where you are viewing the dashboard. Changing this setting does require a reboot.

PICRPT10

Kind regards,

Jasper

Update: this issue has been resolved in 2012 UR6! Here’s the snippet from the patch notes.

  • Topology widget objects lose location when they are opened in a console that has a different locale and decimal format
    Topology widgets that are created in one locale but are viewed from another locale display an incorrect location because of the widget’s inability to interpret locale-specific formatting. This issue is fixed, and users can now create and view topology widgets from different locales.

Error 1639 during SCOM reporting installation

March 26, 2015

Hello Everyone,

A few weeks ago I experienced a bizarre issue during the installation of the SCOM reporting component. It kept rolling back the installation. When I took a closer look in the installation logs(default location: %systemdrive%\Users\%username%\Appdata\Local\SCOM\Logs) I noticed the last error before rollback was ‘Error 1639 Invalid Command Line Argument‘. This was strange because the wizard validated all my data throughout the steps. The next step I took was to install the reporting component through command line, however the same issue occurred: Invalid Command Line Argument.

After further analyzing the logs and comparing it with a successful installation log I noticed that the installer was unable to read the location of the data warehouse instance. First I thought it was an issue with security, but everything seemed to be fine in that regard.
I was unsure of where the installation took the data of the data warehouse location, as this was not a parameter that could be defined during installation. So I figured this had to be something that was read from the OperationsManager database. This reminded me that the port of the SCOM SQL instance was changed from dynamic to static a few days before.

This technet article describes what configuration changes are required for SCOM to work on a fixed port. The article requires you to change some DB records, one of which is the Data Warehouse location.

I knew of at least one mistake in this article. The table dbo.MT_DataWarehouse in which we need to change the record is not correct in most cases. This table only exists in SCOM 2007 or when you upgraded your SCOM environment from 2007 to 2012 for example. On a clean installation of SCOM 2012 and higher however, this table has been renamed to MT_Microsoft$SystemCenter$DataWarehouse.

1

But then I noticed another mistake in this article.

The article describes to change the DB record in this table from computer\INSTANCE1 to computer\INSTANCE1, <port>.
Notice the space between the comma and <PORT>.

PICRPT05
I assume when this record is read during setup, the space causes the port to be seen as an additional command line parameter. When I removed the space from the records the reporting installation completed successfuly.
PICRPT06

Hope this post helps some people out there!

Jasper