Created
January 25, 2016 05:34
-
-
Save Dirrk/2b60d50b5702f395d9b3 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>plex-dashboard</label> | |
<row> | |
<panel> | |
<chart> | |
<title>Plex memory usage last hour</title> | |
<search> | |
<query>index="os" source=ps COMMAND=Plex | rex field=ARGS ".*?-i_.*\/data\/store.*\/(?<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%",t_file,if(ARGS LIKE "Plug-in%", plugin_name, ARGS)) | timechart avg(memMB) by name</query> | |
<earliest>rt-1h</earliest> | |
<latest>rt</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 last hour</title> | |
<search> | |
<query>index=os sourcetype=ps COMMAND=Plex | rex field=ARGS ".*?-i_.*\/data\/store.*\/(?<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%",t_file,if(ARGS LIKE "Plug-in%", plugin_name, ARGS)) | timechart avg(pctCPU) by name</query> | |
<earliest>rt-1h</earliest> | |
<latest>rt</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> | |
<chart> | |
<title>Plex storage</title> | |
<search> | |
<query>index=os sourcetype=df mount=/data/* | eval mountName=substr(mount,7)+" "+Size | stats avg(PercentFreeSpace) as "Free %", avg(PercentUsedSpace) as "Used %", by mountName</query> | |
<earliest>-15m</earliest> | |
<latest>now</latest> | |
</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.maximumNumber">100</option> | |
<option name="charting.axisY.minimumNumber">0</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">all</option> | |
<option name="charting.chart.sliceCollapsingThreshold">0.01</option> | |
<option name="charting.chart.stackMode">stacked100</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>Overall storage</title> | |
<search> | |
<query>index="os" source=df mount=/data/* | stats avg(TotalMBytes) as TotalMBytes_avg, avg(UsedMBytes) as UsedMBytes_avg, avg(FreeMBytes) as FreeMBytes_avg by mount | stats sum(TotalMBytes_avg) as TotalMBytes_sum, sum(UsedMBytes_avg) as UsedMBytes_sum, sum(FreeMBytes_avg) as FreeMBytes_sum | eval avg_used=(UsedMBytes_sum/TotalMBytes_sum)*100 | table avg_used</query> | |
<earliest>-15m</earliest> | |
<latest>now</latest> | |
</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">radialGauge</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.rangeValues">[0,30,70,100]</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.gaugeColors">["0x84E900","0xFFE800","0xBF3030"]</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>Average cpu</title> | |
<search> | |
<query>source=cpu cpu=all | stats avg(PercentUserTime) as avg_user, avg(PercentSystemTime) as avg_system | eval avgCPU=avg_user+avg_system | stats values(avgCPU)</query> | |
<earliest>rt-5m</earliest> | |
<latest>rt</latest> | |
</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">radialGauge</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>Current Memory Usage</title> | |
<search> | |
<query>index="os" source=ps | eval memMB=mem_used/1048576 | stats avg(memMB) as avg_mb by pid | stats sum(avg_mb) as "Memory (MB)"</query> | |
<earliest>rt-5m</earliest> | |
<latest>rt</latest> | |
</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">radialGauge</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.rangeValues">[0,2000,4000,8000,12000,16000]</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.gaugeColors">["0x84E900","0xFFE800","0xfac61d","0xf7912c","0xd13b3b"]</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> | |
</row> | |
<row> | |
<panel> | |
<table> | |
<title>Top 10 Users By Time Last 30 Days</title> | |
<search> | |
<query>index="plex-status" 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=plex-status 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="plex-status" 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="plex-status" 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> | |
</dashboard> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment