-
-
Save tyzbit/06a8c42e7d03963ef718 to your computer and use it in GitHub Desktop.
splunk dashboard for plex
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<dashboard> | |
<label>my-plex-dashboard</label> | |
<row> | |
<panel> | |
<chart> | |
<title>Plex memory usage - 6 hours</title> | |
<search> | |
<query>index="os" source=ps COMMAND=Plex | rex field=ARGS ".*?-i_.*\/media\/.*\/(?<t_file>.*?)_-(?:filter|map_inline|map_[\d])" | rex field=ARGS "Plug.*\/(?<plugin_name>.*)$" | eval memMB=mem_used/1048576 | eval name=if(ARGS LIKE "New_Transcoder%",if(isnull(t_file),"Unknown Video Source",t_file),if(ARGS LIKE "Plug-in%", plugin_name, ARGS)) | timechart limit=20 avg(memMB) by name</query> | |
<earliest>-6h</earliest> | |
<latest>now</latest> | |
</search> | |
<option name="charting.chart">line</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option> | |
<option name="charting.axisTitleX.visibility">visible</option> | |
<option name="charting.axisTitleY.visibility">visible</option> | |
<option name="charting.axisTitleY2.visibility">visible</option> | |
<option name="charting.axisX.scale">linear</option> | |
<option name="charting.axisY.scale">linear</option> | |
<option name="charting.axisY2.enabled">0</option> | |
<option name="charting.axisY2.scale">inherit</option> | |
<option name="charting.chart.bubbleMaximumSize">50</option> | |
<option name="charting.chart.bubbleMinimumSize">10</option> | |
<option name="charting.chart.bubbleSizeBy">area</option> | |
<option name="charting.chart.nullValueMode">gaps</option> | |
<option name="charting.chart.showDataLabels">none</option> | |
<option name="charting.chart.sliceCollapsingThreshold">0.01</option> | |
<option name="charting.chart.stackMode">default</option> | |
<option name="charting.chart.style">shiny</option> | |
<option name="charting.drilldown">all</option> | |
<option name="charting.layout.splitSeries">0</option> | |
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option> | |
<option name="charting.legend.labelStyle.overflowMode">ellipsisEnd</option> | |
<option name="charting.legend.placement">right</option> | |
<option name="charting.axisTitleX.text">Last Hour</option> | |
</chart> | |
</panel> | |
<panel> | |
<chart> | |
<title>Plex CPU Usage - 6 hours</title> | |
<search> | |
<query>index=os sourcetype=ps COMMAND=Plex | rex field=ARGS ".*?-i_.*\/media.*\/(?<t_file>.*?)_-(?:filter|map_inline|map_[\d])" | rex field=ARGS "Plug.*\/(?<plugin_name>.*)$" | eval memMB=mem_used/1048576 | eval name=if(ARGS LIKE "New_Transcoder%",if(isnull(t_file),"Unknown Video Source",t_file),if(ARGS LIKE "Plug-in%", plugin_name, ARGS)) | timechart avg(pctCPU) by name</query> | |
<earliest>-6h</earliest> | |
<latest>now</latest> | |
</search> | |
<option name="charting.chart">line</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option> | |
<option name="charting.axisTitleX.visibility">visible</option> | |
<option name="charting.axisTitleY.visibility">visible</option> | |
<option name="charting.axisTitleY2.visibility">visible</option> | |
<option name="charting.axisX.scale">linear</option> | |
<option name="charting.axisY.scale">linear</option> | |
<option name="charting.axisY2.enabled">0</option> | |
<option name="charting.axisY2.scale">inherit</option> | |
<option name="charting.chart.bubbleMaximumSize">50</option> | |
<option name="charting.chart.bubbleMinimumSize">10</option> | |
<option name="charting.chart.bubbleSizeBy">area</option> | |
<option name="charting.chart.nullValueMode">gaps</option> | |
<option name="charting.chart.showDataLabels">none</option> | |
<option name="charting.chart.sliceCollapsingThreshold">0.01</option> | |
<option name="charting.chart.stackMode">default</option> | |
<option name="charting.chart.style">shiny</option> | |
<option name="charting.drilldown">all</option> | |
<option name="charting.layout.splitSeries">0</option> | |
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option> | |
<option name="charting.legend.labelStyle.overflowMode">ellipsisEnd</option> | |
<option name="charting.legend.placement">right</option> | |
<option name="charting.axisTitleX.text">Last Hour</option> | |
<option name="charting.axisY.maximumNumber">100</option> | |
<option name="charting.axisY.minimumNumber">0</option> | |
</chart> | |
</panel> | |
</row> | |
<row> | |
<panel> | |
<table> | |
<title>Top 10 Users By Time - Last 30 Days</title> | |
<search> | |
<query>index="main" status=playing | top user | fields user, count | eval Hours=round(count / 60) | head 20 | rename user as "Username" | fields - count</query> | |
<earliest>-30d@d</earliest> | |
<latest>now</latest> | |
</search> | |
<option name="wrap">true</option> | |
<option name="rowNumbers">false</option> | |
<option name="dataOverlayMode">none</option> | |
<option name="drilldown">cell</option> | |
<option name="count">10</option> | |
</table> | |
</panel> | |
<panel> | |
<table> | |
<title>Top Movies - Last 30 Days</title> | |
<search> | |
<query>index=main NOT show=* | stats dc(user) as count by title | sort -count | head 10</query> | |
<earliest>-30d@d</earliest> | |
<latest>now</latest> | |
</search> | |
<option name="wrap">undefined</option> | |
<option name="rowNumbers">undefined</option> | |
<option name="drilldown">row</option> | |
<option name="dataOverlayMode">none</option> | |
<option name="count">10</option> | |
</table> | |
</panel> | |
<panel> | |
<table> | |
<title>Top Shows - Last 30 Days</title> | |
<search> | |
<query>index="main" status=playing plexType=episode | stats count by user, title, show, date_mday | stats count as "Episodes watched" by show | sort -"Episodes watched" | head 10</query> | |
<earliest>-30d@d</earliest> | |
<latest>now</latest> | |
</search> | |
<option name="wrap">true</option> | |
<option name="rowNumbers">false</option> | |
<option name="drilldown">cell</option> | |
<option name="dataOverlayMode">none</option> | |
<option name="count">10</option> | |
</table> | |
</panel> | |
<panel> | |
<table> | |
<title>Most transcoded - Past 7 days</title> | |
<search> | |
<query>index="main" status=playing | eval newTitle=if(plexType=="episode",show,title) | eval transcoding=if(video_transcoding=="transcode",1,0) | eval direct_play=if(video_transcoding=="transcode",0,1) | stats count by user, date_mday, newTitle, transcoding, direct_play | stats sum(direct_play) as d_play sum(transcoding) as t_play sum(count) as total by newTitle | eval pctTranscoding=(t_play/(d_play+t_play)) | eval orderThis=round(pctTranscoding*total/60,1) | stats sum(orderThis) as "Hours transcoding" by newTitle | sort -"Hours transcoding"| rename newTitle as "Movie/Show" | head 10</query> | |
<earliest>-7d@h</earliest> | |
<latest>now</latest> | |
</search> | |
<option name="charting.chart">bar</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option> | |
<option name="charting.axisTitleX.visibility">visible</option> | |
<option name="charting.axisTitleY.visibility">visible</option> | |
<option name="charting.axisTitleY2.visibility">visible</option> | |
<option name="charting.axisX.scale">linear</option> | |
<option name="charting.axisY.scale">linear</option> | |
<option name="charting.axisY2.enabled">0</option> | |
<option name="charting.axisY2.scale">inherit</option> | |
<option name="charting.chart.bubbleMaximumSize">50</option> | |
<option name="charting.chart.bubbleMinimumSize">10</option> | |
<option name="charting.chart.bubbleSizeBy">area</option> | |
<option name="charting.chart.nullValueMode">gaps</option> | |
<option name="charting.chart.showDataLabels">none</option> | |
<option name="charting.chart.sliceCollapsingThreshold">0.01</option> | |
<option name="charting.chart.stackMode">default</option> | |
<option name="charting.chart.style">shiny</option> | |
<option name="charting.drilldown">all</option> | |
<option name="charting.layout.splitSeries">0</option> | |
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option> | |
<option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option> | |
<option name="charting.legend.placement">right</option> | |
<option name="wrap">true</option> | |
<option name="rowNumbers">false</option> | |
<option name="dataOverlayMode">none</option> | |
<option name="drilldown">cell</option> | |
<option name="count">10</option> | |
</table> | |
</panel> | |
</row> | |
<row> | |
<panel> | |
<table> | |
<title>Plex - Users with multiple streams - Last 7 days</title> | |
<search ref="Plex - Users with multiple streams"></search> | |
<option name="wrap">undefined</option> | |
<option name="rowNumbers">undefined</option> | |
<option name="drilldown">row</option> | |
<option name="dataOverlayMode">none</option> | |
<option name="count">10</option> | |
</table> | |
</panel> | |
<panel> | |
<chart> | |
<title>Plex - Top 10 media by percent of time spent transcoding - Last 24 hours</title> | |
<search ref="Plex - Top 10 media by percent of time spent transcoding"></search> | |
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option> | |
<option name="charting.axisTitleX.visibility">visible</option> | |
<option name="charting.axisTitleY.visibility">visible</option> | |
<option name="charting.axisTitleY2.visibility">visible</option> | |
<option name="charting.axisX.scale">linear</option> | |
<option name="charting.axisY.scale">linear</option> | |
<option name="charting.axisY2.enabled">0</option> | |
<option name="charting.axisY2.scale">inherit</option> | |
<option name="charting.chart">bar</option> | |
<option name="charting.chart.bubbleMaximumSize">50</option> | |
<option name="charting.chart.bubbleMinimumSize">10</option> | |
<option name="charting.chart.bubbleSizeBy">area</option> | |
<option name="charting.chart.nullValueMode">gaps</option> | |
<option name="charting.chart.showDataLabels">none</option> | |
<option name="charting.chart.sliceCollapsingThreshold">0.01</option> | |
<option name="charting.chart.stackMode">default</option> | |
<option name="charting.chart.style">shiny</option> | |
<option name="charting.drilldown">all</option> | |
<option name="charting.layout.splitSeries">0</option> | |
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option> | |
<option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option> | |
<option name="charting.legend.placement">right</option> | |
</chart> | |
</panel> | |
<panel> | |
<chart> | |
<title>Plex - Number of streams by stream type - 24 hours</title> | |
<search ref="Plex - Number of streams by stream type"></search> | |
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option> | |
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option> | |
<option name="charting.axisTitleX.visibility">visible</option> | |
<option name="charting.axisTitleY.visibility">visible</option> | |
<option name="charting.axisTitleY2.visibility">visible</option> | |
<option name="charting.axisX.scale">linear</option> | |
<option name="charting.axisY.scale">linear</option> | |
<option name="charting.axisY2.enabled">0</option> | |
<option name="charting.axisY2.scale">inherit</option> | |
<option name="charting.chart">area</option> | |
<option name="charting.chart.bubbleMaximumSize">50</option> | |
<option name="charting.chart.bubbleMinimumSize">10</option> | |
<option name="charting.chart.bubbleSizeBy">area</option> | |
<option name="charting.chart.nullValueMode">gaps</option> | |
<option name="charting.chart.showDataLabels">none</option> | |
<option name="charting.chart.sliceCollapsingThreshold">0.01</option> | |
<option name="charting.chart.stackMode">default</option> | |
<option name="charting.chart.style">shiny</option> | |
<option name="charting.drilldown">all</option> | |
<option name="charting.layout.splitSeries">0</option> | |
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option> | |
<option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option> | |
<option name="charting.legend.placement">bottom</option> | |
<option name="wrap">true</option> | |
<option name="rowNumbers">false</option> | |
<option name="dataOverlayMode">none</option> | |
</chart> | |
</panel> | |
</row> | |
<row> | |
<panel> | |
<table> | |
<title>Streams - Last 24 Hours</title> | |
<search ref="Plex - Last 10 streams"></search> | |
<option name="wrap">undefined</option> | |
<option name="rowNumbers">undefined</option> | |
<option name="drilldown">row</option> | |
<option name="dataOverlayMode">none</option> | |
<option name="count">10</option> | |
</table> | |
</panel> | |
</row> | |
<row> | |
<panel> | |
<table> | |
<title>Plex - Transcoding hours by movie/show</title> | |
<search ref="Plex - Transcoding hours by movie/show"></search> | |
<option name="wrap">undefined</option> | |
<option name="rowNumbers">undefined</option> | |
<option name="drilldown">row</option> | |
</table> | |
</panel> | |
</row> | |
</dashboard> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment