One of the things I constantly get asked about is how to create Performance Reports in SCOM. The truth is its really simple, so I’d guess that a lot of you reading this post will know the basics already. But for those of you new to Reporting, read on and hopefully this will be the definitive guide to answering your questions and get you into building some quick and easy reports.
Since we’re talking about Performance Reports, you’re going to need to be capturing the Performance Data. After all, if your Data Warehouse DB doesn’t contain the data then your reports are going to be blank.
So let’s start there.
My Example Report
To keep this post on track and as easy to follow as possible, let’s assume we’ve been asked to collect 2 performance collection counters for a group of servers. I’m going to use my Citrix Provisioning Servers as an example. I’m going to collect 2 counters…
- Copy Reads Hits %
- IO Data Operations (for the StreamProcess Process)
And I’m going to collect these 2 performance counters for a group of Provisioning Servers. Now there’s plenty of ways to effectively target servers but for the purposes of this post I will simply create a group, explicitly add my provisioning servers to that group and override my performance collections rules (which will be disabled by default) to be enabled for this group. I might reconsider this approach in the real world depending on the SCOM environment, but it’ll work fine for most deployments.
So the steps I’ll perform are as follows:
- Create a Group called “Citrix Provisioning Servers” and populate it with the Provisioning Servers Windows Computer Object
- Create the Performance Collection Rules (and have them disabled by default)
- Override the Rules to enabled for the “Citrix Provisioning Servers” group
- Create a Report to display these Performance Collection Rules.
- Optionally, create a Dashboard to display these values in the console
Clearly we’ve got a bit to do, but its quite easy work…so let’s get cracking.
Create a Group
In the SCOM Console we’ll choose the “Authoring” window and select Groups.
In the actions pane we’ll choose “Create a New Group”.
This starts up the “Create Group Wizard”, we’ll first need to enter in a name for our group, along with a good description and finally choose which Management Pack we’ll save our group to.
For the Management Pack, I’ll create a new one so I’ll click “New” and we’ll enter in a Name and Description for this Management Pack and click “Next”.
Now we’ll optionally add in a Knowledge Article here or we can do it in XML by following my steps outlined in this post: How to insert Knowledge into a SCOM Management Pack. I’ll skip it for this post and click “Create”.
Now our Management Pack drop down window has been populated with our new MP name, we’ll click “Next”.
We have the option of using Explicit Members or Dynamic Members in our Groups and for this exercise I’ll use explicit ones. The general consensus is that using explicit membership creates less overhead for group calculations so it’s less resource intensive. Dynamic membership offers the advantage of automatically updating the group as objects that match your inclusion criteria are added or removed from your Management Group. Anyway, that’s for another discussion, so I’m going with Explicit and click the “Add/Remove Objects” button.
Now we’ll type in the name of our server or servers we wish to add and click “Search”. Once we’ve located the correct object we’ll click “Add” and we’ll see them listed under the “Selected Objects” section.
Once you’re done, click “OK”.
You’ll see all of the objects you’ve added in the “Group Members” window. We’ll click “Next”.
Here we can use Dynamic Members and I’ve already touched on why you might like to use them. In case you’re thinking along these lines then to add in Dynamic Members you’ll follow similar steps. Click the “Create/Edit rules…” button.
And enter in your criteria. Here I’ve added in a basic regular expression that matches a Windows Computer object with a case insensitive Principal Name (hostname) of anything that starts with “provserver”. So this would match “Provserver1”, “provserver1”, “PROVSEVER1”, “PrOVserver595” and so on.
Next we can include Subgroups inside this group if we like. I’m not going to do that, I’ll click “Next”.
We can also Exclude Members from our group. Not really necessary if we’re working with explicit members because we choose what we want to add to our group. But if your regex picks up servers that you don’t want to include, you can add those servers or objects into this window and have them excluded.
We’re done, we’ll click “Create”.
If you chose to use Dynamic Members then it’d be a good idea before you get going to ensure that your Regex was correct and the group has been populated before moving forward, otherwise none of counters will run against the correct machines.
Just select the group and choose “View Group Members”.
If you don’t see your servers/objects listed then check your regex is correct or those machines are in fact discovered.
Creating Performance Collection Rules
The next step in our plan is to create the performance collection rules that will be responsible for collecting the performance data. Obviously if its a common counter like disk or cpu or network activity then you might find those already being collected. Since the counters I chose for this example are a little more obscure then they probably aren’t being collected. Either way, its a good idea to check that you aren’t already collecting them.
So we’ll need to create a new Performance Collection Rule for each counter we wish to collect. If we want to alert on them then that’s a different story, we’d need to create a monitor there…but for this post we’re only collecting data for reporting.
In the Authoring Window, we’ll right click “Rules” and choose “Create a new rule…”.
We’ll first need to choose what type of Rule we want to create. I’ll choose a “Collection Rule” and select “Windows Performance”. Under the Management Pack drop down box I’ll choose the MP I created earlier when I created the Group. Then I’ll click “Next”.
We’ll then need to give our Rule a Name and a Description and we’ll leave the Rule Category at a Performance Collection.
We’ll then need to choose a Rule target. Often I see people on the internet or even in person asking can I target this at a group? The answer is yes, but no. Yes you can target a group, but no, it won’t work as expected.
If you target the group, then you’ll be attempting to grab this performance data from the group itself which is a singleton class that exists only on your Management Server. Instead we need to target a class like Windows Computer or something more specific.
So for my target I’ll type in Citrix Computer to be a little more granular.
Now we can see my settings, the final thing I want to do is disable this rule by default by unchecking the “Rule is enabled” checkbox that way it won’t immediately go off trying to collect this data from every discovered instance of Citrix Computer.
Now we’ll click “Next” and we’ll need to specify the performance counter we wish to collect.
Since the this window defaults to my local server, in other words my SCOM Management Server, I’ll need to either know exactly what to type in here to choose the correct performance counter, or we’ll have to connect to our server that does have the counters.
In my example I’m trying to find things specific to my Citrix Servers so it’s probably easier to connect to one of them. So we’ll click the “Select” button and type in the name of the server we wish to connect to.
We’ll then locate the Object (in my example the first perf object is cache). Then select the counter from the list.
Now the information is filled it. Again, we could have simply written in the correct values if we knew them, but its probably easier to connect to the target computer and avoid any typos.
Finally we can set the collection interval from it’s default of 15 minutes to anything we like. I’ll set mine to a lower value to make for a bit more accuracy in my reports but we can change this if we like later on via an override…but its best to set the value right the first time if you can.
The final step is to configure Optimization. If you want to reduce the amount of database instance space you can choose to collect values based on how much the data has changed. I’m not going to worry about this for now, I’ll choose “Create”.
Ok that’s it, simply repeat that process for the second performance collection rule or any other ones you want to create. I’ll move onto the next step which is to turn this rule on, but only for members of our group.
Override the Rules
Now that our rule or rules have been created, let’s turn them on so they can start collecting data.
So in our SCOM Console we’ll locate our new rule and right click it and choose “Overrides –> Override the Rule –> For a group…”.
We’ll type in the name of the group and select it and click “OK”.
Finally we will set this override to Enabled = True and I’m also going to set the collection interval to 60 seconds to make things quicker in my lab, again in the real world you’ll want to decide on what performance collection frequency is best for you.
Right, that’s done…remember to do this for each Performance Rule you want to be enabled.
Create a Report
Ok it’s time to create a Report. Let’s click “Reporting”.
We’ll choose “Microsoft Generic Report Library” and select a “Performance” report then click “Open”.
This starts us off with a blank report window. Click the “Change” button.
Since our report is blank we’ll need to add either a New Chart or a New Series. In fact, we’ll need to add both. If we click “New Series” it’ll add in a new chart anyway. So what’s the difference?
A New Chart adds in a new chart or a graph to our report.
A New Series adds a new object to an existing chart/graph.
I’m going to click “New Chart”.
In the “Chart title” field give the chart a name. So remember, this Chart is in fact a Graph that will appear on our report. If we wanted to add more than one graph to our report, we can just click “New Chart” again. But first things first, let’s create one.
Now we’ll click “New Series” this is where we’ll add objects to our Chart. Note that our chart has defaulted to a Light Blue colour and using a Line Graph. Using the options I’ve highlighted we can change those to different colours or a different style of graph such as a column or area graph.
Now we need to choose objects to add to our group and this is where things can get tricky. It really depends on what class the object you want to add has been targeted at. Remember we chose Citrix Computer as the class for our Rule. We could have easily chosen a parent class of Windows Computer. If you don’t know the correct class and you choose the wrong one you’ll find that your reports are blank. Rather than go into too much detail, here’s a great post from Kevin Holman explaining why this is the case…please read it.
So if you aren’t completely sure what class the data is targeted at, let’s choose “Add Group”.
Locate the Windows Computer object for the server we wish to add and select it from the “Available items” window. Click “Add” so it appears in the “Selected objects” window. Then click “OK”.
Now we can see our Computer Object is listed in our Series with the Light Blue colour.
Now we’ll need to choose which Rule we want to show data for. We’ll click “Browse”.
And we’ll locate the Performance Collection Rule we created earlier.
So what we have now is actually a completed report. It will only show 1 server and 1 performance collection rule but its ready to go.
But let’s add in our second server. We’ll click the “New Series” button as this will allow us to add a new line to our chart. This time, it defaults to a Dark Green colour (which we can of course change).
We’ll locate our second computer just like we did before and assign it a rule. Now we have both servers added they will display the same rule’s data but be shown in different colours. We can now click “OK” and then run our report.
And here we can see our Finished Report which we can export to a PDF and email it and so forth.
But let’s take this one step further. Let’s add a New Chart to our report. We’ll click the Show/Hide button to bring back our controls for our report.
We’ll click the “Change” button.
We’ll click the “New Chart” button and give the “Chart title” field a value.
Then we’ll follow the same steps as before. We’ll add in a Group Object and find our Servers. Then we’ll locate the appropriate Counter. This time we’ll use the IO Data Operations (StreamProcess) counter.
There’s the first server added.
And now the second one. Notice how we’re building our report…we have two charts, each with two series.
Let’s run the report. This time we have 2 pages in our report.
And here’s the second page.
The final step is to save our report to a Management Pack once we’re happy with it. This way we can run it whenever we like or even schedule it to be run as often as we like. We’ll click the “File” menu and choose “Save to management pack…”.
We’ll give the report a name and a description and select which Management pack to save it to.
That’s it. But the final thing I do want to point out is that if you decide to come back and change this report in any way you can choose the “Publish…” option to save the report. Just remember that first you must run the report before you choose this option otherwise any changes you make will be lost. So make your changes, “RUN IT” then choose Publish. If you don’t run it first it won’t save any changes…just a little gotcha to be aware of.
And if you choose to “Publish…” your reports you can change the name and description or just click “OK”.
Well done, you’ve just built a report with 2 charts and 2 series each!
Create a Dashboard
The last thing I wanted to touch on in this post is creating a Dashboard view to visualize this data in the console.
When we created our MP back in our “Creating the Group” section, it also created a folder on our Monitoring Window. We’ll use that to create a new dashboard. So we’ll right click on our folder and choose “New –> Dashboard View”.
Then I’ll choose a “Grid Layout”.
Then I’ll give it a name and of course, a description.
Then we’ll choose a layout…or in other words…how many widgets do we want to display?
I’m going to choose a 4 Cell layout here. Now I could have chosen a 2 cell layout and later on when I populate the widgets target my “Citrix Provisioning Servers” group, but that will add both servers to the same graph. Instead to make this a little clearer since I have only 2 servers, I’m going to choose a 4 cell layout and target each server individually. I think it makes the graph much cleaner. Either will work, you just go with whatever looks and works best for you.
Finally click the “Create” button.
And we’re done.
Well we’re not really done. We’ve created the Dashboard but there’s nothing in it. Let’s fix that because right now we have a window that’s waiting for us to populate it with widgets.
So we’ll click the blue hyperlink “Click to add widget”.
Let’s choose a Performance Widget and click “Next”.
Enter in a Name and a Description for the Widget.
Then we’ll need to choose the Scope and Counters. Or in other words, select the target and the performance counter or counters. In my example I am targeting a server object because I only want a single servers data appearing in my Dashboard Performance Graph. I could easily target a group of servers here if I wanted all of them to appear in the same graph.
I’ll click “Add” and locate the Performance Counter I wish to add.
Then we’ll choose a time range. 24 Hours is the default, but you might like to show only an hour or two.
Finally we’ll need to choose what values we’ll show in our graph. For this widget I’m showing Target, Last Value and the Performance Counter.
Here’s how those values would map to a graph.
And we’re done…simply complete those same steps for any remaining widgets and you should be left with a Dashboard View that looks like this. Very useful.
Its been a big post and a lot of screenshots, but from start to finish we’ve seen how to build a group, collect data, build reports and display a dashboard. Have fun building your own!