diff --git a/dashboards/mux-video-analytics/mux-video-analytics.json b/dashboards/mux-video-analytics/mux-video-analytics.json new file mode 100644 index 0000000000..b2fd90acec --- /dev/null +++ b/dashboards/mux-video-analytics/mux-video-analytics.json @@ -0,0 +1,635 @@ +{ + "name": "Mux Video Analytics", + "description": null, + "pages": [ + { + "name": "Overall", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# ![Mux logo](https://d10wwqvw6fr90w.cloudfront.net/moodboards/000/651/889/original_d81c3be9eb282ae96000207f6fc2653c244814c2.png)\n" + } + }, + { + "title": "Total View Count", + "layout": { + "column": 3, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(view_id) as 'Total Views' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Overall Experience Score", + "layout": { + "column": 6, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Overall Experience (Avg)", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(viewer_experience_score) * 100 as 'Overall Experience (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Total Playing Time", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(numeric(view_playing_time)) / 60000 as 'Total Playing Time (mins)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Unique Viewers", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(viewer_user_id) as 'Total Viewers' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Playback Success Score", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Playback Success (Avg)", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(playback_success_score) * 100 as 'Playback Success (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Startup Time Score", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(startup_time_score) * 100 as 'Startup Time (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Smoothness Score", + "layout": { + "column": 5, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(smoothness_score) * 100 as 'Smoothness (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Video Quality Score", + "layout": { + "column": 7, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(video_quality_score) * 100 as 'Video Quality (Avg)' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 85 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Failure %", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), WHERE player_error_code IS NOT NULL AND player_error_code != 'null') as 'Failure %' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}})\nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Rebuffer %", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT SUM(rebuffer_duration)*100/SUM(watch_time) AS 'Rebuffer %' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}})\nCOMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Views over time", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT uniqueCount(view_id) as Views\nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nTIMESERIES 5 minutes COMPARE WITH 1 week ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Failure % over time", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT percentage(count(*), WHERE player_error_code IS NOT NULL AND player_error_code != 'null')\nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) AND player_error_code NOT IN ('null','') AND player_error_code IS NOT NULL FACET concat(player_error_code,' : ', player_error_message) \nTIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Rebuffering % over time", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(rebuffer_percentage) as 'Rebuffering %' \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) \nTIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Views by Country", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as Views \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) FACET country_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Views by CDN", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as Views \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) FACET cdn" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Views by Player", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) as Views \nFROM Log \nWHERE mux_api_version is NOT NULL AND watched AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) FACET player_name LIMIT 25" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Real Time Error Logs", + "layout": { + "column": 1, + "row": 11, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log WHERE mux_api_version is NOT NULL AND cdn IN ({{mux_cdn}}) AND video_title IN ({{mux_video}}) AND player_name IN ({{mux_player}}) AND browser IN ({{mux_browser}}) AND player_error_code IS NOT NULL AND player_error_code != 'null' LIMIT 40" + } + ] + } + } + ] + } + ], + "variables": [ + { + "name": "mux_video", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(video_title) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 1 week ago" + }, + "title": "Video Title", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "mux_player", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(player_name) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 2 weeks ago" + }, + "title": "Player Name", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "mux_browser", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(browser) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 2 weeks ago" + }, + "title": "Browser", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "mux_cdn", + "items": null, + "defaultValues": [], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Log SELECT uniques(cdn) WHERE mux_api_version IS NOT NULL LIMIT 100 SINCE 2 weeks ago" + }, + "title": "CDN", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] +} \ No newline at end of file diff --git a/dashboards/mux-video-analytics/mux-video-analytics01.png b/dashboards/mux-video-analytics/mux-video-analytics01.png new file mode 100644 index 0000000000..9a6de9596e Binary files /dev/null and b/dashboards/mux-video-analytics/mux-video-analytics01.png differ diff --git a/data-sources/mux/config.yml b/data-sources/mux/config.yml new file mode 100644 index 0000000000..b78d2ec92d --- /dev/null +++ b/data-sources/mux/config.yml @@ -0,0 +1,20 @@ +id: mux-video +displayName: Mux +description: | + Mux allows users to launch video features in days, customize the player experience, and monitor video streaming performance, all while scaling seamlessly to the world’s largest audiences. +icon: logo.svg +install: + primary: + link: + url: https://docs.newrelic.com/docs/logs/forward-logs/mux-video-streaming-firehose/ +keywords: + - mux + - video quality + - video experience + - quality of experience + - video streaming + - video metrics + - featured + - newrelic partner +categoryTerms: + - newrelic partner diff --git a/data-sources/mux/logo.svg b/data-sources/mux/logo.svg new file mode 100644 index 0000000000..8ef574f0c4 --- /dev/null +++ b/data-sources/mux/logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/quickstarts/mux-video/config.yml b/quickstarts/mux-video/config.yml new file mode 100644 index 0000000000..6644d05378 --- /dev/null +++ b/quickstarts/mux-video/config.yml @@ -0,0 +1,34 @@ +id: 65bd74f6-cfb7-4fb9-83a3-38cea143d839 +slug: mux-video +description: | + ## What is Mux? + + Mux is video infrastructure for the internet. With just a few lines of code, companies can get real-time analytics at world-leading scale, and understand their streaming data, monitor user engagement, and improve the quality of experience for viewers. Mux is trusted by today’s largest broadcasters and leaders in streaming video to reach their goals with actionable insights. And together with Mux Video, developers can also build video into their products quickly, reliably, and at global scale. + Learn more at [mux.com/data](https://mux.com/data) + + + ### Get started! + + The Mux - New Relic integration utilizes Amazon Kinesis Firehose to get data into New Relic. + + Check out the [documentation](https://docs.newrelic.com/docs/logs/forward-logs/mux-video-streaming-firehose/) to learn more about setting up New Relic monitoring for of data from Mux. +summary: | + Mux is video infrastructure that makes it easy for development teams to get actionable data at industry-leading scale, and build video into their products quickly and reliably. +icon: logo.svg +level: New Relic +authors: + - New Relic (Joseph Counts) +title: Mux Video Analytics (via Amazon Firehose) +dataSourceIds: + - mux-video +dashboards: + - mux-video-analytics +documentation: + - name: Mux installation docs + description: Send Mux logs to New Relic using Amazon Firehose + url: https://docs.newrelic.com/docs/logs/forward-logs/mux-video-streaming-firehose/ +keywords: + - mux + - video + - streaming + - newrelic partner diff --git a/quickstarts/mux-video/logo.svg b/quickstarts/mux-video/logo.svg new file mode 100644 index 0000000000..8ef574f0c4 --- /dev/null +++ b/quickstarts/mux-video/logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + +