Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
4Eric
Frequent Visitor

Report Server Monitoring

I am working on a report to monitor certain things on the Power BI report Server.  I was wondering what items others may be monitoring on reports.  I am willing to share what I have done so far.  

 

Listed below are the items I am currently monitoring:

 

A.  Whether the scheduled data refreshes failed or succeeded. 

          a.  Would love to be able to get the failure message.

B.  What is the average response time of a query.

          a.  Is there a way to determine when the report is first opened.  I would like to calculate initial load time.

C.  What was the longest response time of a query per day.

D.  How many times a query took longer than 5 seconds.

 

3 REPLIES 3
mpsrshl
Advocate II
Advocate II

Hey there, 

 

There are several queries on the web that will help you combine all that static analytics. Depending on the tool you use to report themout, you may end up creating a virtual dimensional model. I have twicked some from the web to do my bit of report tracking i hope it helps.

 

 

 

Subscription tracking query (what's missing can be collected and staged from the logfiles, something I have not worked on yet) : 


select
convert(varchar(1000),case
when Cat.Type = 13 then 'Hyperlink to dashboard'
else 'Hyperlink to Paginated reports'
end) collate Latin1_General_CI_AS as RootPath ,
convert(varchar(1000),CAT.[Path]) collate Latin1_General_CI_AS as Path,
CAT.Name,
S.[SubscriptionID],
S.[Report_OID],
S.[DeliveryExtension],
S.[ExtensionSettings],
Owner.[UserName] as OwnedBy,
Modified.[UserName] as ModifiedBy,
S.[ModifiedDate],
S.[Description],
case when left(S.[LastStatus],9) = 'Completed' then 'Y' else 'N' end as IsRefreshSuccessful,
S.[LastStatus],
S.[EventType],
S.[Parameters],
S.[DataSettings],
A.[TotalNotifications],
A.[TotalSuccesses],
A.[TotalFailures],
S.[LastRunTime],
CAT.[Type]
from
ReportServer.dbo.[Subscriptions] S
inner join ReportServer.dbo.[Catalog] CAT on S.[Report_OID] = CAT.[ItemID]
inner join ReportServer.dbo.[Users] Owner on S.OwnerID = Owner.UserID
inner join ReportServer.dbo.[Users] Modified on S.ModifiedByID = Modified.UserID
left outer join ReportServer.dbo.[SecData] SD on CAT.[PolicyID] = SD.[PolicyID] AND SD.AuthType = Owner.AuthType
left outer join ReportServer.dbo.[ActiveSubscriptions] A with (NOLOCK)
on S.[SubscriptionID] = A.[SubscriptionID]
where
(S.[ReportZone] = 0)
and (S.[EventType] = 'RefreshCache'
OR S.[EventType] = 'DataModelRefresh' )

 

 

 

Report Stats:

 

 

 

with ExecutionLog3Marce
as
(
SELECT
c.itemid,
c.Name as ReportName,
InstanceName,
COALESCE(CASE(ReportAction)
WHEN 11 THEN AdditionalInfo.value('(AdditionalInfo/SourceReportUri)[1]', 'nvarchar(max)')
ELSE C.Path
END, 'Unknown') AS ItemPath,
convert(varchar(1000),case
when C.Type = 13 then 'Hyperlink to dashboard'
else 'Hyperlink to Paginated reports'
end) +
COALESCE(CASE(ReportAction)
WHEN 11 THEN AdditionalInfo.value('(AdditionalInfo/SourceReportUri)[1]', 'nvarchar(max)')
ELSE C.Path
END, 'Unknown')
as ReportWebPath,
UserName,
ExecutionId,
CASE(RequestType)
WHEN 0 THEN 'Interactive'
WHEN 1 THEN 'Subscription'
WHEN 2 THEN 'Refresh Cache'
ELSE 'Unknown'
END AS RequestType,
-- SubscriptionId,
Format,
Parameters,
CASE(ReportAction)
WHEN 1 THEN 'Render'
WHEN 2 THEN 'BookmarkNavigation'
WHEN 3 THEN 'DocumentMapNavigation'
WHEN 4 THEN 'DrillThrough'
WHEN 5 THEN 'FindString'
WHEN 6 THEN 'GetDocumentMap'
WHEN 7 THEN 'Toggle'
WHEN 8 THEN 'Sort'
WHEN 9 THEN 'Execute'
WHEN 10 THEN 'RenderEdit'
WHEN 11 THEN 'ExecuteDataShapeQuery'
WHEN 12 THEN 'RenderMobileReport'
WHEN 13 THEN 'ConceptualSchema'
WHEN 14 THEN 'QueryData'
WHEN 15 THEN 'ASModelStream'
WHEN 16 THEN 'RenderExcelWorkbook'
WHEN 17 THEN 'GetExcelWorkbookInfo'
WHEN 18 THEN 'SaveToCatalog'
WHEN 19 THEN 'DataRefresh'
ELSE 'Unknown'
END AS ItemAction,
TimeStart,
TimeEnd,
TimeDataRetrieval,
TimeProcessing,
TimeRendering,
CASE(Source)
WHEN 1 THEN 'Live'
WHEN 2 THEN 'Cache'
WHEN 3 THEN 'Snapshot'
WHEN 4 THEN 'History'
WHEN 5 THEN 'AdHoc'
WHEN 6 THEN 'Session'
WHEN 7 THEN 'Rdce'
ELSE 'Unknown'
END AS Source,
Status,
ByteCount,
[RowCount]
--, AdditionalInfo
FROM ReportServer.dbo.ExecutionLogStorage EL WITH(NOLOCK)
LEFT OUTER JOIN ReportServer.dbo.Catalog C WITH(NOLOCK) ON (EL.ReportID = C.ItemID)
)
select
LDAP.Name as EmployeeName,
EmployeeID,
convert(int,convert(varchar(10),TimeStart,112)) as ReportStartDateKey,
convert(int,convert(varchar(10),TimeEnd,112)) as ReportEndDateKey,
RepLog.*
from ExecutionLog3Marce RepLog
inner join SHLReporting.dbo.SHLLDAPUsers LDAP
on replace(Replog.UserName,'Your Windows Domain','') = sAMAccountName collate Latin1_General_100_CI_AS_KS_WS
and Username <> 'Admin account'
where
RepLog.ItemAction in ('ConceptualSchema', 'Render')

 

 

 

 

v-yuezhe-msft
Employee
Employee

@4Eric,

You can also monitor the following items.

  1. Who is viewing reports?
  2. Which reports are the most popular?
  3. When are reports being executed?
  4. What is performance like (any slow reports?)?
  5. What % of the workload is Power BI reports versus other report types?


Reference:
https://insightsquest.com/2018/01/29/power-bi-report-server-monitoring/

Regards,
Lydia

Community Support Team _ Lydia Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

This is a great solution!

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.