Kevin Holman's System Center Blog

Posts in this blog are provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified in the Terms of UseAre you interested in having a dedicated engineer that will be your Mic

Why do my reports show no data?

Why do my reports show no data?

  • Comments 5
  • Likes

Often times.... I hear about reports not showing any data.  Especially ad-hoc performance reports.

When we run a report – we have to run the report against the same object type (class) that the data was collected from.

The problem is – “how do you know what object type that was???”  This is a common issue, and makes reporting, while rich, very painful at first.

The best answer – is to search for the rule collecting the performance data, and find out what object it is targeting, then try and include that object in the report.  This is often difficult to find….. and does not explain why this report works from the monitoring console, but not from the generic report library.

Here is why:  I will use a simple perf counter of "Processor %Processor Time"

When you ran that report from the monitoring console – it automatically chose the Windows Computer object as the report target – but it added it “as a group” instead of “as an object”.  We know this – because the “include” shows “all contained objects”.

clip_image001

When you are running a report manually – from the generic report library – you add the same Windows Computer object.  And you click “Add Object” because that makes the most sense.  However – you get no data returned.

This is simply because the rule you are looking for “Processor % Processor Time Total” is targeting a "Windows Operating System" class – not the Windows Computer.  When you add the Windows Computer abject as a group, it adds the Windows Computer object, and ALL contained objects.  The OS is a child object of the Windows Computer.  If you look at a management pack guide - you will often see that most classes in a MP have a child relationship to the Windows Computer (or Windows Server) object class:

image

To make this a little easier to understand – when you run the report from the monitoring console (and get the data) – we actually show you the object instance that returned data:

clip_image003

This is the report from the console – see how it shows “Windows Operating System” and then the instance of it?  This is the object you would need to pick to get data back.

So – in general – when creating ad-hoc reports – always try adding the Windows Computer object – as a group – and see if that is successful for you.  As long as the object you are looking for is a child of the Windows Computer – it should work.  If it doesn't - then spend a little time searching for the rule that collects the perf counter, and see what object it is targeting.  Either target that specific object instance, or a class that is a parent, and add it "as a group".

Comments
  •   I was following a MyItforum thread this morning and hapenned on a discussion on performance reporting

  • http://blogs.technet.com/kevinholman/archive/2008/04/21/why-do-my-reports-show-no-data.aspx

  •   I was following a MyItforum thread this morning and hapenned on a discussion on performance reporting

  • I have an issue at the moment where my reports do not return any results for any date after 02 september 09. if I run the same report and change the date to anytime in August I get a full report. It seems to be a problem with performance reports.Any ideas?

  • Hi Kevin,

    I have installed SCOM 2007 R2 with cu5 but after configuring a network monitoring feature with XSNMP MP and suddenly my reporting hierarchy got failed it is giving me error.

    Note:  The following information was gathered when the operation was attempted.  The information may appear cryptic but provides context for the error.  The application will continue to run.

    System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

      at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)

      at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)

      at System.Threading.ExecutionContext.runTryCode(Object userData)

      at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)

      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

      at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)

      at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)

      at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)

      at System.Net.ConnectStream.WriteHeaders(Boolean async)

      --- End of inner exception stack trace ---

      at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)

      at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)

      at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

      at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.ReportingService.ReportingService2005.ListChildren(String Item, Boolean Recursive)

      at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.ManagementGroupReportFolder.GetSubfolders(Boolean includeHidden)

      at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.WunderBar.ReportingPage.LoadReportingSubtree(TreeNode node, ManagementGroupReportFolder folder)

      at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.WunderBar.ReportingPage.LoadReportingTree(ManagementGroupReportFolder folder)

      at Microsoft.EnterpriseManagement.Mom.Internal.UI.Reporting.WunderBar.ReportingPage.LoadReportingTreeJob(Object sender, ConsoleJobEventArgs args)

    System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

      at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)

      at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)

      at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)

      at System.Threading.ExecutionContext.runTryCode(Object userData)

      at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)

      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

      at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)

      at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)

      at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)

      at System.Net.ConnectStream.WriteHeaders(Boolean async)

    Need your help.

    Regards,

    AnshumanV

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
Search Blogs