diff --git a/dashboards/application/jellyfin.json b/dashboards/application/jellyfin.json index 805ed3f..a316bf1 100644 --- a/dashboards/application/jellyfin.json +++ b/dashboards/application/jellyfin.json @@ -16,7 +16,10 @@ ] }, "editable": false, + "fiscalYearStartMonth": 0, "graphTooltip": 0, + "id": 345, + "links": [], "panels": [ { "datasource": { @@ -88,7 +91,7 @@ "uid": "kube-prometheus-stack" }, "editorMode": "code", - "expr": "jellyfin_up{instance=~\"$instance\"}", + "expr": "sum(jellyfin_up)", "instant": false, "legendFormat": "__auto", "range": true, @@ -159,7 +162,7 @@ "uid": "kube-prometheus-stack" }, "editorMode": "code", - "expr": "jellyfin_media_count{type=\"Movie\", instance=~\"$instance\"}", + "expr": "sum(jellyfin_media_count{type=\"Movie\"})", "instant": false, "legendFormat": "__auto", "range": true, @@ -228,7 +231,7 @@ "uid": "kube-prometheus-stack" }, "editorMode": "code", - "expr": "jellyfin_media_count{type=\"BoxSet\", instance=~\"$instance\"}", + "expr": "sum(jellyfin_media_count{type=\"BoxSet\"})", "instant": false, "legendFormat": "__auto", "range": true, @@ -297,7 +300,7 @@ "uid": "kube-prometheus-stack" }, "editorMode": "code", - "expr": "jellyfin_media_count{type=\"Series\", instance=~\"$instance\"}", + "expr": "sum(jellyfin_media_count{type=\"Series\"})", "instant": false, "legendFormat": "__auto", "range": true, @@ -366,7 +369,7 @@ "uid": "kube-prometheus-stack" }, "editorMode": "code", - "expr": "jellyfin_media_count{type=\"Episode\", instance=~\"$instance\"}", + "expr": "sum(jellyfin_media_count{type=\"Episode\"})", "instant": false, "legendFormat": "__auto", "range": true, @@ -415,8 +418,8 @@ "overrides": [] }, "gridPos": { - "h": 9, - "w": 24, + "h": 10, + "w": 12, "x": 0, "y": 5 }, @@ -445,7 +448,7 @@ "uid": "kube-prometheus-stack" }, "editorMode": "code", - "expr": "sum by (user_device, item_index_clean, type) (\n label_replace(\n label_join(\n label_join(\n label_join(\n jellyfin_now_playing_state{instance=~\"$instance\"},\n \"item_index\",\n \" \",\n \"series_season\",\n \"series_episode\"\n ),\n \"full_name\",\n \" - \",\n \"series_title\",\n \"item_index\",\n \"title\"\n ),\n \"user_device\",\n \" - \",\n \"username\",\n \"device\"\n ),\n \"item_index_clean\",\n \"$1\",\n \"full_name\",\n \"^[- ]*(.*?)[- ]*$\"\n )\n)\n", + "expr": "sum by (user_device, item_index_clean, type) (\n label_replace(\n label_join(\n label_join(\n label_join(\n jellyfin_now_playing_state,\n \"item_index\",\n \" \",\n \"series_season\",\n \"series_episode\"\n ),\n \"full_name\",\n \" - \",\n \"series_title\",\n \"item_index\",\n \"title\"\n ),\n \"user_device\",\n \" - \",\n \"username\",\n \"device\"\n ),\n \"item_index_clean\",\n \"$1\",\n \"full_name\",\n \"^[- ]*(.*?)[- ]*$\"\n )\n)\n", "instant": false, "legendFormat": "__auto", "range": true, @@ -592,10 +595,10 @@ "overrides": [] }, "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 14 + "h": 10, + "w": 12, + "x": 12, + "y": 5 }, "id": 21, "options": { @@ -622,7 +625,7 @@ "uid": "kube-prometheus-stack" }, "editorMode": "code", - "expr": "sum by (user_device, item_index_clean, type) (\n label_replace(\n label_join(\n label_join(\n label_join(\n jellyfin_now_playing_state{instance=~\"$instance\"},\n \"item_index\",\n \" \",\n \"series_season\",\n \"series_episode\"\n ),\n \"full_name\",\n \" - \",\n \"series_title\",\n \"item_index\",\n \"title\"\n ),\n \"user_device\",\n \" - \",\n \"username\",\n \"device\"\n ),\n \"item_index_clean\",\n \"$1\",\n \"full_name\",\n \"^[- ]*(.*?)[- ]*$\"\n )\n)\n", + "expr": "sum by (user_device, item_index_clean, type) (\n label_replace(\n label_join(\n label_join(\n label_join(\n jellyfin_now_playing_state,\n \"item_index\",\n \" \",\n \"series_season\",\n \"series_episode\"\n ),\n \"full_name\",\n \" - \",\n \"series_title\",\n \"item_index\",\n \"title\"\n ),\n \"user_device\",\n \" - \",\n \"username\",\n \"device\"\n ),\n \"item_index_clean\",\n \"$1\",\n \"full_name\",\n \"^[- ]*(.*?)[- ]*$\"\n )\n)\n", "instant": false, "legendFormat": "__auto", "range": true, @@ -730,183 +733,6 @@ ], "type": "state-timeline" }, - { - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisPlacement": "auto", - "fillOpacity": 70, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineWidth": 0, - "spanNulls": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 22, - "options": { - "alignValue": "left", - "legend": { - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "mergeValues": true, - "rowHeight": 0.9, - "showValue": "auto", - "tooltip": { - "hideZeros": false, - "mode": "multi", - "sort": "none" - } - }, - "pluginVersion": "12.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "editorMode": "code", - "expr": "sum by (user_device, item_index_clean, type) (\n label_replace(\n label_join(\n label_join(\n label_join(\n jellyfin_now_playing_state{instance=~\"$instance\"},\n \"item_index\",\n \" \",\n \"series_season\",\n \"series_episode\"\n ),\n \"full_name\",\n \" - \",\n \"series_title\",\n \"item_index\",\n \"title\"\n ),\n \"user_device\",\n \" - \",\n \"username\",\n \"device\"\n ),\n \"item_index_clean\",\n \"$1\",\n \"full_name\",\n \"^[- ]*(.*?)[- ]*$\"\n )\n)\n", - "instant": false, - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Now Playing - Live TV", - "transformations": [ - { - "id": "seriesToRows", - "options": {} - }, - { - "id": "extractFields", - "options": { - "keepTime": false, - "replace": false, - "source": "Metric" - } - }, - { - "id": "filterByValue", - "options": { - "filters": [ - { - "config": { - "id": "isNotNull", - "options": {} - }, - "fieldName": "user_device" - } - ], - "match": "any", - "type": "include" - } - }, - { - "id": "calculateField", - "options": { - "alias": "Item", - "mode": "reduceRow", - "reduce": { - "include": [ - "item_index_clean" - ], - "reducer": "lastNotNull" - } - } - }, - { - "id": "calculateField", - "options": { - "alias": "Name", - "mode": "reduceRow", - "reduce": { - "include": [ - "user_device" - ], - "reducer": "lastNotNull" - } - } - }, - { - "id": "filterByValue", - "options": { - "filters": [ - { - "config": { - "id": "equal", - "options": { - "value": "TvChannel" - } - }, - "fieldName": "type" - } - ], - "match": "any", - "type": "include" - } - }, - { - "id": "partitionByValues", - "options": { - "fields": [ - "Name" - ], - "keepFields": true - } - }, - { - "id": "filterFieldsByName", - "options": { - "include": { - "pattern": "item_index_clean|Time (.*)" - } - } - }, - { - "id": "renameByRegex", - "options": { - "regex": "item_index_clean (.*)", - "renamePattern": "$1" - } - } - ], - "type": "state-timeline" - }, { "datasource": { "type": "prometheus", @@ -938,10 +764,10 @@ "overrides": [] }, "gridPos": { - "h": 10, + "h": 8, "w": 12, "x": 0, - "y": 32 + "y": 15 }, "id": 2, "options": { @@ -967,7 +793,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "sum(jellyfin_user_active{instance=~\"$instance\"}) by (username, client, device, version)", + "expr": "sum(jellyfin_user_active) by (username, client, device, version)", "format": "table", "instant": true, "legendFormat": "__auto", @@ -1049,10 +875,10 @@ ] }, "gridPos": { - "h": 10, + "h": 8, "w": 12, "x": 12, - "y": 32 + "y": 15 }, "id": 17, "options": { @@ -1083,7 +909,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "jellyfin_activity_count{instance=~\"$instance\"}", + "expr": "jellyfin_activity_count", "format": "table", "instant": true, "legendFormat": "__auto", @@ -1134,7 +960,7 @@ "h": 1, "w": 24, "x": 0, - "y": 42 + "y": 23 }, "id": 6, "panels": [], @@ -1160,22 +986,22 @@ "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "none", + "fillOpacity": 10, + "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, - "lineInterpolation": "linear", + "lineInterpolation": "smooth", "lineWidth": 2, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", - "spanNulls": false, + "spanNulls": true, "stacking": { "group": "A", "mode": "none" @@ -1184,6 +1010,7 @@ "mode": "off" } }, + "decimals": 1, "mappings": [], "min": 0, "thresholds": { @@ -1191,137 +1018,6 @@ "steps": [ { "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 43 - }, - "id": 5, - "options": { - "legend": { - "calcs": [ - "mean" - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "hideZeros": false, - "mode": "multi", - "sort": "none" - } - }, - "pluginVersion": "12.0.0", - "targets": [ - { - "calculatedInterval": "2s", - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "datasourceErrors": {}, - "editorMode": "code", - "errors": {}, - "expr": "rate(node_vmstat_pgpgin{instance=\"$instance\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{instance=\"$instance\"}[5m]) * 1024", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Page In", - "metric": "", - "range": true, - "refId": "A", - "step": 20, - "target": "" - }, - { - "calculatedInterval": "2s", - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "datasourceErrors": {}, - "editorMode": "code", - "errors": {}, - "expr": "rate(node_vmstat_pgpgout{instance=\"$instance\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{instance=\"$instance\"}[5m]) * 1024", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Page Out", - "metric": "", - "range": true, - "refId": "B", - "step": 20, - "target": "" - } - ], - "title": "I/O Activity", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 60, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "normal" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 } ] }, @@ -1332,8 +1028,8 @@ "gridPos": { "h": 7, "w": 8, - "x": 8, - "y": 43 + "x": 0, + "y": 24 }, "id": 7, "options": { @@ -1354,603 +1050,63 @@ "pluginVersion": "12.0.0", "targets": [ { - "calculatedInterval": "2s", "datasource": { "type": "prometheus", "uid": "kube-prometheus-stack" }, - "datasourceErrors": {}, + "disableTextWrap": false, "editorMode": "code", - "errors": {}, - "expr": "node_memory_MemTotal_bytes{instance=\"$instance\"} - (node_memory_MemFree_bytes{instance=\"$instance\"} + node_memory_Buffers{instance=\"$instance\"} + node_memory_Cached{instance=\"$instance\"})", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Used", - "metric": "", + "expr": "sum(container_memory_usage_bytes{namespace=\"jellyfin\", container=\"main\"})", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "interval": "5m", + "legendFormat": "Main", + "range": true, + "refId": "C", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(container_memory_usage_bytes{namespace=\"jellyfin\", container=\"meilisearch\"})", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "interval": "30s", + "legendFormat": "Search", "range": true, "refId": "A", - "step": 20, - "target": "" + "useBackend": false }, { - "calculatedInterval": "2s", "datasource": { "type": "prometheus", "uid": "kube-prometheus-stack" }, - "datasourceErrors": {}, + "disableTextWrap": false, "editorMode": "code", - "errors": {}, - "expr": "node_memory_MemFree_bytes{instance=\"$instance\"}", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Free", - "metric": "", + "expr": "sum(container_memory_usage_bytes{namespace=\"jellyfin\", container=\"restic\"})", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "interval": "30s", + "legendFormat": "Backup", "range": true, "refId": "B", - "step": 20, - "target": "" - }, - { - "calculatedInterval": "2s", - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "datasourceErrors": {}, - "editorMode": "code", - "errors": {}, - "expr": "node_memory_Buffers{instance=\"$instance\"}", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Buffers", - "metric": "", - "range": true, - "refId": "D", - "step": 20, - "target": "" - }, - { - "calculatedInterval": "2s", - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "datasourceErrors": {}, - "editorMode": "code", - "errors": {}, - "expr": "node_memory_Cached{instance=\"$instance\"}", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Cached", - "metric": "", - "range": true, - "refId": "E", - "step": 20, - "target": "" + "useBackend": false } ], "title": "Memory Distribution", "type": "timeseries" }, - { - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "line", - "fillOpacity": 60, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "normal" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 1, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "percent" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load 1m" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#58140C", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Max Core Utilization" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#bf1b00", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "iowait" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#e24d42", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "nice" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#1f78c1", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "softirq" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#806eb7", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "system" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#eab839", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "user" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#508642", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Max Core Utilization" - }, - "properties": [ - { - "id": "custom.lineWidth", - "value": 0 - }, - { - "id": "custom.pointSize", - "value": 4 - }, - { - "id": "custom.showPoints", - "value": "always" - }, - { - "id": "custom.stacking", - "value": { - "group": "A", - "mode": "none" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Load 1m" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#58140C", - "mode": "fixed" - } - }, - { - "id": "custom.fillOpacity", - "value": 20 - }, - { - "id": "custom.stacking", - "value": { - "group": "A", - "mode": "none" - } - }, - { - "id": "unit", - "value": "none" - }, - { - "id": "custom.axisPlacement", - "value": "right" - } - ] - }, - { - "matcher": { - "id": "byValue", - "options": { - "op": "gte", - "reducer": "allIsZero", - "value": 0 - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": true, - "tooltip": true, - "viz": false - } - } - ] - }, - { - "matcher": { - "id": "byValue", - "options": { - "op": "gte", - "reducer": "allIsNull", - "value": 0 - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": true, - "tooltip": true, - "viz": false - } - } - ] - } - ] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 43 - }, - "id": 8, - "options": { - "legend": { - "calcs": [ - "mean" - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "hideZeros": false, - "mode": "multi", - "sort": "none" - } - }, - "pluginVersion": "12.0.0", - "targets": [ - { - "calculatedInterval": "2s", - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "datasourceErrors": {}, - "editorMode": "code", - "errors": {}, - "expr": "clamp_max(((avg by (mode) ( (clamp_max(rate(node_cpu_seconds_total{instance=\"$instance\",mode!=\"idle\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{instance=\"$instance\",mode!=\"idle\"}[5m]),1)) ))*100 or (avg_over_time(node_cpu_seconds_total_average{instance=~\"$instance\", mode!=\"total\", mode!=\"idle\"}[$interval]) or avg_over_time(node_cpu_seconds_total_average{instance=~\"$instance\", mode!=\"total\", mode!=\"idle\"}[5m]))),100)", - "format": "time_series", - "hide": false, - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "{{ mode }}", - "metric": "", - "range": true, - "refId": "A", - "step": 20 - }, - { - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "editorMode": "code", - "expr": "clamp_max(max by () (sum by (cpu) ( (clamp_max(rate(node_cpu_seconds_total{instance=\"$instance\",mode!=\"idle\",mode!=\"iowait\"}[$interval]),1)) or (clamp_max(irate(node_cpu_seconds_total{instance=\"$instance\",mode!=\"idle\",mode!=\"iowait\"}[5m]),1)) ))*100,100)", - "format": "time_series", - "hide": true, - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Max Core Utilization", - "range": true, - "refId": "B", - "step": 20 - }, - { - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "editorMode": "code", - "expr": "node_load1{instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Load 1m", - "range": true, - "refId": "C" - } - ], - "title": "CPU Usage / Load", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "barWidthFactor": 0.6, - "drawStyle": "points", - "fillOpacity": 20, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 4, - "scaleDistribution": { - "log": 2, - "type": "log" - }, - "showPoints": "always", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "ms" - }, - "overrides": [ - { - "matcher": { - "id": "byValue", - "options": { - "op": "gte", - "reducer": "allIsZero", - "value": 0 - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": true, - "tooltip": true, - "viz": false - } - } - ] - }, - { - "matcher": { - "id": "byValue", - "options": { - "op": "gte", - "reducer": "allIsNull", - "value": 0 - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": true, - "tooltip": true, - "viz": false - } - } - ] - } - ] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 50 - }, - "id": 9, - "options": { - "legend": { - "calcs": [ - "mean" - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "hideZeros": false, - "mode": "multi", - "sort": "none" - } - }, - "pluginVersion": "12.0.0", - "targets": [ - { - "calculatedInterval": "2m", - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "datasourceErrors": {}, - "editorMode": "code", - "errors": {}, - "expr": "sum((rate(node_disk_read_time_seconds_total{device!~\"dm-.+\", instance=\"$instance\"}[$interval]) / rate(node_disk_reads_completed_total{device!~\"dm-.+\", instance=\"$instance\"}[$interval])) or (irate(node_disk_read_time_seconds_total{device!~\"dm-.+\", instance=\"$instance\"}[5m]) / irate(node_disk_reads_completed_total{device!~\"dm-.+\", instance=\"$instance\"}[5m]))\nor avg_over_time(aws_rds_read_latency_average{instance=\"$instance\"}[$interval]) or avg_over_time(aws_rds_read_latency_average{instance=\"$instance\"}[5m]))", - "format": "time_series", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Read", - "metric": "", - "range": true, - "refId": "A", - "step": 20, - "target": "" - }, - { - "calculatedInterval": "2m", - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "datasourceErrors": {}, - "editorMode": "code", - "errors": {}, - "expr": "sum((rate(node_disk_write_time_seconds_total{device!~\"dm-.+\", instance=\"$instance\"}[$interval]) / rate(node_disk_writes_completed_total{device!~\"dm-.+\", instance=\"$instance\"}[$interval])) or (irate(node_disk_write_time_seconds_total{device!~\"dm-.+\", instance=\"$instance\"}[5m]) / irate(node_disk_writes_completed_total{device!~\"dm-.+\", instance=\"$instance\"}[5m])) or \navg_over_time(aws_rds_write_latency_average{instance=\"$instance\"}[$interval]) or avg_over_time(aws_rds_write_latency_average{instance=\"$instance\"}[5m]))", - "format": "time_series", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Write", - "metric": "", - "range": true, - "refId": "B", - "step": 20, - "target": "" - } - ], - "title": "Disk Latency", - "type": "timeseries" - }, { "datasource": { "type": "prometheus", @@ -2028,7 +1184,7 @@ "h": 7, "w": 8, "x": 8, - "y": 50 + "y": 24 }, "id": 10, "options": { @@ -2049,47 +1205,58 @@ "pluginVersion": "12.0.0", "targets": [ { - "calculatedInterval": "2s", "datasource": { "type": "prometheus", "uid": "kube-prometheus-stack" }, - "datasourceErrors": {}, + "disableTextWrap": false, "editorMode": "code", - "errors": {}, - "expr": "sum(rate(node_network_receive_bytes_total{instance=\"$instance\", device!=\"lo\"}[$interval])) or sum(irate(node_network_receive_bytes_total{instance=\"$instance\", device!=\"lo\"}[5m])) or sum(max_over_time(rdsosmetrics_network_rx{instance=\"$instance\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_rx{instance=\"$instance\"}[5m])) ", - "format": "time_series", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Inbound", - "metric": "", + "expr": "sum(rate(container_network_receive_bytes_total{namespace=\"jellyfin\", pod=~\"volsync.+\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "Backup", "range": true, - "refId": "B", - "step": 20, - "target": "" + "refId": "C", + "useBackend": false }, { - "calculatedInterval": "2s", "datasource": { "type": "prometheus", "uid": "kube-prometheus-stack" }, - "datasourceErrors": {}, + "disableTextWrap": false, "editorMode": "code", - "errors": {}, - "expr": "sum(rate(node_network_transmit_bytes_total{instance=\"$instance\", device!=\"lo\"}[$interval])) or sum(irate(node_network_transmit_bytes_total{instance=\"$instance\", device!=\"lo\"}[5m])) or\nsum(max_over_time(rdsosmetrics_network_tx{instance=\"$instance\"}[$interval])) or sum(max_over_time(rdsosmetrics_network_tx{instance=\"$instance\"}[5m]))", - "format": "time_series", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Outbound", - "metric": "", + "expr": "sum(rate(container_network_receive_bytes_total{namespace=\"jellyfin\", pod=~\"jellyfin-.+\", pod!=\"jellyfin-meilisearch.+\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "Main", "range": true, "refId": "A", - "step": 20, - "target": "" + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_network_receive_bytes_total{namespace=\"jellyfin\", pod=~\"jellyfin-meilisearch.+\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "Search", + "range": true, + "refId": "B", + "useBackend": false } ], - "title": "Network Traffic", + "title": "Network Traffic (Receive)", "type": "timeseries" }, { @@ -2136,7 +1303,6 @@ } }, "mappings": [], - "min": 0, "thresholds": { "mode": "absolute", "steps": [ @@ -2151,15 +1317,28 @@ }, "unit": "Bps" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Outbound" + }, + "properties": [ + { + "id": "custom.transform", + "value": "negative-Y" + } + ] + } + ] }, "gridPos": { "h": 7, "w": 8, "x": 16, - "y": 50 + "y": 24 }, - "id": 11, + "id": 23, "options": { "legend": { "calcs": [ @@ -2178,83 +1357,661 @@ "pluginVersion": "12.0.0", "targets": [ { - "calculatedInterval": "2s", "datasource": { "type": "prometheus", "uid": "kube-prometheus-stack" }, - "datasourceErrors": {}, + "disableTextWrap": false, "editorMode": "code", - "errors": {}, - "expr": "rate(node_vmstat_pswpin{instance=\"$instance\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{instance=\"$instance\"}[5m]) * 4096", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Swap In (Reads)", - "metric": "", + "expr": "sum(rate(container_network_transmit_bytes_total{namespace=\"jellyfin\", pod=~\"volsync.+\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "Backup", "range": true, - "refId": "A", - "step": 20, - "target": "" + "refId": "C", + "useBackend": false }, { - "calculatedInterval": "2s", "datasource": { "type": "prometheus", "uid": "kube-prometheus-stack" }, - "datasourceErrors": {}, + "disableTextWrap": false, "editorMode": "code", - "errors": {}, - "expr": "rate(node_vmstat_pswpout{instance=\"$instance\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{instance=\"$instance\"}[5m]) * 4096", - "interval": "$interval", - "intervalFactor": 1, - "legendFormat": "Swap Out (Writes)", - "metric": "", + "expr": "sum(rate(container_network_transmit_bytes_total{namespace=\"jellyfin\", pod=~\"jellyfin-.+\", pod!=\"jellyfin-meilisearch.+\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "Main", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_network_transmit_bytes_total{namespace=\"jellyfin\", pod=~\"jellyfin-meilisearch.+\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "Search", "range": true, "refId": "B", - "step": 20, - "target": "" + "useBackend": false } ], - "title": "Swap Activity", + "title": "Network Traffic (Transmit)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "description": "As percentage of 12 cores on standard computer node.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 1, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 0, + "y": 31 + }, + "id": 8, + "options": { + "legend": { + "calcs": [ + "mean" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "12.0.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"jellyfin\", container=\"main\"}[$__rate_interval]) * 100 / 12)", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Jellyfin", + "range": true, + "refId": "D", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"jellyfin\", container=\"meilisearch\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "30s", + "legendFormat": "Search", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"jellyfin\", container=\"restic\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "30s", + "legendFormat": "Backup", + "range": true, + "refId": "B", + "useBackend": false + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 8, + "y": 31 + }, + "id": 9, + "options": { + "legend": { + "calcs": [ + "mean" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "12.0.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_reads_bytes_total{namespace=\"jellyfin\", container=\"main\", device=\"/dev/nvme0n1\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Main (Local)", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_reads_bytes_total{namespace=\"jellyfin\", container=\"main\", device=\"/dev/rbd55\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Main (Cluster)", + "range": true, + "refId": "B", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_reads_bytes_total{namespace=\"jellyfin\", container=\"meilisearch\", device=\"/dev/rbd64\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Search (Cluster)", + "range": true, + "refId": "C", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_reads_bytes_total{namespace=\"jellyfin\", container=\"meilisearch\", device=\"/dev/nvme0n1\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Search (Local)", + "range": true, + "refId": "D", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_reads_bytes_total{namespace=\"jellyfin\", container=\"restic\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Backup (Sum)", + "range": true, + "refId": "E", + "useBackend": false + } + ], + "title": "Disk (Read)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [ + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsZero", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + }, + { + "matcher": { + "id": "byValue", + "options": { + "op": "gte", + "reducer": "allIsNull", + "value": 0 + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": true, + "tooltip": true, + "viz": false + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 8, + "x": 16, + "y": 31 + }, + "id": 24, + "options": { + "legend": { + "calcs": [ + "mean" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "12.0.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_writes_bytes_total{namespace=\"jellyfin\", container=\"main\", device=\"/dev/nvme0n1\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Main (Local)", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_writes_bytes_total{namespace=\"jellyfin\", container=\"main\", device=\"/dev/rbd55\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Main (Cluster)", + "range": true, + "refId": "B", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_writes_bytes_total{namespace=\"jellyfin\", container=\"meilisearch\", device=\"/dev/rbd64\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Search (Cluster)", + "range": true, + "refId": "C", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_writes_bytes_total{namespace=\"jellyfin\", container=\"meilisearch\", device=\"/dev/nvme0n1\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Search (Local)", + "range": true, + "refId": "D", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "kube-prometheus-stack" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "sum(rate(container_fs_writes_bytes_total{namespace=\"jellyfin\", container=\"restic\"}[$__rate_interval]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": false, + "instant": false, + "interval": "5m", + "legendFormat": "Backup (Sum)", + "range": true, + "refId": "E", + "useBackend": false + } + ], + "title": "Disk (Write)", "type": "timeseries" } ], "preload": true, - "tags": ["apps"], + "refresh": "", + "schemaVersion": 41, + "tags": [ + "apps" + ], "templating": { - "list": [ - { - "current": { - "text": "", - "value": "" - }, - "datasource": { - "type": "prometheus", - "uid": "kube-prometheus-stack" - }, - "definition": "label_values(jellyfin_up,instance)", - "includeAll": false, - "label": "Instance", - "name": "instance", - "options": [], - "query": { - "qryType": 1, - "query": "label_values(jellyfin_up,instance)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, - "refresh": 1, - "regex": "", - "type": "query" - } - ] + "list": [] }, "time": { "from": "now-24h", "to": "now" }, + "timepicker": {}, "timezone": "browser", "title": "Jellyfin", "uid": "D5GQA944k", - "version": 1 + "version": 3 }