diff --git a/dashboards/browser-page-resources/browser-page-resources.json b/dashboards/browser-page-resources/browser-page-resources.json new file mode 100644 index 0000000000..f3f27fcab0 --- /dev/null +++ b/dashboards/browser-page-resources/browser-page-resources.json @@ -0,0 +1,439 @@ +{ + "name": "Browser page resources", + "description": null, + "pages": [ + { + "name": "Browser page resources", + "description": null, + "widgets": [ + { + "title": "calls", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance Select count(*) where entryType = 'resource' timeseries facet initiatorType" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Average duration", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT average(entryDuration) as 'ms' WHERE entryType = 'resource' facet initiatorType limit max" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 7, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT average(connectEnd - connectStart) as 'TCP handshake', average(domainLookupEnd - domainLookupStart) as 'DNS lookup', average(redirectEnd - redirectStart) as 'Redirection time', average(responseStart - requestStart) as 'Request time' timeseries 3 minutes" + } + ] + } + }, + { + "title": "Non-compressed payloads", + "layout": { + "column": 11, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT percentage(count(*), where decodedBodySize <= encodedBodySize) as 'Compressed payloads' where entryType = 'resource'" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Outdated network protocols", + "layout": { + "column": 12, + "row": 1, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT percentage(count(*), where nextHopProtocol = 'h1') as 'Legacy network calls' where entryType = 'resource'" + } + ] + } + }, + { + "title": "Cached payloads", + "layout": { + "column": 11, + "row": 2, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT percentage(count(*), where transferSize = 0) as 'Cached payloads' where entryType = 'resource'" + } + ] + } + }, + { + "title": "Render blocking resources", + "layout": { + "column": 12, + "row": 2, + "width": 1, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT percentage(count(*), where renderBlockingStatus is NOT NULL ) as 'Render blocking resources' where entryType = 'resource'" + } + ] + } + }, + { + "title": "Non-cached resources", + "layout": { + "column": 7, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance select count(*) as 'Non-cached payloads' where entryType = 'resource' where transferSize != 0 facet entryName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Non-compressed resources", + "layout": { + "column": 10, + "row": 3, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance select count(*) as 'Non-compressed payloads' where entryType = 'resource' where decodedBodySize = encodedBodySize facet entryName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Longest request time pages", + "layout": { + "column": 1, + "row": 6, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT max(responseStart - requestStart) as 'Request time' facet currentUrl" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Slowest TCP handshake", + "layout": { + "column": 4, + "row": 6, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT max(connectEnd - connectStart) as 'TCP handshake time' facet entryName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "First party assets", + "layout": { + "column": 7, + "row": 6, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT count(*) where firstParty is true facet initiatorType limit 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "First party vs other assets - duration", + "layout": { + "column": 7, + "row": 9, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT average(entryDuration) facet cases(where firstParty is true as 'First party asset', where 1=1 as Other)" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Slowest assets", + "layout": { + "column": 1, + "row": 10, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT max(responseStart - requestStart) as 'Request time' facet entryName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Slowest DNS lookup", + "layout": { + "column": 4, + "row": 10, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT max(domainLookupEnd - domainLookupStart) as 'DNS lookup time' facet entryName" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "First party vs other assets", + "layout": { + "column": 7, + "row": 11, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM BrowserPerformance SELECT count(*) facet cases(where firstParty is true as 'First party asset')" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/browser-page-resources/browser-page-resources.png b/dashboards/browser-page-resources/browser-page-resources.png new file mode 100644 index 0000000000..294d39c7e8 Binary files /dev/null and b/dashboards/browser-page-resources/browser-page-resources.png differ diff --git a/data-sources/browser-page-resources/config.yml b/data-sources/browser-page-resources/config.yml new file mode 100644 index 0000000000..9d5af8a96f --- /dev/null +++ b/data-sources/browser-page-resources/config.yml @@ -0,0 +1,9 @@ +id: browser-page-resources +displayName: Browser Page Resources +description: | + Utilize page resource data to track the performance of the assets loaded on your application and identify areas for improvement. +install: + primary: + link: + url: https://docs.newrelic.com/docs/browser/new-relic-browser/browser-pro-features/page-resources/ +icon: logo.svg diff --git a/data-sources/browser-page-resources/logo.svg b/data-sources/browser-page-resources/logo.svg new file mode 100644 index 0000000000..ea60419c6b --- /dev/null +++ b/data-sources/browser-page-resources/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/quickstarts/browser-page-resources/config.yml b/quickstarts/browser-page-resources/config.yml new file mode 100644 index 0000000000..c377c6aae9 --- /dev/null +++ b/quickstarts/browser-page-resources/config.yml @@ -0,0 +1,30 @@ +slug: browser-page-resources +title: Browser Page Resources +summary: Example dashboards utilizing page resource data from New Relic Browser agent data +description: |+ + Utilize page resource data to track the performance of the assets loaded on your application and identify areas for improvement. +level: New Relic +authors: + - Jordan Porter +icon: logo.svg +documentation: + - name: Browser page resources + description: Resource Assets are reported natively by all major browsers and allows you to observe and report on the performance of the assets your webpages import. New Relic Browser can be configured to automatically track these assets as Browser Performance events. + url: https://docs.newrelic.com/docs/browser/new-relic-browser/browser-pro-features/page-resources/ +dataSourceIds: + - browser-page-resources +keywords: + - browser agent + - web + - javascript + - chrome + - firefox + - safari + - performance + - resources + - assets + - network + - timing + - duration +dashboards: + - browser-page-resources diff --git a/quickstarts/browser-page-resources/logo.svg b/quickstarts/browser-page-resources/logo.svg new file mode 100644 index 0000000000..ea60419c6b --- /dev/null +++ b/quickstarts/browser-page-resources/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + +