Veeam released an updated to their awesome free reports MP get it here
I’ve made some amendments to the Database Status Report that I posted about in 2015, Version 4 is now more streamlined and cleaner.
Sample screenshot:
Feel free to contact me for information on this report or the questions about the RDL.
I would be interested to hear from anyone who has any comments or suggestions on this report or ideas for future ones.
Just the thing you want to see on a Monday morning, clicking on the Reports node and seeing the following error:
Message: Report subscription list could not be loaded.
System.InvalidOperationException: Client found response content type of ”, but expected ‘text/xml’.
The request failed with an empty response.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.ReportingService.ReportingService2005.ListSubscriptions(String Report, String Owner)
at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.ManagementGroupReporting.GetSubscriptions(String owner)
at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.Views.ReportSubscriptionsView.ReportSubscriptionsView.LoadSubscriptionsJob(Object sender, ConsoleJobEventArgs args)
An investigation determined that the reporting services action account needed to be re-registered to the ASP.NET IIS framework using the following command.
aspnet_regiis -ga <Domain\reporting services action account>
Last month I blogged about a SCOM Database Status Report that I was working on in order to get a single page overview of the SQL environment for a SCOM implementation, as a starting point to a complete SCOM heath report.
Below are samples of version 3 of the report which now includes additional sections for the OperationsManager database as well as the Data Warehouse. I have also amended some of the colouring to make important aspects easier to identify.
I would be interested to hear from anyone who has any comments or suggestions on this report or ideas for future ones.
I’ve been tinkering with trying to get a single health view for one of my clients SCOM environments.
I started with the SQL instance as this can be intensive to manually check every component.
Here is a sample of what it looks like so far my next step is to add free space information:
Thanks to Dave Pinal for his post giving me a starting point.
Please leave a comment if you have any suggestions as to what else can be added or if you have something similar.
Veeam recently released the v7 R2 version of their System Center Management Pack.
Go here for more information, a free trial and pricing.
This update looks to be a nice step forward in terms of functionality and visibility of the virtual layer, which can be neglected when monitoring an environment.
New in this version:
New in v7 R2, if you have System Center agents on any VMs, you’ll be able to drill down in two directions for both app-to-metal and metal-to-app visibility. You can quickly identify apps being monitored on a specific VM to find services and applications that will be affected by compute, storage and networking problems. And you can navigate a topology tree to locate the host for a specific VM to see if there are any problems occurring below this level―whether in that specific VM, other VMs, host hardware or elsewhere.
Veeam has released a new version of their popular Report Library for System Center, this version, 7.0 R2 follows the release of the hyper-v enabled Veeam Management Pack v7 for System Center and is available for download here.
A new free eBook has been released about Extending Operations Manager Reporting, it is available for download here.
The System Center Operations Manager data warehouse stores many objects, making it
possible to report on performance, availability, configuration, and security. You can use data
collected by Operations Manager for issue tracking, awareness, planning, and forecasting, all of
which are important factors for maintaining and managing your environment. But
understanding what to report on and how to do so is what actually contributes to the stability
of your infrastructure. If you’re not using the data you collect about your environment, you’re
simply wasting space. If you use Operations Manager to monitor your environment, whether
your infrastructure or a public, private, or hybrid cloud, this book is a good resource to help
you understand the basics of reporting and how to build queries and stored procedures for
your reports. It can also help you understand the various elements of Operations Manager
management packs that are used when you create reports.
This book assumes that you have a good understanding of Operations Manager and the
management pack structure required to create custom reports. It also assumes that you have a
good working knowledge of SQL Server and tools like Report Builder, Business Intelligence
Development Suite, and SQL Server Data Tools.
One of my customers still running SCOM 2007 R2 asked if it would be possible to monitor the availability of their 3 sites so that they could track any outages during the month. The below will also work with SCOM 2012.
Each site has a primary and backup connection and the site is only unavailable if both links fail.
First with the network teams assistance I identified and discovered the Routers and Interfaces responsible for the line connections into each of the sites. Then I create a distributed application for each specific site:
Scope your container to Device
Search for the site routers discovered earlier and add them to the container.
Save and open Configure Health Rollup
Now because the site is only unavailable in the event of both links failing, set the Health Rollup to “Best Health State of any Member” this will ensure that the DA stays green if even 1 Router is still contactable.
Below is what you will see in your Distributed Application view.
Here is a sample of an availability report using the DA for a particular site.
Happy SCOMing.
If you have another way of achieving this result, I’d be interested to hear about it, drop me a mail or leave a comment.
Sometimes you might have a situation where all of your agents are showing as healthy in the console but when you try and draw a performance report data is missing.
The below SQL query which has been developed by my colleague Gerrie Louw will identify any agent that has not submitted performance data in the past 4 hours. It does so by checking the following performance counters:
Processor > % Processor Time
LogicalDisk > % Free Space > C:
Memory > Available MBytes
Note: You will probably have to change the DisplayName_ and IsVirtualNode for your OperationsManager database.
if object_id(‘tempdb..#temptable’) IS NOT NULL
DROP TABLE #temptable
SELECT distinct bmetarget.Name into #temptable
FROM OperationsManager.dbo.BaseManagedEntity AS BMESource WITH (nolock) INNER JOIN
OperationsManager.dbo.Relationship AS R WITH (nolock) ON
R.SourceEntityId = BMESource.BaseManagedEntityId INNER JOIN
OperationsManager.dbo.BaseManagedEntity AS BMETarget WITH (nolock) ON
R.TargetEntityId = BMETarget.BaseManagedEntityId inner join mtv_computer d on bmetarget.name=d.[DisplayName_55270A70_AC47_C853_C617_236B0CFF9B4C]
and d.IsVirtualNode_E817D034_02E8_294C_3509_01CA25481689 is null
WHERE (bmetarget.fullname like ‘Microsoft.Windows.Computer%’)
if object_id(‘tempdb..#healthstate’) IS NOT NULL
DROP TABLE #healthstate
select megv.path, megv.ismanaged, megv.isavailable, megv.healthstate into #healthstate
from managedentitygenericview as megv with (nolock) inner join managedtypeview as mtv with (nolock)
on megv.monitoringclassid=mtv.id
where mtv.name =’microsoft.systemcenter.agent’
if object_id(‘tempdb..#perfcpudata’) IS NOT NULL
DROP TABLE #perfcpudata
select Path, ‘CPU’ as ‘Cat’ into #perfcpudata
from PerformanceDataAllView pdv with (NOLOCK)
inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid
inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId
where (TimeSampled < GETUTCDATE() AND TimeSampled > DATEADD(MINUTE,-240, GETUTCDATE()))
and objectname =’Processor’ and countername=’% Processor Time’
if object_id(‘tempdb..#perfmemdata’) IS NOT NULL
DROP TABLE #perfmemdata
select Path,’Memory’ as ‘Cat’ into #perfmemdata
from PerformanceDataAllView pdv with (NOLOCK)
inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid
inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId
where (TimeSampled < GETUTCDATE() AND TimeSampled > DATEADD(MINUTE,-240, GETUTCDATE()))
and objectname =’Memory’ and countername=’Available MBytes’
if object_id(‘tempdb..#perfdiskdata’) IS NOT NULL
DROP TABLE #perfdiskdata
select Path,’Disk’ as ‘Cat’ into #perfdiskdata
from PerformanceDataAllView pdv with (NOLOCK)
inner join PerformanceCounterView pcv on pdv.performancesourceinternalid = pcv.performancesourceinternalid
inner join BaseManagedEntity bme on pcv.ManagedEntityId = bme.BaseManagedEntityId
where (TimeSampled < GETUTCDATE() AND TimeSampled > DATEADD(MINUTE,-240, GETUTCDATE()))
and objectname =’LogicalDisk’ and countername=’% Free Space’ and instancename=’C:’
if object_id(‘tempdb..#temptable1′) IS NOT NULL
DROP TABLE #temptable1
create table #temptable1 (
name nvarchar(250),
cat nvarchar(20),
val nvarchar(2)
)
insert into #temptable1
select name, ‘CPU’ as ‘cat’, ’1′ as ‘val’
from #temptable where name not in
(select path from #perfcpudata)
insert into #temptable1
select name, ‘Memory’ as ‘cat’, ’1′ as ‘val’
from #temptable where name not in
(select path from #perfmemdata)
insert into #temptable1
select name, ‘Disk’ as ‘cat’, ’1′ as ‘val’
from #temptable where name not in
(select path from #perfdiskdata)
if object_id(‘tempdb..#output’) IS NOT NULL
DROP TABLE #output
create table #output (
name nvarchar(250),
cpu nvarchar(2),
memory nvarchar(2),
disk nvarchar(2)
)
insert into #output
select distinct tt.name ,’0′,’0′,’0′
from #temptable1 as tt, #healthstate as hs
where tt.name=hs.path collate SQL_Latin1_General_CP1_CI_AS
and hs.isavailable=1
and hs.ismanaged=1
and hs.healthstate is not null
update #output set cpu=1 where #output.name in (select name from #temptable1 where #temptable1.name=#output.name and #temptable1.cat=’CPU’)
update #output set memory=1 where #output.name in (select name from #temptable1 where #temptable1.name=#output.name and #temptable1.cat=’Memory’)
update #output set disk=1 where #output.name in (select name from #temptable1 where #temptable1.name=#output.name and #temptable1.cat=’Disk’)
select * from #output
You can use this query to build a report such as the one sampled below: