diff --git a/modules/nixos/services/grafana.nix b/modules/nixos/services/grafana.nix index 3c22bb1..c533de5 100644 --- a/modules/nixos/services/grafana.nix +++ b/modules/nixos/services/grafana.nix @@ -1,7 +1,7 @@ { config, pkgs, lib, ... }: let - promUid = "f4988a80-680a-4f15-ad2d-2732159f6f63"; + promUid = "victoriametrics"; in { @@ -16,1934 +16,1525 @@ in { }; provision = { enable = true; - datasources.settings = [{ + datasources.settings.datasources = [{ name = "VictoriaMetrics"; type = "prometheus"; - access = "direct"; + access = "proxy"; url = "http://localhost${config.services.victoriametrics.listenAddress}"; uid = promUid; }]; dashboards.settings.providers = [{ - name = "default"; - options.path = - builtins.toPath (pkgs.formats.yaml { }).generate "grafana.yml" { - annotations = { - list = [{ - builtIn = 1; - datasource = { - type = "grafana"; - uid = "-- Grafana --"; - }; - enable = true; - hide = true; - iconColor = "rgba(0, 211, 255, 1)"; - name = "Annotations & Alerts"; - target = { - limit = 100; - matchAny = false; - tags = [ ]; + name = "test"; + type = "file"; + options.path = "${ + (pkgs.writeTextDir "dashboards/dashboard.json" (builtins.toJSON { + annotations = { + list = [{ + builtIn = 1; + datasource = { + type = "grafana"; + uid = "-- Grafana --"; + }; + enable = true; + hide = true; + iconColor = "rgba(0, 211, 255, 1)"; + name = "Annotations & Alerts"; + target = { + limit = 100; + matchAny = false; + tags = [ ]; + type = "dashboard"; + }; type = "dashboard"; - }; - type = "dashboard"; - }]; - }; - editable = true; - fiscalYearStartMonth = 0; - graphTooltip = 0; - id = 1; - links = [ ]; - liveNow = false; - panels = [ - { - collapsed = false; - gridPos = { - h = 1; - w = 24; - x = 0; - y = 0; - }; - id = 20; - panels = [ ]; - title = "Services"; - type = "row"; - } + }]; + }; + editable = true; + fiscalYearStartMonth = 0; + graphTooltip = 0; + id = 1; + links = [ ]; + liveNow = false; + panels = [ + { + collapsed = false; + gridPos = { + h = 1; + w = 24; + x = 0; + y = 0; + }; + id = 20; + panels = [ ]; + title = "Services"; + type = "row"; + } - # Uptime (Overall) - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - decimals = 2; - mappings = [ ]; - max = 1; - min = 0; - noValue = "0"; - thresholds = { - mode = "percentage"; - steps = [ - { - color = "#9d2a37"; - value = null; - } - { - color = "#a8663a"; - value = 99; - } - { - color = "#bea25c"; - value = 99.8; - } - { - color = "#62895d"; - value = 100; - } - ]; - }; - unit = "percentunit"; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 3; - x = 0; - y = 1; - }; - id = 146; - options = { - colorMode = "background"; - graphMode = "area"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - text = { }; - textMode = "value_and_name"; - }; - pluginVersion = "10.0.2"; - targets = [{ + # Uptime (Overall) + { datasource = { type = "prometheus"; uid = promUid; }; - editorMode = "code"; - exemplar = false; - expr = "min(avg_over_time(up))"; - instant = false; - legendFormat = "Min"; - range = true; - refId = "A"; - }]; - title = "Uptime"; - type = "stat"; - } - - # Cloudflare Tunnel - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - decimals = 2; - mappings = [ ]; - max = 1; - min = 0; - noValue = "0"; - thresholds = { - mode = "percentage"; - steps = [ - { - color = "#720d19"; - value = null; - } - { - color = "#a8663a"; - value = 99; - } - { - color = "semi-dark-orange"; - value = 100; - } - ]; - }; - unit = "percentunit"; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 4; - x = 3; - y = 1; - }; - id = 157; - options = { - colorMode = "background"; - graphMode = "area"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - text = { }; - textMode = "value_and_name"; - }; - pluginVersion = "10.0.2"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = '' - systemd_unit_state{name=~"cloudflared-tunnel-.*", state="active"}''; - instant = false; - legendFormat = "{{job}}"; - range = true; - refId = "A"; - }]; - title = "Tunnel"; - type = "stat"; - } - - # Services Uptime - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - mappings = [{ - options = { - "0" = { - color = "dark-red"; - index = 1; - text = "Down"; - }; - "1" = { - color = "#305387"; - index = 0; - text = "Up"; - }; + description = ""; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + decimals = 2; + mappings = [ ]; + max = 1; + min = 0; + noValue = "0"; + thresholds = { + mode = "percentage"; + steps = [ + { + color = "#9d2a37"; + value = null; + } + { + color = "#a8663a"; + value = 99; + } + { + color = "#bea25c"; + value = 99.8; + } + { + color = "#62895d"; + value = 100; + } + ]; }; - type = "value"; - }]; - thresholds = { - mode = "absolute"; - steps = [ - { - color = "green"; - value = null; - } - { - color = "red"; - value = 80; - } - ]; + unit = "percentunit"; }; + overrides = [ ]; }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 6; - x = 7; - y = 1; - }; - id = 13; - links = [ ]; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; + gridPos = { + h = 4; + w = 3; + x = 0; + y = 1; }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [ - { + id = 146; + options = { + colorMode = "background"; + graphMode = "area"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + text = { }; + textMode = "value_and_name"; + }; + pluginVersion = "10.0.2"; + targets = [{ datasource = { type = "prometheus"; uid = promUid; }; editorMode = "code"; exemplar = false; - expr = "nextcloud_up"; + expr = "min(avg_over_time(up))"; + instant = false; + legendFormat = "Min"; + range = true; + refId = "A"; + }]; + title = "Uptime"; + type = "stat"; + } + + # Cloudflare Tunnel + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + decimals = 2; + mappings = [ ]; + max = 1; + min = 0; + noValue = "0"; + thresholds = { + mode = "percentage"; + steps = [ + { + color = "#720d19"; + value = null; + } + { + color = "#a8663a"; + value = 99; + } + { + color = "semi-dark-orange"; + value = 100; + } + ]; + }; + unit = "percentunit"; + }; + overrides = [ ]; + }; + gridPos = { + h = 4; + w = 4; + x = 3; + y = 1; + }; + id = 157; + options = { + colorMode = "background"; + graphMode = "area"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + text = { }; + textMode = "value_and_name"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = '' + systemd_unit_state{name=~"cloudflared-tunnel-.*", state="active"}''; + instant = false; + legendFormat = "{{job}}"; + range = true; + refId = "A"; + }]; + title = "Tunnel"; + type = "stat"; + } + + # Services Uptime + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + mappings = [{ + options = { + "0" = { + color = "dark-red"; + index = 1; + text = "Down"; + }; + "1" = { + color = "#305387"; + index = 0; + text = "Up"; + }; + }; + type = "value"; + }]; + thresholds = { + mode = "absolute"; + steps = [ + { + color = "green"; + value = null; + } + { + color = "red"; + value = 80; + } + ]; + }; + }; + overrides = [ ]; + }; + gridPos = { + h = 4; + w = 6; + x = 7; + y = 1; + }; + id = 13; + links = [ ]; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [ + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "nextcloud_up"; + instant = false; + interval = ""; + legendFormat = "Nextcloud"; + range = true; + refId = "A"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = "sabnzbd_status"; + hide = false; + legendFormat = "Sabnzbd"; + range = true; + refId = "B"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = "radarr_system_status"; + hide = false; + legendFormat = "Radarr"; + range = true; + refId = "C"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = "sonarr_system_status"; + hide = false; + legendFormat = "Sonarr"; + range = true; + refId = "D"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = "prowlarr_system_status"; + hide = false; + legendFormat = "Prowlarr"; + range = true; + refId = "E"; + } + ]; + title = "Services"; + transparent = true; + type = "stat"; + } + + # Gitea Actions (disabled?) + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "#5d664a"; + value = null; + }]; + }; + unit = "none"; + }; + overrides = [ ]; + }; + gridPos = { + h = 4; + w = 3; + x = 13; + y = 1; + }; + id = 90; + links = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.git}/admin/runners"; + }]; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = ''gitea_actions{job="flame"}''; instant = false; interval = ""; - legendFormat = "Nextcloud"; + legendFormat = "__auto"; range = true; refId = "A"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = "sabnzbd_status"; - hide = false; - legendFormat = "Sabnzbd"; - range = true; - refId = "B"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = "radarr_system_status"; - hide = false; - legendFormat = "Radarr"; - range = true; - refId = "C"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = "sonarr_system_status"; - hide = false; - legendFormat = "Sonarr"; - range = true; - refId = "D"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = "prowlarr_system_status"; - hide = false; - legendFormat = "Prowlarr"; - range = true; - refId = "E"; - } - ]; - title = "Services"; - transparent = true; - type = "stat"; - } + }]; + title = "Gitea Actions"; + transparent = true; + type = "stat"; + } - # Gitea Actions (disabled?) - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "#5d664a"; - value = null; - }]; - }; - unit = "none"; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 3; - x = 13; - y = 1; - }; - id = 90; - links = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.git}/admin/runners"; - }]; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [{ + # Video Library + { datasource = { type = "prometheus"; uid = promUid; }; - editorMode = "code"; - exemplar = false; - expr = ''gitea_actions{job="flame"}''; - instant = false; - interval = ""; - legendFormat = "__auto"; - range = true; - refId = "A"; - }]; - title = "Gitea Actions"; - transparent = true; - type = "stat"; - } - - # Video Library - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { - fixedColor = "#5a4c30"; - mode = "fixed"; - }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "dark-blue"; - value = null; - }]; - }; - unit = "bytes"; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 3; - x = 16; - y = 1; - }; - id = 18; - links = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.stream}"; - }]; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - "expr" = - ''zfs_dataset_used_bytes{name="tank/video",job="swan"}''; - legendFormat = "__auto"; - range = true; - refId = "A"; - }]; - title = "Video Library"; - transparent = true; - type = "stat"; - } - - # NAS Storage - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - decimals = 0; - mappings = [ ]; - max = 1; - min = 0; - thresholds = { - mode = "percentage"; - steps = [{ - color = "super-light-green"; - value = null; - }]; - }; - unit = "percentunit"; - }; - overrides = [ ]; - }; - gridPos = { - h = 2; - w = 4; - x = 19; - y = 1; - }; - id = 38; - options = { - displayMode = "basic"; - minVizHeight = 10; - minVizWidth = 0; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - showUnfilled = true; - valueMode = "color"; - }; - pluginVersion = "10.0.2"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = '' - zfs_dataset_used_bytes{name="tank"} / zfs_dataset_available_bytes{name="tank"}''; - hide = false; - legendFormat = "{{name}}"; - range = true; - refId = "A"; - }]; - title = "NAS Storage"; - transformations = [ ]; - transparent = true; - type = "bargauge"; - } - - # NAS Growth - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { - fixedColor = "#2b462f"; - mode = "fixed"; - }; - decimals = 0; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "super-light-green"; - value = null; - }]; - }; - unit = "bytes"; - }; - overrides = [ ]; - }; - gridPos = { - h = 10; - w = 4; - x = 19; - y = 3; - }; - id = 55; - options = { - colorMode = "background"; - graphMode = "area"; - justifyMode = "auto"; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [ - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - "expr" = - ''increase(zfs_dataset_used_bytes{name="tank"}[1d])''; - hide = false; - instant = false; - interval = ""; - legendFormat = "Past Day"; - range = true; - refId = "A"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - "expr" = - ''increase(zfs_dataset_used_bytes{name="tank"}[7d])''; - hide = false; - legendFormat = "Past Week"; - range = true; - refId = "B"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - "expr" = - ''increase(zfs_dataset_used_bytes{name="tank"}[30d])''; - hide = false; - legendFormat = "Past Month"; - range = true; - refId = "C"; - } - ]; - title = "NAS Growth"; - transformations = [ ]; - transparent = true; - type = "stat"; - } - - # Caddy Upstreams - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { mode = "palette-classic"; }; - custom = { - fillOpacity = 69; - lineWidth = 2; - spanNulls = false; - }; - mappings = [{ - options = { - "0" = { - color = "#d13b4d"; - index = 1; - text = "Down"; - }; - "1" = { - color = "#33372c"; - index = 0; - text = "Up"; - }; + fieldConfig = { + defaults = { + color = { + fixedColor = "#5a4c30"; + mode = "fixed"; }; - type = "value"; - }]; - noValue = "0"; - thresholds = { - mode = "absolute"; - steps = [{ - color = "green"; - value = null; - }]; - }; - }; - overrides = [ - { - matcher = { - id = "byName"; - options = "localhost:${ - builtins.toString config.services.jellyseerr.port - }"; - }; - properties = [ - { - id = "displayName"; - value = "Jellyseerr"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.download}"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:${ - builtins.toString - config.services.bazarr.listenPort - }"; - }; - properties = [ - { - id = "displayName"; - value = "Bazarr"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = - "https://${config.hostnames.download}/bazarr"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:7878"; - }; - properties = [ - { - id = "displayName"; - value = "Radarr"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = - "https://${config.hostnames.download}/radarr"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "unix//run/phpfpm/nextcloud.sock"; - }; - properties = [ - { - id = "displayName"; - value = "Nextcloud"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.content}"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:${ - builtins.toString - config.services.calibre-web.listen.port - }"; - }; - properties = [ - { - id = "displayName"; - value = "Calibre"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.books}"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:8085"; - }; - properties = [ - { - id = "displayName"; - value = "Sabnzbd"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = - "https://${config.hostnames.download}/sabnzbd"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:8096"; - }; - properties = [ - { - id = "displayName"; - value = "Jellyfin"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.stream}"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:8989"; - }; - properties = [ - { - id = "displayName"; - value = "Sonarr"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = - "https://${config.hostnames.download}/sonarr"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:9696"; - }; - properties = [ - { - id = "displayName"; - value = "Prowlarr"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = - "https://${config.hostnames.download}/prowlarr"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:${ - builtins.toString - config.services.grafana.settings.server.http_port - }"; - }; - properties = [ - { - id = "displayName"; - value = "Grafana"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostname.metrics}"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:${ - builtins.toString - config.services.gitea.settings.server.HTTP_PORT - }"; - }; - properties = [ - { - id = "displayName"; - value = "Gitea"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.git}"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:${ - builtins.toString - config.services.vaultwarden.config.ROCKET_PORT - }"; - }; - properties = [ - { - id = "displayName"; - value = "Vaultwarden"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = "https://${config.hostnames.secrets}"; - }]; - } - ]; - } - { - matcher = { - id = "byName"; - options = "localhost:8427"; - }; - properties = [ - { - id = "displayName"; - value = "VictoriaMetrics"; - } - { - id = "links"; - value = [{ - targetBlank = true; - title = ""; - url = - "https://${config.hostnames.prometheus}/vmui"; - }]; - } - ]; - } - ]; - }; - gridPos = { - h = 8; - w = 7; - x = 0; - y = 5; - }; - id = 21; - options = { - alignValue = "left"; - legend = { - displayMode = "list"; - placement = "bottom"; - showLegend = false; - }; - mergeValues = true; - rowHeight = 0.65; - showValue = "never"; - tooltip = { - mode = "single"; - sort = "none"; - }; - }; - pluginVersion = "9.5.3"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "caddy_reverse_proxy_upstreams_healthy{}"; - instant = false; - legendFormat = "{{upstream}}"; - range = true; - refId = "A"; - }]; - title = "Caddy Upstreams"; - transparent = true; - type = "state-timeline"; - } - - # Stream Stats - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { - fixedColor = "#5b79b0"; - mode = "fixed"; - }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "green"; - value = null; - }]; - }; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 6; - x = 7; - y = 5; - }; - id = 108; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [ - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = '' - increase(http_requests_received_total{endpoint="Sessions/Playing"}[1d])''; - instant = false; - legendFormat = "Past Day"; - range = true; - refId = "A"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = '' - increase(http_requests_received_total{endpoint="Sessions/Playing"}[7d])''; - hide = false; - legendFormat = "Past Week"; - range = true; - refId = "B"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = '' - increase(http_requests_received_total{endpoint="Sessions/Playing"}[30d])''; - hide = false; - legendFormat = "Past Month"; - range = true; - refId = "C"; - } - ]; - title = "Streams"; - transparent = true; - type = "stat"; - } - - # Media Stats - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { - fixedColor = "#895d3a"; - mode = "fixed"; - }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "green"; - value = null; - }]; - }; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 6; - x = 13; - y = 5; - }; - id = 105; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [ - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "radarr_movie_downloaded_total"; - hide = false; - instant = true; - legendFormat = "Movies"; - range = false; - refId = "C"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "sonarr_series_downloaded_total"; - hide = false; - instant = true; - legendFormat = "TV Shows"; - range = false; - refId = "B"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "sonarr_episode_downloaded_total"; - instant = true; - legendFormat = "TV Episodes"; - range = false; - refId = "A"; - } - ]; - title = "Media"; - transparent = true; - type = "stat"; - } - - # Downloader Status - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "#bc5460"; - value = null; - }]; - }; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 2; - x = 7; - y = 9; - }; - id = 134; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "name"; - }; - pluginVersion = "10.0.2"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "sabnzbd_info"; - instant = true; - legendFormat = "{{status}}"; - range = false; - refId = "A"; - }]; - title = "Downloader"; - transparent = true; - type = "stat"; - } - - # Downloader Stats - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { - fixedColor = "#895d3a"; - mode = "fixed"; - }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "green"; - value = null; - }]; - }; - unit = "bytes"; - }; - overrides = [ - { - matcher = { - id = "byName"; - options = "Queue"; - }; - properties = [{ - id = "unit"; - value = "none"; - }]; - } - { - matcher = { - id = "byName"; - options = "Completed"; - }; - properties = [{ - id = "unit"; - value = "none"; - }]; - } - ]; - }; - gridPos = { - h = 4; - w = 8; - x = 9; - y = 9; - }; - id = 106; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [ - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = "sabnzbd_queue_length"; - hide = false; - legendFormat = "Queue"; - range = true; - refId = "C"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = "sum(prowlarr_indexer_grabs_total[$__range])"; - hide = false; - legendFormat = "Completed"; - range = true; - refId = "D"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "increase(sabnzbd_downloaded_bytes[7d])"; - hide = false; - instant = true; - legendFormat = "Week"; - range = false; - refId = "A"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "sabnzbd_downloaded_bytes"; - hide = false; - instant = true; - legendFormat = "Total"; - range = false; - refId = "B"; - } - ]; - title = "Downloads"; - transparent = true; - type = "stat"; - } - - # Download Requests - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { - fixedColor = "#723f3f"; - mode = "fixed"; - }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "green"; - value = null; - }]; - }; - }; - overrides = [ ]; - }; - gridPos = { - h = 4; - w = 2; - x = 17; - y = 9; - }; - id = 135; - options = { - colorMode = "background"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [ - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = "radarr_movie_missing_total"; - instant = true; - legendFormat = "Movies"; - range = false; - refId = "A"; - } - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = "sonarr_episode_missing_total"; - hide = false; - legendFormat = "Episodes"; - range = true; - refId = "B"; - } - ]; - title = "Requests"; - transparent = true; - type = "stat"; - } - - # CPU by Host - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - decimals = 2; - mappings = [ ]; - max = 1; - min = 0; - thresholds = { - mode = "percentage"; - steps = [ - { - color = "#a82e3c"; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "dark-blue"; value = null; - } - { - color = "red"; - value = 90; - } - ]; + }]; + }; + unit = "bytes"; }; - unit = "percentunit"; + overrides = [ ]; }; - overrides = [ - { - matcher = { - id = "byName"; - options = "flame"; - }; - properties = [{ - id = "displayName"; - value = "Flame 🔥"; - }]; - } - { - matcher = { - id = "byName"; - options = "swan"; - }; - properties = [{ - id = "displayName"; - value = "Swan 🦢"; - }]; - } - { - matcher = { - id = "byName"; - options = "tempest"; - }; - properties = [{ - id = "displayName"; - value = "Tempest 🌊"; - }]; - } - ]; - }; - gridPos = { - h = 4; - w = 7; - x = 0; - y = 13; - }; - id = 72; - options = { - displayMode = "basic"; - minVizHeight = 10; - minVizWidth = 0; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; + gridPos = { + h = 4; + w = 3; + x = 16; + y = 1; }; - showUnfilled = true; - valueMode = "color"; - }; - pluginVersion = "10.0.2"; - targets = [{ + id = 18; + links = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.stream}"; + }]; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + "expr" = '' + zfs_dataset_used_bytes{name="tank/video",job="swan"}''; + legendFormat = "__auto"; + range = true; + refId = "A"; + }]; + title = "Video Library"; + transparent = true; + type = "stat"; + } + + # NAS Storage + { datasource = { type = "prometheus"; uid = promUid; }; - editorMode = "code"; - exemplar = false; - expr = '' - sort_desc(max(irate(node_cpu_seconds_total{instance="127.0.0.1:${ - builtins.toString - config.services.prometheus.exporters.node.port - }",mode=~"system|user"}[$__range])) by (job))''; - instant = true; - legendFormat = "__auto"; - range = false; - refId = "A"; - }]; - title = "CPU"; - transformations = [ ]; - transparent = true; - type = "bargauge"; - } - - # Memory by Host - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - decimals = 2; - mappings = [ ]; - max = 1; - min = 0; - thresholds = { - mode = "percentage"; - steps = [ - { - color = "#ce95ca"; - value = null; - } - { - color = "semi-dark-red"; - value = 90; - } - ]; - }; - unit = "percentunit"; - }; - overrides = [ - { - matcher = { - id = "byName"; - options = "tempest"; - }; - properties = [{ - id = "displayName"; - value = "Tempest 🌊"; - }]; - } - { - matcher = { - id = "byName"; - options = "swan"; - }; - properties = [{ - id = "displayName"; - value = "Swan 🦢"; - }]; - } - { - matcher = { - id = "byName"; - options = "flame"; - }; - properties = [{ - id = "displayName"; - value = "Flame 🔥"; - }]; - } - ]; - }; - gridPos = { - h = 4; - w = 7; - x = 7; - y = 13; - }; - id = 73; - options = { - displayMode = "basic"; - minVizHeight = 10; - minVizWidth = 0; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - showUnfilled = true; - valueMode = "color"; - }; - pluginVersion = "10.0.2"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - "expr" = - "sort_desc(node_memory_Active_bytes/node_memory_MemTotal_bytes)"; - instant = true; - legendFormat = "{{job}}"; - range = false; - refId = "A"; - }]; - title = "Memory"; - transformations = [{ - id = "sortBy"; - options = { }; - }]; - transparent = true; - type = "bargauge"; - } - - # Storage by Host - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - decimals = 2; - mappings = [ ]; - max = 1; - min = 0; - thresholds = { - mode = "percentage"; - steps = [ - { - color = "#dbda61"; - value = null; - } - { - color = "semi-dark-red"; - value = 90; - } - ]; - }; - unit = "percentunit"; - }; - overrides = [ - { - matcher = { - id = "byName"; - options = "flame"; - }; - properties = [{ - id = "displayName"; - value = "Flame 🔥"; - }]; - } - { - matcher = { - id = "byName"; - options = "swan"; - }; - properties = [{ - id = "displayName"; - value = "Swan 🦢"; - }]; - } - { - matcher = { - id = "byName"; - options = "tempest"; - }; - properties = [{ - id = "displayName"; - value = "Tempest 🌊"; - }]; - } - ]; - }; - gridPos = { - h = 4; - w = 7; - x = 14; - y = 13; - }; - id = 74; - options = { - displayMode = "basic"; - minVizHeight = 10; - minVizWidth = 0; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - showUnfilled = true; - valueMode = "color"; - }; - pluginVersion = "10.0.2"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - exemplar = false; - expr = '' - sort_desc((node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"})''; - instant = true; - legendFormat = "{{job}}"; - range = false; - refId = "A"; - }]; - title = "Storage"; - transformations = [ ]; - transparent = true; - type = "bargauge"; - } - - # Host Bar - { - collapsed = false; - gridPos = { - h = 1; - w = 24; - x = 0; - y = 17; - }; - id = 16; - panels = [ ]; - repeat = "host"; - repeatDirection = "h"; - title = "Host"; - type = "row"; - } - - # Host Label - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - mappings = [{ - options = { - flame = { - color = "orange"; - index = 2; - text = "Flame 🔥"; - }; - swan = { - color = "text"; - index = 1; - text = "Swan 🦢"; - }; - tempest = { - color = "#6fa8e1"; - index = 0; - text = "Tempest 🌊"; - }; - }; - type = "value"; - }]; - thresholds = { - mode = "absolute"; - steps = [{ - color = "dark-blue"; - value = null; - }]; - }; - unit = "none"; - }; - overrides = [ ]; - }; - gridPos = { - h = 3; - w = 3; - x = 0; - y = 18; - }; - id = 19; - options = { - colorMode = "value"; - graphMode = "none"; - justifyMode = "auto"; - orientation = "auto"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = "/^job$/"; - values = false; - }; - textMode = "auto"; - }; - pluginVersion = "10.0.2"; - targets = [{ - datasource = { - type = "prometheus"; - uid = promUid; - }; - editorMode = "code"; - expr = ''node_os_info{job="$host"}''; - format = "table"; - legendFormat = "__auto"; - range = true; - refId = "A"; - }]; - title = "Host"; - transparent = true; - type = "stat"; - } - - # Vitals - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { mode = "thresholds"; }; - decimals = 0; - mappings = [ ]; - max = 1; - min = 0; - thresholds = { - mode = "percentage"; - steps = [ - { + description = ""; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + decimals = 0; + mappings = [ ]; + max = 1; + min = 0; + thresholds = { + mode = "percentage"; + steps = [{ color = "super-light-green"; value = null; - } - { - color = "orange"; - value = 70; - } - { - color = "red"; - value = 90; - } - ]; + }]; + }; + unit = "percentunit"; }; - unit = "percentunit"; + overrides = [ ]; }; - overrides = [ ]; - }; - gridPos = { - h = 5; - w = 6; - x = 3; - y = 18; - }; - id = 123; - options = { - displayMode = "basic"; - minVizHeight = 10; - minVizWidth = 0; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; + gridPos = { + h = 2; + w = 4; + x = 19; + y = 1; }; - showUnfilled = true; - valueMode = "color"; - }; - pluginVersion = "10.0.2"; - targets = [ - { + id = 38; + options = { + displayMode = "basic"; + minVizHeight = 10; + minVizWidth = 0; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + showUnfilled = true; + valueMode = "color"; + }; + pluginVersion = "10.0.2"; + targets = [{ datasource = { type = "prometheus"; uid = promUid; }; editorMode = "code"; expr = '' - max(irate(node_cpu_seconds_total{job="$host",instance="127.0.0.1:${ - builtins.toString - config.services.prometheus.exporters.node.port - }",mode=~"system|user"}[$__range]))''; + zfs_dataset_used_bytes{name="tank"} / zfs_dataset_available_bytes{name="tank"}''; hide = false; - legendFormat = "CPU"; + legendFormat = "{{name}}"; range = true; - refId = "C"; - } - { + refId = "A"; + }]; + title = "NAS Storage"; + transformations = [ ]; + transparent = true; + type = "bargauge"; + } + + # NAS Growth + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { + fixedColor = "#2b462f"; + mode = "fixed"; + }; + decimals = 0; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "super-light-green"; + value = null; + }]; + }; + unit = "bytes"; + }; + overrides = [ ]; + }; + gridPos = { + h = 10; + w = 4; + x = 19; + y = 3; + }; + id = 55; + options = { + colorMode = "background"; + graphMode = "area"; + justifyMode = "auto"; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [ + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + "expr" = + ''increase(zfs_dataset_used_bytes{name="tank"}[1d])''; + hide = false; + instant = false; + interval = ""; + legendFormat = "Past Day"; + range = true; + refId = "A"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + "expr" = + ''increase(zfs_dataset_used_bytes{name="tank"}[7d])''; + hide = false; + legendFormat = "Past Week"; + range = true; + refId = "B"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + "expr" = '' + increase(zfs_dataset_used_bytes{name="tank"}[30d])''; + hide = false; + legendFormat = "Past Month"; + range = true; + refId = "C"; + } + ]; + title = "NAS Growth"; + transformations = [ ]; + transparent = true; + type = "stat"; + } + + # Caddy Upstreams + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + fieldConfig = { + defaults = { + color = { mode = "palette-classic"; }; + custom = { + fillOpacity = 69; + lineWidth = 2; + spanNulls = false; + }; + mappings = [{ + options = { + "0" = { + color = "#d13b4d"; + index = 1; + text = "Down"; + }; + "1" = { + color = "#33372c"; + index = 0; + text = "Up"; + }; + }; + type = "value"; + }]; + noValue = "0"; + thresholds = { + mode = "absolute"; + steps = [{ + color = "green"; + value = null; + }]; + }; + }; + overrides = [ + { + matcher = { + id = "byName"; + options = "localhost:${ + builtins.toString + config.services.jellyseerr.port + }"; + }; + properties = [ + { + id = "displayName"; + value = "Jellyseerr"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.download}"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:${ + builtins.toString + config.services.bazarr.listenPort + }"; + }; + properties = [ + { + id = "displayName"; + value = "Bazarr"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = + "https://${config.hostnames.download}/bazarr"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:7878"; + }; + properties = [ + { + id = "displayName"; + value = "Radarr"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = + "https://${config.hostnames.download}/radarr"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "unix//run/phpfpm/nextcloud.sock"; + }; + properties = [ + { + id = "displayName"; + value = "Nextcloud"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.content}"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:${ + builtins.toString + config.services.calibre-web.listen.port + }"; + }; + properties = [ + { + id = "displayName"; + value = "Calibre"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.books}"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:8085"; + }; + properties = [ + { + id = "displayName"; + value = "Sabnzbd"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = + "https://${config.hostnames.download}/sabnzbd"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:8096"; + }; + properties = [ + { + id = "displayName"; + value = "Jellyfin"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.stream}"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:8989"; + }; + properties = [ + { + id = "displayName"; + value = "Sonarr"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = + "https://${config.hostnames.download}/sonarr"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:9696"; + }; + properties = [ + { + id = "displayName"; + value = "Prowlarr"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = + "https://${config.hostnames.download}/prowlarr"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:${ + builtins.toString + config.services.grafana.settings.server.http_port + }"; + }; + properties = [ + { + id = "displayName"; + value = "Grafana"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.metrics}"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:${ + builtins.toString + config.services.gitea.settings.server.HTTP_PORT + }"; + }; + properties = [ + { + id = "displayName"; + value = "Gitea"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.git}"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:${ + builtins.toString + config.services.vaultwarden.config.ROCKET_PORT + }"; + }; + properties = [ + { + id = "displayName"; + value = "Vaultwarden"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = "https://${config.hostnames.secrets}"; + }]; + } + ]; + } + { + matcher = { + id = "byName"; + options = "localhost:8427"; + }; + properties = [ + { + id = "displayName"; + value = "VictoriaMetrics"; + } + { + id = "links"; + value = [{ + targetBlank = true; + title = ""; + url = + "https://${config.hostnames.prometheus}/vmui"; + }]; + } + ]; + } + ]; + }; + gridPos = { + h = 8; + w = 7; + x = 0; + y = 5; + }; + id = 21; + options = { + alignValue = "left"; + legend = { + displayMode = "list"; + placement = "bottom"; + showLegend = false; + }; + mergeValues = true; + rowHeight = 0.65; + showValue = "never"; + tooltip = { + mode = "single"; + sort = "none"; + }; + }; + pluginVersion = "9.5.3"; + targets = [{ datasource = { type = "prometheus"; uid = promUid; }; editorMode = "code"; - expr = '' - (node_memory_Active_bytes{job="$host"})/node_memory_MemTotal_bytes{job="$host"}''; - hide = false; - legendFormat = "Memory"; + exemplar = false; + expr = "caddy_reverse_proxy_upstreams_healthy{}"; + instant = false; + legendFormat = "{{upstream}}"; range = true; - refId = "B"; - } - { + refId = "A"; + }]; + title = "Caddy Upstreams"; + transparent = true; + type = "state-timeline"; + } + + # Stream Stats + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + fieldConfig = { + defaults = { + color = { + fixedColor = "#5b79b0"; + mode = "fixed"; + }; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "green"; + value = null; + }]; + }; + }; + overrides = [ ]; + }; + gridPos = { + h = 4; + w = 6; + x = 7; + y = 5; + }; + id = 108; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [ + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = '' + increase(http_requests_received_total{endpoint="Sessions/Playing"}[1d])''; + instant = false; + legendFormat = "Past Day"; + range = true; + refId = "A"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = '' + increase(http_requests_received_total{endpoint="Sessions/Playing"}[7d])''; + hide = false; + legendFormat = "Past Week"; + range = true; + refId = "B"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = '' + increase(http_requests_received_total{endpoint="Sessions/Playing"}[30d])''; + hide = false; + legendFormat = "Past Month"; + range = true; + refId = "C"; + } + ]; + title = "Streams"; + transparent = true; + type = "stat"; + } + + # Media Stats + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + fieldConfig = { + defaults = { + color = { + fixedColor = "#895d3a"; + mode = "fixed"; + }; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "green"; + value = null; + }]; + }; + }; + overrides = [ ]; + }; + gridPos = { + h = 4; + w = 6; + x = 13; + y = 5; + }; + id = 105; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [ + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "radarr_movie_downloaded_total"; + hide = false; + instant = true; + legendFormat = "Movies"; + range = false; + refId = "C"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "sonarr_series_downloaded_total"; + hide = false; + instant = true; + legendFormat = "TV Shows"; + range = false; + refId = "B"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "sonarr_episode_downloaded_total"; + instant = true; + legendFormat = "TV Episodes"; + range = false; + refId = "A"; + } + ]; + title = "Media"; + transparent = true; + type = "stat"; + } + + # Downloader Status + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "#bc5460"; + value = null; + }]; + }; + }; + overrides = [ ]; + }; + gridPos = { + h = 4; + w = 2; + x = 7; + y = 9; + }; + id = 134; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "name"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "sabnzbd_info"; + instant = true; + legendFormat = "{{status}}"; + range = false; + refId = "A"; + }]; + title = "Downloader"; + transparent = true; + type = "stat"; + } + + # Downloader Stats + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { + fixedColor = "#895d3a"; + mode = "fixed"; + }; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "green"; + value = null; + }]; + }; + unit = "bytes"; + }; + overrides = [ + { + matcher = { + id = "byName"; + options = "Queue"; + }; + properties = [{ + id = "unit"; + value = "none"; + }]; + } + { + matcher = { + id = "byName"; + options = "Completed"; + }; + properties = [{ + id = "unit"; + value = "none"; + }]; + } + ]; + }; + gridPos = { + h = 4; + w = 8; + x = 9; + y = 9; + }; + id = 106; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [ + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = "sabnzbd_queue_length"; + hide = false; + legendFormat = "Queue"; + range = true; + refId = "C"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = "sum(prowlarr_indexer_grabs_total[$__range])"; + hide = false; + legendFormat = "Completed"; + range = true; + refId = "D"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "increase(sabnzbd_downloaded_bytes[7d])"; + hide = false; + instant = true; + legendFormat = "Week"; + range = false; + refId = "A"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "sabnzbd_downloaded_bytes"; + hide = false; + instant = true; + legendFormat = "Total"; + range = false; + refId = "B"; + } + ]; + title = "Downloads"; + transparent = true; + type = "stat"; + } + + # Download Requests + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { + fixedColor = "#723f3f"; + mode = "fixed"; + }; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "green"; + value = null; + }]; + }; + }; + overrides = [ ]; + }; + gridPos = { + h = 4; + w = 2; + x = 17; + y = 9; + }; + id = 135; + options = { + colorMode = "background"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [ + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = "radarr_movie_missing_total"; + instant = true; + legendFormat = "Movies"; + range = false; + refId = "A"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = "sonarr_episode_missing_total"; + hide = false; + legendFormat = "Episodes"; + range = true; + refId = "B"; + } + ]; + title = "Requests"; + transparent = true; + type = "stat"; + } + + # CPU by Host + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + decimals = 2; + mappings = [ ]; + max = 1; + min = 0; + thresholds = { + mode = "percentage"; + steps = [ + { + color = "#a82e3c"; + value = null; + } + { + color = "red"; + value = 90; + } + ]; + }; + unit = "percentunit"; + }; + overrides = [ + { + matcher = { + id = "byName"; + options = "flame"; + }; + properties = [{ + id = "displayName"; + value = "Flame 🔥"; + }]; + } + { + matcher = { + id = "byName"; + options = "swan"; + }; + properties = [{ + id = "displayName"; + value = "Swan 🦢"; + }]; + } + { + matcher = { + id = "byName"; + options = "tempest"; + }; + properties = [{ + id = "displayName"; + value = "Tempest 🌊"; + }]; + } + ]; + }; + gridPos = { + h = 4; + w = 7; + x = 0; + y = 13; + }; + id = 72; + options = { + displayMode = "basic"; + minVizHeight = 10; + minVizWidth = 0; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + showUnfilled = true; + valueMode = "color"; + }; + pluginVersion = "10.0.2"; + targets = [{ datasource = { type = "prometheus"; uid = promUid; @@ -1951,207 +1542,619 @@ in { editorMode = "code"; exemplar = false; expr = '' - (node_filesystem_size_bytes{mountpoint="/",job="$host"} - node_filesystem_avail_bytes{mountpoint=~"/",job="$host"}) / node_filesystem_size_bytes{mountpoint="/",job="$host"}''; + sort_desc(max(irate(node_cpu_seconds_total{instance="127.0.0.1:${ + builtins.toString + config.services.prometheus.exporters.node.port + }",mode=~"system|user"}[$__range])) by (job))''; instant = true; - legendFormat = "Storage"; + legendFormat = "__auto"; range = false; refId = "A"; - } - ]; - title = "Vitals"; - transformations = [ ]; - transparent = true; - type = "bargauge"; - } + }]; + title = "CPU"; + transformations = [ ]; + transparent = true; + type = "bargauge"; + } - # Top Processes by CPU - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - description = ""; - fieldConfig = { - defaults = { - color = { - fixedColor = "#c4af88"; - mode = "fixed"; - }; - decimals = 2; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [ - { - color = "green"; - value = null; - } - { - color = "red"; - value = 10000000; - } - ]; - }; - unit = "percentunit"; - }; - overrides = [ ]; - }; - gridPos = { - h = 8; - w = 6; - x = 12; - y = 18; - }; - id = 14; - options = { - displayMode = "basic"; - minVizHeight = 10; - minVizWidth = 0; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - showUnfilled = true; - valueMode = "color"; - }; - pluginVersion = "10.0.2"; - targets = [{ + # Memory by Host + { datasource = { type = "prometheus"; uid = promUid; }; - editorMode = "code"; - exemplar = false; - expr = '' - topk(5, irate(namedprocess_namegroup_cpu_seconds_total{job="$host"}[$__range]))''; - instant = true; - legendFormat = "{{groupname}}"; - range = false; - refId = "A"; - }]; - title = "Top Processes - CPU"; - transparent = true; - type = "bargauge"; - } + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + decimals = 2; + mappings = [ ]; + max = 1; + min = 0; + thresholds = { + mode = "percentage"; + steps = [ + { + color = "#ce95ca"; + value = null; + } + { + color = "semi-dark-red"; + value = 90; + } + ]; + }; + unit = "percentunit"; + }; + overrides = [ + { + matcher = { + id = "byName"; + options = "tempest"; + }; + properties = [{ + id = "displayName"; + value = "Tempest 🌊"; + }]; + } + { + matcher = { + id = "byName"; + options = "swan"; + }; + properties = [{ + id = "displayName"; + value = "Swan 🦢"; + }]; + } + { + matcher = { + id = "byName"; + options = "flame"; + }; + properties = [{ + id = "displayName"; + value = "Flame 🔥"; + }]; + } + ]; + }; + gridPos = { + h = 4; + w = 7; + x = 7; + y = 13; + }; + id = 73; + options = { + displayMode = "basic"; + minVizHeight = 10; + minVizWidth = 0; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + showUnfilled = true; + valueMode = "color"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + "expr" = + "sort_desc(node_memory_Active_bytes/node_memory_MemTotal_bytes)"; + instant = true; + legendFormat = "{{job}}"; + range = false; + refId = "A"; + }]; + title = "Memory"; + transformations = [{ + id = "sortBy"; + options = { }; + }]; + transparent = true; + type = "bargauge"; + } - # Top Processes by Memory - { - datasource = { - type = "prometheus"; - uid = promUid; - }; - fieldConfig = { - defaults = { - color = { - fixedColor = "#afb091"; - mode = "fixed"; - }; - mappings = [ ]; - thresholds = { - mode = "absolute"; - steps = [ - { - color = "green"; - value = null; - } - { - color = "red"; - value = 10000000; - } - ]; - }; - unit = "bytes"; - }; - overrides = [ ]; - }; - gridPos = { - h = 8; - w = 6; - x = 18; - y = 18; - }; - id = 15; - options = { - displayMode = "basic"; - minVizHeight = 10; - minVizWidth = 0; - orientation = "horizontal"; - reduceOptions = { - calcs = [ "lastNotNull" ]; - fields = ""; - values = false; - }; - showUnfilled = true; - valueMode = "color"; - }; - pluginVersion = "10.0.2"; - targets = [{ + # Storage by Host + { datasource = { type = "prometheus"; uid = promUid; }; - editorMode = "code"; - exemplar = false; - expr = '' - topk(5, rate(namedprocess_namegroup_memory_bytes{memtype="resident",job="$host"}[$__range]))''; - instant = true; - legendFormat = "{{groupname}}"; - range = false; - refId = "A"; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + decimals = 2; + mappings = [ ]; + max = 1; + min = 0; + thresholds = { + mode = "percentage"; + steps = [ + { + color = "#dbda61"; + value = null; + } + { + color = "semi-dark-red"; + value = 90; + } + ]; + }; + unit = "percentunit"; + }; + overrides = [ + { + matcher = { + id = "byName"; + options = "flame"; + }; + properties = [{ + id = "displayName"; + value = "Flame 🔥"; + }]; + } + { + matcher = { + id = "byName"; + options = "swan"; + }; + properties = [{ + id = "displayName"; + value = "Swan 🦢"; + }]; + } + { + matcher = { + id = "byName"; + options = "tempest"; + }; + properties = [{ + id = "displayName"; + value = "Tempest 🌊"; + }]; + } + ]; + }; + gridPos = { + h = 4; + w = 7; + x = 14; + y = 13; + }; + id = 74; + options = { + displayMode = "basic"; + minVizHeight = 10; + minVizWidth = 0; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + showUnfilled = true; + valueMode = "color"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = '' + sort_desc((node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"})''; + instant = true; + legendFormat = "{{job}}"; + range = false; + refId = "A"; + }]; + title = "Storage"; + transformations = [ ]; + transparent = true; + type = "bargauge"; + } + + # Host Bar + { + collapsed = false; + gridPos = { + h = 1; + w = 24; + x = 0; + y = 17; + }; + id = 16; + panels = [ ]; + repeat = "host"; + repeatDirection = "h"; + title = "Host"; + type = "row"; + } + + # Host Label + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + mappings = [{ + options = { + flame = { + color = "orange"; + index = 2; + text = "Flame 🔥"; + }; + swan = { + color = "text"; + index = 1; + text = "Swan 🦢"; + }; + tempest = { + color = "#6fa8e1"; + index = 0; + text = "Tempest 🌊"; + }; + }; + type = "value"; + }]; + thresholds = { + mode = "absolute"; + steps = [{ + color = "dark-blue"; + value = null; + }]; + }; + unit = "none"; + }; + overrides = [ ]; + }; + gridPos = { + h = 3; + w = 3; + x = 0; + y = 18; + }; + id = 19; + options = { + colorMode = "value"; + graphMode = "none"; + justifyMode = "auto"; + orientation = "auto"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = "/^job$/"; + values = false; + }; + textMode = "auto"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = ''node_os_info{job="$host"}''; + format = "table"; + legendFormat = "__auto"; + range = true; + refId = "A"; + }]; + title = "Host"; + transparent = true; + type = "stat"; + } + + # Vitals + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { mode = "thresholds"; }; + decimals = 0; + mappings = [ ]; + max = 1; + min = 0; + thresholds = { + mode = "percentage"; + steps = [ + { + color = "super-light-green"; + value = null; + } + { + color = "orange"; + value = 70; + } + { + color = "red"; + value = 90; + } + ]; + }; + unit = "percentunit"; + }; + overrides = [ ]; + }; + gridPos = { + h = 5; + w = 6; + x = 3; + y = 18; + }; + id = 123; + options = { + displayMode = "basic"; + minVizHeight = 10; + minVizWidth = 0; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + showUnfilled = true; + valueMode = "color"; + }; + pluginVersion = "10.0.2"; + targets = [ + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = '' + max(irate(node_cpu_seconds_total{job="$host",instance="127.0.0.1:${ + builtins.toString + config.services.prometheus.exporters.node.port + }",mode=~"system|user"}[$__range]))''; + hide = false; + legendFormat = "CPU"; + range = true; + refId = "C"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + expr = '' + (node_memory_Active_bytes{job="$host"})/node_memory_MemTotal_bytes{job="$host"}''; + hide = false; + legendFormat = "Memory"; + range = true; + refId = "B"; + } + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = '' + (node_filesystem_size_bytes{mountpoint="/",job="$host"} - node_filesystem_avail_bytes{mountpoint=~"/",job="$host"}) / node_filesystem_size_bytes{mountpoint="/",job="$host"}''; + instant = true; + legendFormat = "Storage"; + range = false; + refId = "A"; + } + ]; + title = "Vitals"; + transformations = [ ]; + transparent = true; + type = "bargauge"; + } + + # Top Processes by CPU + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + description = ""; + fieldConfig = { + defaults = { + color = { + fixedColor = "#c4af88"; + mode = "fixed"; + }; + decimals = 2; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [ + { + color = "green"; + value = null; + } + { + color = "red"; + value = 10000000; + } + ]; + }; + unit = "percentunit"; + }; + overrides = [ ]; + }; + gridPos = { + h = 8; + w = 6; + x = 12; + y = 18; + }; + id = 14; + options = { + displayMode = "basic"; + minVizHeight = 10; + minVizWidth = 0; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + showUnfilled = true; + valueMode = "color"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = '' + topk(5, irate(namedprocess_namegroup_cpu_seconds_total{job="$host"}[$__range]))''; + instant = true; + legendFormat = "{{groupname}}"; + range = false; + refId = "A"; + }]; + title = "Top Processes - CPU"; + transparent = true; + type = "bargauge"; + } + + # Top Processes by Memory + { + datasource = { + type = "prometheus"; + uid = promUid; + }; + fieldConfig = { + defaults = { + color = { + fixedColor = "#afb091"; + mode = "fixed"; + }; + mappings = [ ]; + thresholds = { + mode = "absolute"; + steps = [ + { + color = "green"; + value = null; + } + { + color = "red"; + value = 10000000; + } + ]; + }; + unit = "bytes"; + }; + overrides = [ ]; + }; + gridPos = { + h = 8; + w = 6; + x = 18; + y = 18; + }; + id = 15; + options = { + displayMode = "basic"; + minVizHeight = 10; + minVizWidth = 0; + orientation = "horizontal"; + reduceOptions = { + calcs = [ "lastNotNull" ]; + fields = ""; + values = false; + }; + showUnfilled = true; + valueMode = "color"; + }; + pluginVersion = "10.0.2"; + targets = [{ + datasource = { + type = "prometheus"; + uid = promUid; + }; + editorMode = "code"; + exemplar = false; + expr = '' + topk(5, rate(namedprocess_namegroup_memory_bytes{memtype="resident",job="$host"}[$__range]))''; + instant = true; + legendFormat = "{{groupname}}"; + range = false; + refId = "A"; + }]; + title = "Top Processes - Memory"; + transparent = true; + type = "bargauge"; + } + + ]; + + refresh = "10s"; + schemaVersion = 38; + style = "dark"; + tags = [ ]; + templating = { + list = [{ + current = { + selected = true; + text = [ "All" ]; + value = [ "$__all" ]; + }; + datasource = { + type = "prometheus"; + uid = promUid; + }; + definition = "label_values(nodename)"; + hide = 0; + includeAll = true; + label = "Host"; + multi = true; + name = "host"; + options = [ ]; + query = { + query = "label_values(nodename)"; + refId = "PrometheusVariableQueryEditor-VariableQuery"; + }; + refresh = 1; + regex = ""; + skipUrlSync = false; + sort = 1; + type = "query"; }]; - title = "Top Processes - Memory"; - transparent = true; - type = "bargauge"; - } - - ]; - - refresh = "10s"; - schemaVersion = 38; - style = "dark"; - tags = [ ]; - templating = { - list = [{ - current = { - selected = true; - text = [ "All" ]; - value = [ "$__all" ]; - }; - datasource = { - type = "prometheus"; - uid = promUid; - }; - definition = "label_values(nodename)"; - hide = 0; - includeAll = true; - label = "Host"; - multi = true; - name = "host"; - options = [ ]; - query = { - query = "label_values(nodename)"; - refId = "PrometheusVariableQueryEditor-VariableQuery"; - }; - refresh = 1; - regex = ""; - skipUrlSync = false; - sort = 1; - type = "query"; - }]; - }; - time = { - from = "now-6h"; - to = "now"; - }; - timepicker = { }; - timezone = ""; - title = "Main"; - uid = "wcZar5aaa"; - version = 60; - weekStart = ""; - }; + }; + time = { + from = "now-6h"; + to = "now"; + }; + timepicker = { }; + timezone = ""; + title = "Main"; + uid = "main"; + version = 60; + weekStart = ""; + })) + }/dashboards"; }]; }; };