aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/by-name/an/anubis/module.nix94
-rw-r--r--modules/by-name/at/atuin-sync/module.nix32
-rw-r--r--modules/by-name/ba/back/module.nix92
-rw-r--r--modules/by-name/co/constants/module.nix18
-rw-r--r--modules/by-name/et/etesync/module.nix14
-rw-r--r--modules/by-name/gi/git-back/module.nix33
-rw-r--r--modules/by-name/gi/git-server/module.nix11
-rw-r--r--modules/by-name/gr/grocy/module.nix51
-rw-r--r--modules/by-name/in/invidious-router/module.nix4
-rw-r--r--modules/by-name/ma/mail/module.nix30
-rw-r--r--modules/by-name/ma/mastodon/patches/0001-feat-treewide-Increase-character-limit-to-5000-in-me.patch28
-rw-r--r--modules/by-name/ma/matrix/module.nix10
-rw-r--r--modules/by-name/mo/monitoring/components/grafana.nix309
-rw-r--r--modules/by-name/mo/monitoring/components/loki.nix170
-rw-r--r--modules/by-name/mo/monitoring/components/perses.nix17
-rw-r--r--modules/by-name/mo/monitoring/components/prometheus.nix272
-rw-r--r--modules/by-name/mo/monitoring/components/scrutiny.nix100
-rw-r--r--modules/by-name/mo/monitoring/dashboards/node_exporter.json21817
-rw-r--r--modules/by-name/mo/monitoring/dashboards/performance.json1606
-rw-r--r--modules/by-name/mo/monitoring/dashboards/scraping_jobs.json334
-rw-r--r--modules/by-name/mo/monitoring/dashboards/systemd_exporter.json2870
-rw-r--r--modules/by-name/mo/monitoring/module.nix31
-rw-r--r--modules/by-name/mo/monitoring/rules.json386
-rw-r--r--modules/by-name/mu/murmur/module.nix7
-rw-r--r--modules/by-name/ne/nextcloud/module.nix15
-rw-r--r--modules/by-name/ng/nginx/module.nix41
-rw-r--r--modules/by-name/re/redlib/module.nix15
-rw-r--r--modules/by-name/ro/rocie/module.nix59
-rw-r--r--modules/by-name/ru/rust-motd/module.nix32
-rw-r--r--modules/by-name/sh/sharkey/module.nix301
-rw-r--r--modules/by-name/st/stalwart-mail/module.nix2
-rw-r--r--modules/by-name/st/stalwart-mail/settings.nix4
-rw-r--r--modules/by-name/sy/system-info/module.nix4
-rw-r--r--modules/by-name/ta/taskchampion-sync/module.nix58
-rw-r--r--modules/by-name/us/users/module.nix30
35 files changed, 28443 insertions, 454 deletions
diff --git a/modules/by-name/an/anubis/module.nix b/modules/by-name/an/anubis/module.nix
new file mode 100644
index 0000000..4e70e4f
--- /dev/null
+++ b/modules/by-name/an/anubis/module.nix
@@ -0,0 +1,94 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.vhack.anubis;
+
+ anubisInstances =
+ lib.mapAttrs (domain: conf: {
+ settings = {
+ TARGET = conf.target;
+ BIND = "/run/anubis/anubis-${domain}/anubis.sock";
+ METRICS_BIND = "/run/anubis/anubis-${domain}/anubis-metrics.sock";
+ };
+ })
+ cfg.instances;
+
+ nginxVirtualHosts = lib.mapAttrs' (domain: conf:
+ lib.nameValuePair domain {
+ locations."/" = {
+ proxyPass = "http://unix:${config.services.anubis.instances."${domain}".settings.BIND}";
+
+ recommendedProxySettings = true;
+ proxyWebsockets = true;
+ };
+
+ enableACME = true;
+ forceSSL = true;
+ })
+ cfg.instances;
+in {
+ options.vhack.anubis.instances = lib.mkOption {
+ description = ''
+ Protect this reverse proxy with anubis.
+
+ The attr key is the subdomain, the value the config.
+ '';
+
+ type = lib.types.attrsOf (lib.types.submodule {
+ options = {
+ target = lib.mkOption {
+ description = "nginx `proxyPass` target";
+ type = lib.types.str;
+ example = "http://127.0.0.1:8080";
+ };
+ };
+ config = {};
+ });
+
+ default = {};
+
+ example = lib.literalExample ''
+ {
+ target = "http://127.0.0.1:$${toString config.servies.<name>.port}";
+ }
+ '';
+ };
+
+ config = {
+ users = {
+ users.nginx.extraGroups = [
+ config.services.anubis.defaultOptions.group
+ ];
+
+ users.anubis = {
+ uid = config.vhack.constants.ids.uids.anubis;
+ group = "anubis";
+ };
+ groups.anubis.gid = config.vhack.constants.ids.gids.anubis;
+ };
+
+ vhack.nginx = lib.mkIf (cfg.instances != {}) {
+ enable = true;
+ };
+
+ services = {
+ anubis = {
+ defaultOptions.settings.COOKIE_DYNAMIC_DOMAIN = true;
+ instances = anubisInstances;
+ };
+
+ nginx = {
+ enable = true;
+
+ recommendedTlsSettings = true;
+ recommendedOptimisation = true;
+ recommendedGzipSettings = true;
+ recommendedProxySettings = true;
+
+ virtualHosts = nginxVirtualHosts;
+ };
+ };
+ };
+}
diff --git a/modules/by-name/at/atuin-sync/module.nix b/modules/by-name/at/atuin-sync/module.nix
new file mode 100644
index 0000000..4295697
--- /dev/null
+++ b/modules/by-name/at/atuin-sync/module.nix
@@ -0,0 +1,32 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.vhack.atuin-sync;
+in {
+ options.vhack.atuin-sync = {
+ enable = lib.mkEnableOption "atuin (turtle) sync server";
+
+ fqdn = lib.mkOption {
+ description = "The fully qualified domain name of this instance.";
+ type = lib.types.str;
+ example = "atuin-sync.atuin.sh";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ vhack.nginx.enable = true;
+
+ vhack.anubis.instances."${cfg.fqdn}".target = "http://127.0.0.1:${toString config.services.turtle.port}";
+
+ services = {
+ turtle = {
+ enable = true;
+ host = "127.0.0.1";
+
+ database.createLocally = true;
+ };
+ };
+ };
+}
diff --git a/modules/by-name/ba/back/module.nix b/modules/by-name/ba/back/module.nix
deleted file mode 100644
index d47ffce..0000000
--- a/modules/by-name/ba/back/module.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- config,
- lib,
- vhackPackages,
- pkgs,
- ...
-}: let
- cfg = config.vhack.back;
-in {
- options.vhack.back = {
- enable = lib.mkEnableOption "Back issue tracker (inspired by tvix's panettone)";
-
- domain = lib.mkOption {
- type = lib.types.str;
- description = "The domain to host this `back` instance on.";
- };
-
- settings = {
- scan_path = lib.mkOption {
- type = lib.types.path;
- description = "The path to the directory under which all the repositories reside";
- };
- project_list = lib.mkOption {
- type = lib.types.path;
- description = "The path to the `projects.list` file.";
- };
-
- source_code_repository_url = lib.mkOption {
- description = "The url to the source code of this instance of back";
- default = "https://git.foss-syndicate.org/vhack.eu/nixos-server/tree/pkgs/by-name/ba/back";
- type = lib.types.str;
- };
-
- root_url = lib.mkOption {
- type = lib.types.str;
- description = "The url to this instance of back.";
- default = "https://${cfg.domain}";
- };
- };
- };
-
- config = lib.mkIf cfg.enable {
- systemd.services."back" = {
- description = "Back issue tracking system.";
- requires = ["network-online.target"];
- after = ["network-online.target"];
- wantedBy = ["default.target"];
-
- serviceConfig = {
- ExecStart = "${lib.getExe vhackPackages.back} ${(pkgs.formats.json {}).generate "config.json" cfg.settings}";
-
- # Ensure that the service can read the repository
- # FIXME(@bpeetz): This has the implied assumption, that all the exposed git
- # repositories are readable for the git group. This should not be necessary. <2024-12-23>
- User = "git";
- Group = "git";
-
- DynamicUser = true;
- Restart = "always";
-
- # Sandboxing
- ProtectSystem = "strict";
- ProtectHome = true;
- PrivateTmp = true;
- PrivateDevices = true;
- ProtectHostname = true;
- ProtectClock = true;
- ProtectKernelTunables = true;
- ProtectKernelModules = true;
- ProtectKernelLogs = true;
- ProtectControlGroups = true;
- RestrictAddressFamilies = ["AF_UNIX" "AF_INET" "AF_INET6"];
- RestrictNamespaces = true;
- LockPersonality = true;
- MemoryDenyWriteExecute = true;
- RestrictRealtime = true;
- RestrictSUIDSGID = true;
- RemoveIPC = true;
- PrivateMounts = true;
- # System Call Filtering
- SystemCallArchitectures = "native";
- SystemCallFilter = ["~@cpu-emulation @debug @keyring @mount @obsolete @privileged @setuid"];
- };
- };
- services.nginx.virtualHosts."${cfg.domain}" = {
- locations."/".proxyPass = "http://127.0.0.1:8000";
-
- enableACME = true;
- forceSSL = true;
- };
- };
-}
diff --git a/modules/by-name/co/constants/module.nix b/modules/by-name/co/constants/module.nix
index 2115a37..9127488 100644
--- a/modules/by-name/co/constants/module.nix
+++ b/modules/by-name/co/constants/module.nix
@@ -52,6 +52,15 @@
stalwart-mail-certificates = 338; # GROUP
sharkey = 339;
redis-sharkey = 340;
+ grocy = 341;
+ anubis = 342;
+ postfix-tlspol = 343;
+ rocie = 344;
+ fluent-bit = 345;
+ loki = 346;
+ grafana = 347;
+ node-exporter = 348;
+ smartctl-exporter-access = 349;
# As per the NixOS file, the uids should not be greater or equal to 400;
};
@@ -63,6 +72,7 @@
inherit
(uids)
acme
+ anubis
dhcpcd
etebase-server
knot-resolver
@@ -74,6 +84,7 @@
nscd
opendkim
peertube
+ postfix-tlspol
redis-mastodon
redis-nextcloud
redis-peertube
@@ -85,9 +96,16 @@
systemd-oom
sharkey
redis-sharkey
+ grocy
systemd-coredump # matches systemd-coredump user
resolvconf # This group is not matched to an user?
stalwart-mail-certificates # This group is used to connect nginx and stalwart-mail
+ rocie
+ fluent-bit
+ loki
+ grafana
+ node-exporter
+ smartctl-exporter-access
;
# The gid should match the uid. Thus should not be >= 400;
diff --git a/modules/by-name/et/etesync/module.nix b/modules/by-name/et/etesync/module.nix
index bcabc8a..4dc8575 100644
--- a/modules/by-name/et/etesync/module.nix
+++ b/modules/by-name/et/etesync/module.nix
@@ -45,26 +45,14 @@ in {
];
services.nginx = {
- enable = true;
- recommendedTlsSettings = true;
- recommendedOptimisation = true;
- recommendedGzipSettings = true;
- recommendedProxySettings = true;
-
virtualHosts = {
"etebase.vhack.eu" = {
- enableACME = true;
- forceSSL = true;
-
locations = {
# TODO: Maybe fix permissions to use pregenerated static files which would
# improve performance.
#"/static" = {
# root = config.services.etebase-server.settings.global.static_root;
#};
- "/" = {
- proxyPass = "http://127.0.0.1:${builtins.toString config.services.etebase-server.port}";
- };
};
serverAliases = [
"dav.vhack.eu"
@@ -72,6 +60,8 @@ in {
};
};
};
+ vhack.anubis.instances."etebase.vhack.eu".target = "http://127.0.0.1:${builtins.toString config.services.etebase-server.port}";
+
users = {
users.etebase-server.uid = config.vhack.constants.ids.uids.etebase-server;
groups.etebase-server.gid = config.vhack.constants.ids.gids.etebase-server;
diff --git a/modules/by-name/gi/git-back/module.nix b/modules/by-name/gi/git-back/module.nix
new file mode 100644
index 0000000..90be345
--- /dev/null
+++ b/modules/by-name/gi/git-back/module.nix
@@ -0,0 +1,33 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.vhack.git-back;
+in {
+ options.vhack.git-back = {
+ enable = lib.mkEnableOption "Back integration into git-server";
+
+ domain = lib.mkOption {
+ type = lib.types.str;
+ description = "The domain where to deploy back";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ # vhack.back = {
+ # enable = true;
+ #
+ # user = "git";
+ # group = "git";
+ #
+ # settings = {
+ # scan_path = "${config.services.gitolite.dataDir}/repositories";
+ # project_list = "${config.services.gitolite.dataDir}/projects.list";
+ # root_url = "https://${cfg.domain}";
+ # };
+ # };
+ #
+ # vhack.anubis.instances."${cfg.domain}".target = "http://127.0.0.1:8000";
+ };
+}
diff --git a/modules/by-name/gi/git-server/module.nix b/modules/by-name/gi/git-server/module.nix
index db35897..3e2c848 100644
--- a/modules/by-name/gi/git-server/module.nix
+++ b/modules/by-name/gi/git-server/module.nix
@@ -8,8 +8,7 @@
cgitCss = import ./css.nix {
inherit pkgs;
- cgitPkg =
- config.services.cgit."${cfg.domain}".package;
+ cgitPkg = config.services.cgit."${cfg.domain}".package;
};
in {
options.vhack.git-server = {
@@ -84,10 +83,16 @@ in {
cgit."${cfg.domain}" = {
enable = true;
- package = pkgs.cgit-pink;
+ package = pkgs.cgit;
scanPath = "${config.services.gitolite.dataDir}/repositories";
user = "git";
group = "git";
+
+ # Don't bypass `cgit` when performing a http only clone.
+ # This is slightly slower, but we don't need to worry about the access
+ # restrictions also being by-passed.
+ gitHttpBackend.enable = false;
+
settings = {
branch-sort = "age";
diff --git a/modules/by-name/gr/grocy/module.nix b/modules/by-name/gr/grocy/module.nix
new file mode 100644
index 0000000..28107f2
--- /dev/null
+++ b/modules/by-name/gr/grocy/module.nix
@@ -0,0 +1,51 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.vhack.grocy;
+ data = "/var/lib/grocy";
+in {
+ options.vhack.grocy = {
+ enable = lib.mkEnableOption "grocy";
+
+ domain = lib.mkOption {
+ type = lib.types.str;
+ description = "FQDN for the grocy instance.";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.grocy = {
+ enable = true;
+
+ hostName = cfg.domain;
+ dataDir = data;
+
+ settings = {
+ currency = "EUR";
+ culture = "sv_SE";
+ calendar.firstDayOfWeek = 1;
+ };
+ };
+
+ vhack.persist.directories = [
+ {
+ directory = data;
+ user = "grocy";
+ group = "grocy";
+ mode = "0700";
+ }
+ ];
+
+ users = {
+ groups.grocy = {
+ gid = config.vhack.constants.ids.gids.grocy;
+ };
+ users.grocy = {
+ extraGroups = ["grocy"];
+ uid = config.vhack.constants.ids.uids.grocy;
+ };
+ };
+ };
+}
diff --git a/modules/by-name/in/invidious-router/module.nix b/modules/by-name/in/invidious-router/module.nix
index f85a06c..750f852 100644
--- a/modules/by-name/in/invidious-router/module.nix
+++ b/modules/by-name/in/invidious-router/module.nix
@@ -1,7 +1,7 @@
{
config,
lib,
- pkgsUnstable,
+ pkgs,
...
}: let
cfg = config.vhack.invidious-router;
@@ -21,7 +21,7 @@ in {
config = lib.mkIf cfg.enable {
services.invidious-router = {
enable = true;
- package = pkgsUnstable.invidious-router;
+ package = pkgs.invidious-router;
settings = {
app = {
listen = "127.0.0.1:8050";
diff --git a/modules/by-name/ma/mail/module.nix b/modules/by-name/ma/mail/module.nix
index 55f2fb8..768eb33 100644
--- a/modules/by-name/ma/mail/module.nix
+++ b/modules/by-name/ma/mail/module.nix
@@ -27,12 +27,6 @@ in {
mode = "0700";
}
{
- directory = "/var/lib/mail/sieve";
- user = "virtualMail";
- group = "virtualMail";
- mode = "0700";
- }
- {
directory = "/var/lib/mail/vmail";
user = "virtualMail";
group = "virtualMail";
@@ -63,27 +57,32 @@ in {
mode = "0700";
}
];
+
vhack.nginx.enable = true;
security.acme.certs = {
"${cfg.fqdn}" = {
domain = cfg.fqdn;
};
};
+
mailserver = {
enable = true;
inherit (cfg) fqdn;
- useFsLayout = true;
+ stateVersion = 5;
- extraVirtualAliases = {
+ aliases = {
"abuse@vhack.eu" = all_admins;
"postmaster@vhack.eu" = all_admins;
"admin@vhack.eu" = all_admins;
};
- mailDirectory = "/var/lib/mail/vmail";
- dkimKeyDirectory = "/var/lib/mail/dkim";
- sieveDirectory = "/var/lib/mail/sieve";
+ storage = {
+ directoryLayout = "fs";
+ path = "/var/lib/mail/vmail";
+ };
+
+ dkim.keyDirectory = "/var/lib/mail/dkim";
backup.snapshotRoot = "/var/lib/mail/backup";
enableImap = false;
@@ -95,9 +94,8 @@ in {
enableSubmissionSsl = true;
openFirewall = true;
- keyFile = "/var/lib/acme/${cfg.fqdn}/key.pem";
- certificateScheme = "acme";
- certificateFile = "/var/lib/acme/${cfg.fqdn}/fullchain.pem";
+ # Reference the existing ACME configuration created by nginx
+ x509.useACMEHost = cfg.fqdn;
domains = [
"vhack.eu"
@@ -110,7 +108,7 @@ in {
"sils.sils.li"
];
- loginAccounts = {
+ accounts = {
"sils@vhack.eu" = {
hashedPassword = "$2b$05$RW/Svgk7iGxvP5W7ZwUZ1e.a3fj4fteevb2MtfFYYD0d1DQ17y9Fm";
};
@@ -156,11 +154,13 @@ in {
knot-resolver.uid = config.vhack.constants.ids.uids.knot-resolver;
redis-rspamd.uid = config.vhack.constants.ids.uids.redis-rspamd;
rspamd.uid = config.vhack.constants.ids.uids.rspamd;
+ postfix-tlspol.uid = config.vhack.constants.ids.uids.postfix-tlspol;
};
groups = {
knot-resolver.gid = lib.mkForce config.vhack.constants.ids.gids.knot-resolver;
redis-rspamd.gid = config.vhack.constants.ids.gids.redis-rspamd;
rspamd.gid = config.vhack.constants.ids.gids.rspamd;
+ postfix-tlspol.gid = config.vhack.constants.ids.gids.postfix-tlspol;
};
};
};
diff --git a/modules/by-name/ma/mastodon/patches/0001-feat-treewide-Increase-character-limit-to-5000-in-me.patch b/modules/by-name/ma/mastodon/patches/0001-feat-treewide-Increase-character-limit-to-5000-in-me.patch
index 35dc809..870492a 100644
--- a/modules/by-name/ma/mastodon/patches/0001-feat-treewide-Increase-character-limit-to-5000-in-me.patch
+++ b/modules/by-name/ma/mastodon/patches/0001-feat-treewide-Increase-character-limit-to-5000-in-me.patch
@@ -1,6 +1,6 @@
-From ab67426c53d343eee349de501767ecbbf5d211ad Mon Sep 17 00:00:00 2001
+From 265bc7b12ab8229225b13565a361051b9e120792 Mon Sep 17 00:00:00 2001
From: Benedikt Peetz <benedikt.peetz@b-peetz.de>
-Date: Sat, 21 Dec 2024 20:07:11 +0100
+Date: Tue, 7 Jul 2026 11:34:50 +0200
Subject: [PATCH] feat(treewide): Increase character limit to 5000 in messages
The default of 500 was just not enough.
@@ -10,31 +10,31 @@ The default of 500 was just not enough.
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/javascript/mastodon/features/compose/containers/compose_form_container.js b/app/javascript/mastodon/features/compose/containers/compose_form_container.js
-index bda2edba6..76ac65bf3 100644
+index c5cffff10d..2172a0ad8f 100644
--- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js
+++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js
-@@ -28,7 +28,7 @@ const mapStateToProps = state => ({
- anyMedia: state.getIn(['compose', 'media_attachments']).size > 0,
+@@ -58,7 +58,7 @@ const mapStateToProps = state => ({
+ && !state.getIn(['settings', 'dismissed_banners', PRIVATE_QUOTE_MODAL_ID]),
isInReply: state.getIn(['compose', 'in_reply_to']) !== null,
lang: state.getIn(['compose', 'language']),
-- maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 500),
-+ maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 5000),
+- maxChars: state.getIn(['server', 'server', 'item', 'configuration', 'statuses', 'max_characters'], 500),
++ maxChars: state.getIn(['server', 'server', 'item', 'configuration', 'statuses', 'max_characters'], 5000),
});
-
- const mapDispatchToProps = (dispatch) => ({
+
+ const mapDispatchToProps = (dispatch, props) => ({
diff --git a/app/validators/status_length_validator.rb b/app/validators/status_length_validator.rb
-index dc841ded3..9cb1ec94b 100644
+index 575aaf1869..ecefca6fe9 100644
--- a/app/validators/status_length_validator.rb
+++ b/app/validators/status_length_validator.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
-
+
class StatusLengthValidator < ActiveModel::Validator
- MAX_CHARS = 500
+ MAX_CHARS = 5000
URL_PLACEHOLDER_CHARS = 23
URL_PLACEHOLDER = 'x' * 23
-
---
-2.47.0
+
+--
+2.54.0
diff --git a/modules/by-name/ma/matrix/module.nix b/modules/by-name/ma/matrix/module.nix
index f34ecf4..39631ef 100644
--- a/modules/by-name/ma/matrix/module.nix
+++ b/modules/by-name/ma/matrix/module.nix
@@ -62,10 +62,12 @@ in {
tmpfiles.rules = [
"d /etc/matrix 0755 matrix-synapse matrix-synapse"
];
- services.postgresql.postStart = ''
- $PSQL -tAc "ALTER ROLE matrix-synapse WITH ENCRYPTED PASSWORD 'synapse';"
- $PSQL -tAc "ALTER ROLE mautrix-whatsapp WITH ENCRYPTED PASSWORD 'whatsapp';"
- '';
+ # TODO: Do we still need this? <2025-12-18>
+ # The `$PSQL` env var seemed to go away between the 25.05 -> 25.11 update
+ # services.postgresql.postStart = ''
+ # $PSQL -tAc "ALTER ROLE \"matrix-synapse\" WITH PASSWORD 'synapse';"
+ # $PSQL -tAc "ALTER ROLE \"mautrix-whatsapp\" WITH PASSWORD 'whatsapp';"
+ # '';
};
services = {
diff --git a/modules/by-name/mo/monitoring/components/grafana.nix b/modules/by-name/mo/monitoring/components/grafana.nix
new file mode 100644
index 0000000..6fe5b70
--- /dev/null
+++ b/modules/by-name/mo/monitoring/components/grafana.nix
@@ -0,0 +1,309 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.vhack.monitoring.grafana;
+in {
+ options.vhack.monitoring.grafana = {
+ enable = lib.mkEnableOption "grafana";
+
+ orgId = lib.mkOption {
+ type = lib.types.int;
+ description = "Org ID where all vhack related config will be stored.";
+ default = 1;
+ };
+
+ contactPoints = lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ description = "List of email addresses to send alerts to";
+ default = [];
+ };
+
+ dashboards = lib.mkOption {
+ type = lib.types.listOf lib.types.path;
+ description = "dashboards to provision under 'Vhack' folder.";
+ default = [];
+ };
+
+ fqdn = lib.mkOption {
+ type = lib.types.str;
+ description = "Domain under which Grafana will be served.";
+ example = "grafana.example.org";
+ };
+
+ adminPassword = lib.mkOption {
+ type = lib.types.path;
+ description = "The age-encrypted initial admin password; passed to agenix";
+ };
+
+ secretKey = lib.mkOption {
+ type = lib.types.path;
+ description = "The age-encrypted secret key, used for signing; passed to agenix";
+ };
+
+ port = lib.mkOption {
+ type = lib.types.port;
+ description = "Port where Grafana listens to HTTP requests.";
+ default = 3000;
+ };
+
+ debugLog = lib.mkOption {
+ type = lib.types.bool;
+ description = "Set to true to enable debug logging of the infrastructure serving Grafana.";
+ default = false;
+ example = true;
+ };
+
+ smtp = lib.mkOption {
+ description = "SMTP options.";
+ default = null;
+ type = lib.types.nullOr (
+ lib.types.submodule {
+ options = {
+ from_address = lib.mkOption {
+ type = lib.types.str;
+ description = "SMTP address from which the emails originate.";
+ example = "vaultwarden@mydomain.com";
+ };
+ from_name = lib.mkOption {
+ type = lib.types.str;
+ description = "SMTP name from which the emails originate.";
+ default = "Grafana";
+ };
+ host = lib.mkOption {
+ type = lib.types.str;
+ description = "SMTP host to send the emails to.";
+ };
+ port = lib.mkOption {
+ type = lib.types.port;
+ description = "SMTP port to send the emails to.";
+ default = 25;
+ };
+ username = lib.mkOption {
+ type = lib.types.str;
+ description = "Username to connect to the SMTP host.";
+ };
+ passwordFile = lib.mkOption {
+ type = lib.types.str;
+ description = "File containing the password to connect to the SMTP host.";
+ };
+ };
+ }
+ );
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ assertions = [
+ {
+ assertion = builtins.length cfg.contactPoints > 0;
+ message = "Must have at least one contact point for alerting";
+ }
+ ];
+
+ age.secrets = {
+ grafanaInitialAdminPw = {
+ file = cfg.adminPassword;
+ mode = "0700";
+ owner = "grafana";
+ group = "grafana";
+ };
+ grafanaSecretKey = {
+ file = cfg.secretKey;
+ mode = "0700";
+ owner = "grafana";
+ group = "grafana";
+ };
+ };
+
+ users = {
+ groups = {
+ grafana = {
+ gid = config.vhack.constants.ids.gids.grafana;
+ };
+ };
+ users = {
+ grafana = {
+ isSystemUser = true;
+ group = "grafana";
+ uid = lib.mkForce config.vhack.constants.ids.uids.grafana;
+ };
+ };
+ };
+
+ vhack = {
+ postgresql.enable = true;
+
+ persist.directories = [
+ {
+ directory = "/var/lib/grafana/";
+ user = "grafana";
+ group = "grafana";
+ mode = "0700";
+ }
+ ];
+
+ monitoring.grafana.dashboards = [
+ ../dashboards/node_exporter.json
+ ../dashboards/performance.json
+ ../dashboards/scraping_jobs.json
+ ../dashboards/systemd_exporter.json
+ ];
+
+ anubis.instances."${cfg.fqdn}".target = "http://${config.services.grafana.settings.server.http_addr}:${toString cfg.port}";
+ };
+
+ services = {
+ postgresql = {
+ ensureUsers = [
+ {
+ name = "grafana";
+ ensureDBOwnership = true;
+ }
+ ];
+ ensureDatabases = [
+ "grafana"
+ ];
+ };
+
+ grafana = {
+ enable = true;
+
+ settings = {
+ database = {
+ host = "/run/postgresql";
+ user = "grafana";
+ name = "grafana";
+ type = "postgres";
+ };
+
+ security = {
+ secret_key = "$__file{${config.age.secrets.grafanaSecretKey.path}}";
+
+ disable_initial_admin_creation = false;
+ admin_password = "$__file{${config.age.secrets.grafanaInitialAdminPw.path}}";
+ };
+
+ server = {
+ http_addr = "127.0.0.1";
+ http_port = cfg.port;
+ domain = cfg.fqdn;
+ root_url = "https://${cfg.fqdn}";
+ router_logging = cfg.debugLog;
+ };
+
+ smtp = lib.mkIf (!(isNull cfg.smtp)) {
+ enabled = true;
+ inherit (cfg.smtp) from_address from_name;
+ host = "${cfg.smtp.host}:${toString cfg.smtp.port}";
+ user = cfg.smtp.username;
+ password = "$__file{${cfg.smtp.passwordFile}}";
+ };
+ };
+
+ provision = {
+ dashboards.settings = lib.mkIf (cfg.dashboards != []) {
+ apiVersion = 1;
+ providers = [
+ {
+ folder = "Vhack";
+ options.path = pkgs.symlinkJoin {
+ name = "dashboards";
+ paths = map (p: pkgs.runCommand "dashoard" {} "mkdir $out; cp ${p} $out") cfg.dashboards;
+ };
+ allowUiUpdates = true;
+ disableDeletion = true;
+ }
+ ];
+ };
+ datasources.settings = {
+ apiVersion = 1;
+ datasources = [
+ {
+ inherit (cfg) orgId;
+ name = "Prometheus";
+ type = "prometheus";
+ url = "http://127.0.0.1:${toString config.services.prometheus.port}";
+ uid = "df80f9f5-97d7-4112-91d8-72f523a02b09";
+ isDefault = true;
+ version = 1;
+ }
+ {
+ inherit (cfg) orgId;
+ name = "Loki";
+ type = "loki";
+ url = "http://127.0.0.1:${toString config.services.loki.configuration.server.http_listen_port}";
+ uid = "cd6cc53e-840c-484d-85f7-96fede324006";
+ version = 1;
+ }
+ ];
+ deleteDatasources = [
+ {
+ inherit (cfg) orgId;
+ name = "Prometheus";
+ }
+ {
+ inherit (cfg) orgId;
+ name = "Loki";
+ }
+ ];
+ };
+ alerting = {
+ contactPoints.settings = {
+ apiVersion = 1;
+ contactPoints = [
+ {
+ inherit (cfg) orgId;
+ name = "grafana-default-email";
+ receivers = lib.optionals ((builtins.length cfg.contactPoints) > 0) [
+ {
+ uid = "sysadmin";
+ type = "email";
+ settings.addresses = lib.concatStringsSep ";" cfg.contactPoints;
+ }
+ ];
+ }
+ ];
+ };
+ policies.settings = {
+ apiVersion = 1;
+ policies = [
+ {
+ inherit (cfg) orgId;
+ receiver = "grafana-default-email";
+ group_by = [
+ "grafana_folder"
+ "alertname"
+ ];
+ group_wait = "30s";
+ group_interval = "5m";
+ repeat_interval = "4h";
+ }
+ ];
+ # resetPolicies seems to happen after setting the above policies, effectively rolling back
+ # any updates.
+ };
+ rules.settings = let
+ rules = builtins.fromJSON (builtins.readFile ../rules.json);
+ in {
+ apiVersion = 1;
+ groups = [
+ {
+ inherit (cfg) orgId;
+ name = "SysAdmin";
+ folder = "Vhack";
+ interval = "10m";
+ inherit rules;
+ }
+ ];
+ # deleteRules seems to happen after creating the above rules, effectively rolling back
+ # any updates.
+ };
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/modules/by-name/mo/monitoring/components/loki.nix b/modules/by-name/mo/monitoring/components/loki.nix
new file mode 100644
index 0000000..149e577
--- /dev/null
+++ b/modules/by-name/mo/monitoring/components/loki.nix
@@ -0,0 +1,170 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.vhack.monitoring.loki;
+in {
+ options.vhack.monitoring.loki = {
+ enable = lib.mkEnableOption "loki";
+
+ port = lib.mkOption {
+ type = lib.types.port;
+ description = "Port where Loki listens to HTTP requests.";
+ default = 3002;
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ vhack = {
+ persist.directories = [
+ {
+ directory = "/var/lib/loki";
+ user = "loki";
+ group = "loki";
+ mode = "0700";
+ }
+ {
+ directory = "/var/lib/fluent-bit";
+ user = "fluent-bit";
+ group = "fluent-bit";
+ mode = "0700";
+ }
+ ];
+ };
+
+ users = {
+ groups = {
+ fluent-bit = {
+ gid = config.vhack.constants.ids.gids.fluent-bit;
+ };
+ loki = {
+ gid = config.vhack.constants.ids.gids.loki;
+ };
+ };
+ users = {
+ fluent-bit = {
+ isSystemUser = true;
+ group = "fluent-bit";
+ uid = config.vhack.constants.ids.uids.fluent-bit;
+ };
+ loki = {
+ isSystemUser = true;
+ group = "loki";
+ uid = config.vhack.constants.ids.uids.loki;
+ };
+ };
+ };
+
+ # I decided to switch to fluent-bit because it can be tested locally https://docs.fluentbit.io/manual/local-testing/logging-pipeline
+ systemd.services.fluent-bit = {
+ serviceConfig = {
+ StateDirectory = "fluent-bit";
+ User = "fluent-bit";
+ Group = "fluent-bit";
+ DynamicUser = lib.mkForce false;
+ };
+ };
+ services = {
+ fluent-bit = {
+ enable = true;
+ settings = {
+ service = {
+ flush = 1;
+ log_level = "info";
+ http_server = "true";
+ http_listen = "127.0.0.1";
+ http_port = 9080;
+ grace = 30;
+ };
+
+ pipeline = {
+ inputs = [
+ {
+ name = "systemd";
+
+ # The asterisk appends the _SYSTEMD_UNIT to the prefix.
+ tag = "systemd.*";
+
+ # Read logs from this systemd journal directory.
+ path = "/var/log/journal";
+
+ # Database file to keep track of the journald cursor.
+ db = "/var/lib/fluent-bit/systemd.db";
+
+ # Start reading new entries. Skip entries already stored in journald.
+ read_from_tail = true;
+
+ # Max entries to lookback on start.
+ max_entries = 10000;
+ }
+ ];
+
+ outputs = [
+ {
+ name = "loki";
+
+ match = "systemd.*";
+
+ host = "localhost";
+ port = config.services.loki.configuration.server.http_listen_port;
+
+ labels = lib.concatMapAttrsStringSep ", " (n: v: "${n}=${v}") {
+ job = "systemd-journal";
+ inherit (config.vhack.monitoring.grafana) fqdn;
+ hostname = config.networking.hostName;
+ };
+
+ label_keys = "$unit";
+ }
+ ];
+ };
+ };
+ graceLimit = "1m";
+ };
+
+ loki = {
+ enable = true;
+ dataDir = "/var/lib/loki";
+ package = pkgs.grafana-loki;
+ configuration = {
+ auth_enabled = false;
+
+ server.http_listen_port = cfg.port;
+
+ common = {
+ ring = {
+ instance_addr = "127.0.0.1";
+ kvstore = {
+ store = "inmemory";
+ };
+ };
+
+ replication_factor = 1;
+ path_prefix = "/tmp/loki";
+ };
+
+ schema_config = {
+ configs = [
+ {
+ from = "2020-05-15";
+ store = "tsdb";
+ object_store = "filesystem";
+ schema = "v13";
+ index = {
+ prefix = "index_";
+ period = "24h";
+ };
+ }
+ ];
+ };
+
+ storage_config = {
+ filesystem.directory = "/tmp/loki/chunks";
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/modules/by-name/mo/monitoring/components/perses.nix b/modules/by-name/mo/monitoring/components/perses.nix
new file mode 100644
index 0000000..b0f1ab6
--- /dev/null
+++ b/modules/by-name/mo/monitoring/components/perses.nix
@@ -0,0 +1,17 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.vhack.monitoring.perses;
+in {
+ options.vhack.monitoring.perses = {
+ enable = lib.mkEnableOption "perses";
+ };
+ config = lib.mkIf cfg.enable {
+ services.perses = {
+ enable = true;
+ };
+ };
+}
diff --git a/modules/by-name/mo/monitoring/components/prometheus.nix b/modules/by-name/mo/monitoring/components/prometheus.nix
new file mode 100644
index 0000000..ca947d3
--- /dev/null
+++ b/modules/by-name/mo/monitoring/components/prometheus.nix
@@ -0,0 +1,272 @@
+{
+ lib,
+ config,
+ nixLib,
+ ...
+}: let
+ cfg = config.vhack.monitoring.prometheus;
+
+ commonLabels = {
+ hostname = config.networking.hostName;
+ };
+
+ prom_cfg = config.services.prometheus;
+in {
+ options.vhack.monitoring.prometheus = {
+ enable = lib.mkEnableOption "prometheus";
+
+ port = lib.mkOption {
+ type = lib.types.port;
+ description = "Port where Prometheus listens to HTTP requests.";
+ default = 3001;
+ };
+
+ remoteWriteReceiver = lib.mkOption {
+ example = "https://prometheus.server2.vhack.eu";
+ type = lib.types.nullOr lib.types.str;
+ default = null;
+ description = ''
+ If not null, this prometheus server will be exposed via a reverse proxy and allow
+ other prometheus servers to write metrics to it.
+ '';
+ };
+ remoteWriteTo = lib.mkOption {
+ example = "https://prometheus.server3.vhack.eu";
+ type = lib.types.nullOr (lib.types.submodule {
+ options = {
+ port = lib.mkOption {
+ type = lib.types.nullOr lib.types.port;
+ default = null;
+ };
+ url = lib.mkOption {
+ type = lib.types.str;
+ };
+ };
+ });
+ default = null;
+ description = ''
+ If not null, this prometheus server will run in agent mode, writing all recived
+ metrics to the specified remote prometheus server.
+ '';
+ };
+
+ sources = lib.mkOption {
+ type = lib.types.listOf (lib.types.submodule {
+ options = {
+ name = lib.mkOption {
+ type = lib.types.str;
+ };
+ target = lib.mkOption {
+ type = lib.types.str;
+ description = "The target url to scrape from.";
+ };
+ extra = lib.mkOption {
+ type = lib.types.attrsOf lib.types.anything;
+ };
+ };
+ });
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ vhack = {
+ nginx.enable = true;
+
+ persist.directories = [
+ {
+ directory = "/var/lib/prometheus2";
+ user = "prometheus";
+ group = "prometheus";
+ mode = "0700";
+ }
+ ];
+
+ monitoring.prometheus.sources = [
+ {
+ name = "node";
+ target = "127.0.0.1:${toString prom_cfg.exporters.node.port}";
+ }
+ {
+ name = "prometheus_internal";
+ target = "127.0.0.1:${toString prom_cfg.port}";
+ }
+ {
+ name = "systemd";
+ target = "127.0.0.1:${toString prom_cfg.exporters.systemd.port}";
+ }
+ ];
+ };
+
+ services.nginx = lib.mkIf (cfg.remoteWriteReceiver != null) {
+ virtualHosts.${cfg.remoteWriteReceiver} = {
+ locations."/" = {
+ proxyPass = "http://127.0.0.1:${toString cfg.port}/api/v1/write";
+
+ recommendedProxySettings = true;
+ proxyWebsockets = true;
+ };
+
+ enableACME = true;
+ forceSSL = true;
+ };
+ };
+
+ users = {
+ groups = {
+ node-exporter.gid = config.vhack.constants.ids.gids.node-exporter;
+ };
+ users = {
+ node-exporter = {
+ isSystemUser = true;
+ group = "node-exporter";
+ uid = config.vhack.constants.ids.uids.node-exporter;
+ };
+ };
+ };
+
+ services = {
+ prometheus = {
+ enable = true;
+ inherit (cfg) port;
+
+ globalConfig = {
+ scrape_interval = "15s";
+ };
+ remoteWrite = lib.optionals (cfg.remoteWriteTo != null) [
+ {
+ url = let
+ port =
+ if (cfg.remoteWriteTo.port != null)
+ then ":${toString cfg.remoteWriteTo.port}"
+ else "";
+ in "${cfg.remoteWriteTo.url}${port}";
+ # TODO: Needs RFC42 for prometheus <2026-07-19>
+ # protobuf_message = "io.prometheus.write.v2.Request";
+ }
+ ];
+
+ enableAgentMode = cfg.remoteWriteTo != null;
+ extraFlags = lib.mkMerge [
+ (
+ lib.mkIf (cfg.remoteWriteReceiver != null) [
+ "--web.enable-remote-write-receiver"
+ # "--web.remote-write-receiver.accepted-protobuf-messages=io.prometheus.write.v2.Request"
+ ]
+ )
+ ];
+
+ scrapeConfigs = builtins.map (attr:
+ nixLib.warnMerge {
+ job_name = attr.name;
+ static_configs = [
+ {
+ targets = [attr.target];
+ labels = commonLabels;
+ }
+ ];
+ }
+ attr.extra "prometheus scrapeConfig '${attr.name}'")
+ cfg.sources;
+ # ++ (lib.optional (builtins.length (lib.attrNames config.services.redis.servers) > 0) {
+ # job_name = "redis";
+ # static_configs = [
+ # {
+ # targets = ["127.0.0.1:${toString config.services.prometheus.exporters.redis.port}"];
+ # }
+ # ];
+ # }) ++ (lib.optional (builtins.length (lib.attrNames config.services.openvpn.servers) > 0) {
+ # job_name = "openvpn";
+ # static_configs = [
+ # {
+ # targets = ["127.0.0.1:${toString config.services.prometheus.exporters.openvpn.port}"];
+ # }
+ # ];
+ # })
+ # ++ (lib.optional config.services.dnsmasq.enable {
+ # job_name = "dnsmasq";
+ # static_configs = [
+ # {
+ # targets = ["127.0.0.1:${toString config.services.prometheus.exporters.dnsmasq.port}"];
+ # labels = commonLabels;
+ # }
+ # ];
+ # });
+
+ exporters = {
+ node = {
+ enable = true;
+ # https://github.com/prometheus/node_exporter#collectors
+ enabledCollectors = [
+ "arp"
+ "cpu"
+ "cpufreq"
+ "diskstats"
+ "dmi"
+ "edac"
+ "entropy"
+ "filefd"
+ "filesystem"
+ "hwmon"
+ "loadavg"
+ "meminfo"
+ "netclass"
+ "netdev"
+ "netstat"
+ "nvme"
+ "os"
+ "pressure"
+ "rapl"
+ "schedstat"
+ "stat"
+ "thermal_zone"
+ "time"
+ "uname"
+ "vmstat"
+ "zfs"
+
+ # Disabled by default
+ "cgroups"
+ "drm"
+ "ethtool"
+ "logind"
+ "wifi"
+ ];
+ port = 9112;
+ listenAddress = "127.0.0.1";
+ };
+ # services.prometheus.exporters.redis = lib.mkIf (builtins.length (lib.attrNames config.services.redis.servers) > 0) {
+ # enable = true;
+ # port = 9119;
+ # listenAddress = "127.0.0.1";
+ # };
+ # services.prometheus.exporters.openvpn = lib.mkIf (builtins.length (lib.attrNames config.services.openvpn.servers) > 0) {
+ # enable = true;
+ # port = 9121;
+ # listenAddress = "127.0.0.1";
+ # statusPaths = lib.mapAttrsToList (name: _config: "/tmp/openvpn/${name}.status") config.services.openvpn.servers;
+ # };
+ # dnsmasq = lib.mkIf config.services.dnsmasq.enable {
+ # enable = true;
+ # port = 9211;
+ # listenAddress = "127.0.0.1";
+ # };
+ systemd = {
+ enable = true;
+ port = 9116;
+ listenAddress = "127.0.0.1";
+ extraFlags = [
+ "--log.level=info"
+ "--web.disable-exporter-metrics"
+ # "--systemd.collector.enable-resolved"
+ "--systemd.collector.enable-restart-count"
+ # "--systemd.collector.enable-file-descriptor-size"
+ "--systemd.collector.enable-ip-accounting"
+ "--systemd.collector.unit-include=\".+\""
+ "--systemd.collector.unit-exclude=\".+\\\\.(device)\""
+ ];
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/modules/by-name/mo/monitoring/components/scrutiny.nix b/modules/by-name/mo/monitoring/components/scrutiny.nix
new file mode 100644
index 0000000..adb515e
--- /dev/null
+++ b/modules/by-name/mo/monitoring/components/scrutiny.nix
@@ -0,0 +1,100 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}: let
+ cfg = config.vhack.monitoring.scrutiny;
+in {
+ options.vhack.monitoring.scrutiny = {
+ enable = lib.mkEnableOption "scrutiny service";
+ };
+
+ # We don't currently _care_ about the health of the hardware, because hetzner does
+ # this for us (nor can we care, because it's not exposed in the VPS)
+ config = lib.mkIf false {
+ vhack.monitoring = {
+ prometheus.sources = [
+ {
+ name = "scrutiny";
+ extra.metrics_path = "/api/metrics";
+ target = "127.0.0.1:${toString config.services.scrutiny.settings.web.listen.port}";
+ }
+ {
+ name = "smartctl";
+ target = "127.0.0.1:${toString config.services.prometheus.exporters.smartctl.port}";
+ }
+ ];
+ grafana.dashboards = [
+ ../dashboards/Health.json
+ ];
+ };
+
+ users = {
+ groups = {
+ smartctl-exporter-access.gid = config.vhack.constants.ids.gids.smartctl-exporter-access;
+ };
+ users = {
+ smartctl-exporter-access = {
+ isSystemUser = true;
+ group = "smartctl-exporter-access";
+ uid = config.vhack.constants.ids.uids.smartctl-exporter-access;
+ };
+ };
+ };
+
+ services = {
+ scrutiny = {
+ enable = true;
+
+ openFirewall = false;
+
+ # This src includes Prometheus metrics exporter.
+ package = pkgs.scrutiny.overrideAttrs {
+ src = pkgs.fetchFromGitHub {
+ owner = "ibizaman";
+ repo = "scrutiny";
+ rev = "74faf06f77df83f29e7e1806cd88b2fafc0bbb82";
+ hash = "sha256-r0AVWL+E046xHxitwMPfRNTOpjuOk+W6tB41YgmLTPg=";
+ };
+
+ vendorHash = "sha256-kAlnlWnBMFCdgdak5L5hRquRtyLi5MTmDa/kxwqPs4E=";
+ };
+
+ settings = {
+ web = {
+ metrics.enabled = true; # Enables Prometheus exporter
+ listenHost = "127.0.0.1";
+ };
+ };
+
+ collector = {
+ enable = true;
+ };
+ };
+ prometheus = {
+ exporters.smartctl = {
+ enable = true;
+ port = 9115;
+ listenAddress = "127.0.0.1";
+ };
+ };
+ };
+
+ # nixpkgs.overlays = [
+ # (final: prev: {
+ # prometheus-systemd-exporter = prev.prometheus-systemd-exporter.overrideAttrs {
+ # src = final.fetchFromGitHub {
+ # owner = "ibizaman";
+ # repo = prev.prometheus-systemd-exporter.pname;
+ # # rev = "v${prev.prometheus-systemd-exporter.version}";
+ # rev = "next_timer";
+ # sha256 = "sha256-jzkh/616tsJbNxFtZ0xbdBQc16TMIYr9QOkPaeQw8xA=";
+ # };
+ #
+ # vendorHash = "sha256-4hsQ1417jLNOAqGkfCkzrmEtYR4YLLW2j0CiJtPg6GI=";
+ # };
+ # })
+ # ];
+ };
+}
diff --git a/modules/by-name/mo/monitoring/dashboards/node_exporter.json b/modules/by-name/mo/monitoring/dashboards/node_exporter.json
new file mode 100644
index 0000000..1666125
--- /dev/null
+++ b/modules/by-name/mo/monitoring/dashboards/node_exporter.json
@@ -0,0 +1,21817 @@
+{
+ "apiVersion": "dashboard.grafana.app/v2",
+ "kind": "Dashboard",
+ "metadata": {
+ "name": "rYdddlPWk",
+ "namespace": "default",
+ "uid": "b3cd6890-d44d-45c4-8b59-b822bf2ff401",
+ "resourceVersion": "1784467637439232",
+ "generation": 1,
+ "creationTimestamp": "2026-07-19T13:27:17Z",
+ "labels": {
+ "grafana.app/deprecatedInternalID": "2674631701774336"
+ },
+ "annotations": {
+ "grafana.app/createdBy": "user:dfsj9uc3855oga",
+ "grafana.app/folder": "",
+ "grafana.app/saved-from-ui": "Grafana v13.0.3 (NA)"
+ }
+ },
+ "spec": {
+ "annotations": [
+ {
+ "kind": "AnnotationQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "datasource",
+ "version": "v0",
+ "datasource": {
+ "name": "grafana"
+ },
+ "spec": {
+ "limit": 100,
+ "matchAny": false,
+ "tags": [],
+ "type": "dashboard"
+ }
+ },
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "builtIn": true,
+ "legacyOptions": {
+ "type": "dashboard"
+ }
+ }
+ }
+ ],
+ "cursorSync": "Crosshair",
+ "editable": true,
+ "elements": {
+ "panel-104": {
+ "kind": "Panel",
+ "spec": {
+ "id": 104,
+ "title": "TCP Errors",
+ "description": "Tracks various TCP error and congestion-related events, including retransmissions, timeouts, dropped connections, and buffer issues",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_ListenOverflows{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Listen Overflows",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_ListenDrops{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Listen Drops",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_TCPSynRetrans{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "SYN Retransmits",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Tcp_RetransSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "Segment Retransmits",
+ "range": true
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Tcp_InErrs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "Receive Errors",
+ "range": true
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Tcp_OutRsts{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "RST Sent",
+ "range": true
+ }
+ },
+ "refId": "F",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_TCPRcvQDrop{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "Receive Queue Drops",
+ "range": true
+ }
+ },
+ "refId": "G",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_TCPOFOQueue{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "Out-of-order Queued",
+ "range": true
+ }
+ },
+ "refId": "H",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_TCPTimeouts{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "TCP Timeouts",
+ "range": true
+ }
+ },
+ "refId": "I",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-109": {
+ "kind": "Panel",
+ "spec": {
+ "id": 109,
+ "title": "UDP Errors",
+ "description": "Rate of UDP and UDPLite datagram delivery errors, including missing listeners, buffer overflows, and protocol-specific issues",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Udp_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP Rx in Errors",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Udp_NoPorts{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP No Listener",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_UdpLite_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "UDPLite Rx in Errors",
+ "range": true
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Udp_RcvbufErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP Rx in Buffer Errors",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Udp_SndbufErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP Tx out Buffer Errors",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-115": {
+ "kind": "Panel",
+ "spec": {
+ "id": 115,
+ "title": "ICMP In / Out",
+ "description": "Number of ICMP messages sent and received per second, including error and control messages",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Icmp_InMsgs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "ICMP Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Icmp_OutMsgs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "ICMP Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-124": {
+ "kind": "Panel",
+ "spec": {
+ "id": 124,
+ "title": "Sockstat UDP",
+ "description": "Number of UDP and UDPLite sockets currently in use",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_UDPLITE_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDPLite - In-Use Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_UDP_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP - In-Use Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-125": {
+ "kind": "Panel",
+ "spec": {
+ "id": 125,
+ "title": "Sockstat FRAG / RAW",
+ "description": "Number of FRAG and RAW sockets currently in use. RAW sockets are used for custom protocols or tools like ping; FRAG sockets are used internally for IP packet defragmentation",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_FRAG_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "FRAG - In-Use Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_RAW_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "RAW - In-Use Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-126": {
+ "kind": "Panel",
+ "spec": {
+ "id": 126,
+ "title": "Sockstat Used",
+ "description": "Total number of sockets currently in use across all protocols (TCP, UDP, UNIX, etc.), as reported by /proc/net/sockstat",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_sockets_used{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Total sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-127": {
+ "kind": "Panel",
+ "spec": {
+ "id": 127,
+ "title": "Disk I/O Utilization",
+ "description": "Percentage of time the disk was actively processing I/O operations",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\",device=~\"[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+\"} [$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{device}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-128": {
+ "kind": "Panel",
+ "spec": {
+ "id": 128,
+ "title": "Memory DirectMap",
+ "description": "How much memory is directly mapped in the kernel using different page sizes (4K, 2M, 1G). Helps monitor large page utilization in the direct map region",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_DirectMap1G_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "DirectMap 1G – Memory mapped with 1GB pages",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_DirectMap2M_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "DirectMap 2M – Memory mapped with 2MB pages",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_DirectMap4k_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "DirectMap 4K – Memory mapped with 4KB pages",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-129": {
+ "kind": "Panel",
+ "spec": {
+ "id": 129,
+ "title": "Memory Anonymous",
+ "description": "Memory used by anonymous pages (not backed by files), including standard and huge page allocations. Includes heap, stack, and memory-mapped anonymous regions",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_AnonHugePages_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "AnonHugePages – Anonymous memory using HugePages",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_AnonPages_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "AnonPages – Anonymous memory (non-file-backed)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-130": {
+ "kind": "Panel",
+ "spec": {
+ "id": 130,
+ "title": "Memory Writeback and Dirty",
+ "description": "Memory currently dirty (modified but not yet written to disk), being actively written back, or held by writeback buffers. High dirty or writeback memory may indicate disk I/O pressure or delayed flushing",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Writeback_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Writeback – Memory currently being flushed to disk",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_WritebackTmp_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "WritebackTmp – FUSE temporary writeback buffers",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Dirty_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Dirty – Memory marked dirty (pending write to disk)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_NFS_Unstable_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "NFS Unstable – Pages sent to NFS server, awaiting storage commit",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-131": {
+ "kind": "Panel",
+ "spec": {
+ "id": 131,
+ "title": "Memory Slab",
+ "description": "Kernel slab memory usage, separated into reclaimable and non-reclaimable categories. Reclaimable memory can be freed under memory pressure (e.g., caches), while unreclaimable memory is locked by the kernel for core functions",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_SUnreclaim_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "SUnreclaim – Non-reclaimable slab memory (kernel objects)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "SReclaimable – Potentially reclaimable slab memory (e.g., inode cache)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-133": {
+ "kind": "Panel",
+ "spec": {
+ "id": 133,
+ "title": "Disk R/W Merged",
+ "description": "Number of read and write requests merged per second that were queued to the device",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_reads_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "legendFormat": "{{device}} - Read",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_writes_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "legendFormat": "{{device}} - Write",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "iops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "read (–) / write (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Read.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-135": {
+ "kind": "Panel",
+ "spec": {
+ "id": 135,
+ "title": "Memory Committed",
+ "description": "Displays committed memory usage versus the system's commit limit. Exceeding the limit is allowed under Linux overcommit policies but may increase OOM risks under high load",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Committed_AS_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Committed_AS – Memory promised to processes (not necessarily used)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_CommitLimit_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "CommitLimit - Max allowable committed memory",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*CommitLimit - *./"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#BF1B00",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-136": {
+ "kind": "Panel",
+ "spec": {
+ "id": 136,
+ "title": "Memory LRU Active / Inactive (%)",
+ "description": "Proportion of memory pages in the kernel's active and inactive LRU lists relative to total RAM. Active pages have been recently used, while inactive pages are less recently accessed but still resident in memory",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_memory_Inactive_bytes{instance=\"$node\",job=\"$job\"}) \n/ \n(node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "legendFormat": "Inactive – Less recently used memory, more likely to be reclaimed",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_memory_Active_bytes{instance=\"$node\",job=\"$job\"}) \n/ \n(node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"})\n",
+ "format": "time_series",
+ "legendFormat": "Active – Recently used memory, retained unless under pressure",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Active.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "green",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Inactive.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-blue",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-137": {
+ "kind": "Panel",
+ "spec": {
+ "id": 137,
+ "title": "Memory Unevictable and MLocked",
+ "description": "Memory that is locked in RAM and cannot be swapped out. Includes both kernel-unevictable memory and user-level memory locked with mlock()",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Unevictable_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Unevictable – Kernel-pinned memory (not swappable)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Mlocked_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Mlocked – Application-locked memory via mlock()",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-138": {
+ "kind": "Panel",
+ "spec": {
+ "id": 138,
+ "title": "Memory Shared and Mapped",
+ "description": "Memory used for mapped files (such as libraries) and shared memory (shmem and tmpfs), including variants backed by huge pages",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Mapped_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Mapped – Memory mapped from files (e.g., libraries, mmap)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Shmem_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Shmem – Shared memory used by processes and tmpfs",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_ShmemHugePages_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "ShmemHugePages – Shared memory (shmem/tmpfs) allocated with HugePages",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_ShmemPmdMapped_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PMD Mapped – Shmem/tmpfs backed by Transparent HugePages (PMD)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-14": {
+ "kind": "Panel",
+ "spec": {
+ "id": 14,
+ "title": "CPU Cores",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))",
+ "instant": true,
+ "legendFormat": "__auto",
+ "range": false
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {
+ "maxDataPoints": 100
+ }
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-140": {
+ "kind": "Panel",
+ "spec": {
+ "id": 140,
+ "title": "Memory HugePages",
+ "description": "Displays HugePages memory usage in bytes, including allocated, free, reserved, and surplus memory. All values are calculated based on the number of huge pages multiplied by their configured size",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_memory_HugePages_Total{instance=\"$node\",job=\"$job\"} - node_memory_HugePages_Free{instance=\"$node\",job=\"$job\"}) * node_memory_Hugepagesize_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "HugePages Used – Currently allocated",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_HugePages_Rsvd{instance=\"$node\",job=\"$job\"} * node_memory_Hugepagesize_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "HugePages Reserved – Promised but unused",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_HugePages_Surp{instance=\"$node\",job=\"$job\"} * node_memory_Hugepagesize_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "HugePages Surplus – Dynamic pool extension",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_HugePages_Total{instance=\"$node\",job=\"$job\"} * node_memory_Hugepagesize_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "HugePages Total – Reserved memory",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-141": {
+ "kind": "Panel",
+ "spec": {
+ "id": 141,
+ "title": "Network Traffic Compressed",
+ "description": "Rate of compressed network packets received and transmitted per interface. These are common in low-bandwidth or special interfaces like PPP or SLIP",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_compressed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_compressed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-142": {
+ "kind": "Panel",
+ "spec": {
+ "id": 142,
+ "title": "Network Traffic Errors",
+ "description": "Rate of packet-level errors for each network interface. Receive errors may indicate physical or driver issues; transmit errors may reflect collisions or hardware faults",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_errs_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_errs_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-143": {
+ "kind": "Panel",
+ "spec": {
+ "id": 143,
+ "title": "Network Traffic Drop",
+ "description": "Rate of dropped packets per network interface. Receive drops can indicate buffer overflow or driver issues; transmit drops may result from outbound congestion or queuing limits",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_drop_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_drop_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-144": {
+ "kind": "Panel",
+ "spec": {
+ "id": 144,
+ "title": "Network Traffic Fifo",
+ "description": "Tracks FIFO buffer overrun errors on network interfaces. These occur when incoming or outgoing packets are dropped due to queue or buffer overflows, often indicating congestion or hardware limits",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_fifo_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_fifo_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-145": {
+ "kind": "Panel",
+ "spec": {
+ "id": 145,
+ "title": "Network Traffic Frame",
+ "description": "Rate of frame errors on received packets, typically caused by physical layer issues such as bad cables, duplex mismatches, or hardware problems",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_frame_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-146": {
+ "kind": "Panel",
+ "spec": {
+ "id": 146,
+ "title": "Network Traffic Multicast",
+ "description": "Rate of incoming multicast packets received per network interface. Multicast is used by protocols such as mDNS, SSDP, and some streaming or cluster services",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_multicast_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-148": {
+ "kind": "Panel",
+ "spec": {
+ "id": 148,
+ "title": "Processes Forks",
+ "description": "Rate of new processes being created on the system (forks/sec).",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_forks_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Process Forks per second",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-149": {
+ "kind": "Panel",
+ "spec": {
+ "id": 149,
+ "title": "Exporter Processes Memory",
+ "description": "Tracks the memory usage of the process exposing this metric (e.g., node_exporter), including current virtual memory and maximum virtual memory limit",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "process_virtual_memory_bytes{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "legendFormat": "Virtual Memory",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "process_virtual_memory_max_bytes{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "legendFormat": "Virtual Memory Limit",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Virtual Memory Limit"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "__systemRef": "hideSeriesFrom",
+ "matcher": {
+ "id": "byNames",
+ "options": {
+ "mode": "exclude",
+ "names": [
+ "Virtual Memory"
+ ],
+ "prefix": "All except:",
+ "readOnly": true
+ }
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": false,
+ "tooltip": true,
+ "viz": true
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-15": {
+ "kind": "Panel",
+ "spec": {
+ "id": 15,
+ "title": "Uptime",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "node_time_seconds{instance=\"$node\",job=\"$job\"} - node_boot_time_seconds{instance=\"$node\",job=\"$job\"}",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {
+ "maxDataPoints": 100
+ }
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s",
+ "decimals": 1,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-151": {
+ "kind": "Panel",
+ "spec": {
+ "id": 151,
+ "title": "Entropy",
+ "description": "Number of bits of entropy currently available to the system's random number generators (e.g., /dev/random). Low values may indicate that random number generation could block or degrade performance of cryptographic operations",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_entropy_available_bits{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Entropy available",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_entropy_pool_size_bits{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Entropy pool max",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "decbits",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Entropy pool max"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-152": {
+ "kind": "Panel",
+ "spec": {
+ "id": 152,
+ "title": "Disk Space Used Basic",
+ "description": "Percentage of filesystem space used for each mounted device",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "((node_filesystem_size_bytes{instance=\"$node\", job=\"$job\", device!~'rootfs'} - node_filesystem_avail_bytes{instance=\"$node\", job=\"$job\", device!~'rootfs'}) / node_filesystem_size_bytes{instance=\"$node\", job=\"$job\", device!~'rootfs'}) * 100",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percent",
+ "min": 0,
+ "max": 100,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-154": {
+ "kind": "Panel",
+ "spec": {
+ "id": 154,
+ "title": "Root FS Used",
+ "description": "Used Root FS",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "(\n (node_filesystem_size_bytes{instance=\"$node\", job=\"$job\", mountpoint=\"/\", fstype!=\"rootfs\"}\n - node_filesystem_avail_bytes{instance=\"$node\", job=\"$job\", mountpoint=\"/\", fstype!=\"rootfs\"})\n / node_filesystem_size_bytes{instance=\"$node\", job=\"$job\", mountpoint=\"/\", fstype!=\"rootfs\"}\n) * 100\n",
+ "format": "time_series",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "gauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percent",
+ "decimals": 1,
+ "min": 0,
+ "max": 100,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "rgba(50, 172, 45, 0.97)"
+ },
+ {
+ "value": 80,
+ "color": "rgba(237, 129, 40, 0.89)"
+ },
+ {
+ "value": 90,
+ "color": "rgba(245, 54, 54, 0.9)"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-155": {
+ "kind": "Panel",
+ "spec": {
+ "id": 155,
+ "title": "Sys Load",
+ "description": "System load over all CPU cores together",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "scalar(node_load1{instance=\"$node\",job=\"$job\"}) * 100 / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))",
+ "format": "time_series",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "gauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percent",
+ "decimals": 1,
+ "min": 0,
+ "max": 100,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "rgba(50, 172, 45, 0.97)"
+ },
+ {
+ "value": 85,
+ "color": "rgba(237, 129, 40, 0.89)"
+ },
+ {
+ "value": 95,
+ "color": "rgba(245, 54, 54, 0.9)"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-156": {
+ "kind": "Panel",
+ "spec": {
+ "id": 156,
+ "title": "Filesystem Used",
+ "description": "Disk usage (used = total - available) per mountpoint",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'} - node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-157": {
+ "kind": "Panel",
+ "spec": {
+ "id": 157,
+ "title": "Node Exporter Scrape",
+ "description": "Shows whether each Node Exporter collector scraped successfully (1 = success, 0 = failure), and whether the textfile collector returned an error.",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_scrape_collector_success{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{collector}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "1 - node_textfile_scrape_error{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "textfile",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "bargauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "displayMode": "basic",
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "maxVizHeight": 300,
+ "minVizHeight": 16,
+ "minVizWidth": 8,
+ "namePlacement": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showUnfilled": true,
+ "sizing": "auto",
+ "valueMode": "color"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bool",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 0,
+ "color": "dark-red"
+ },
+ {
+ "value": 1,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-158": {
+ "kind": "Panel",
+ "spec": {
+ "id": 158,
+ "title": "Hardware Temperature Monitor",
+ "description": "Monitors hardware sensor temperatures and critical thresholds as exposed by Linux hwmon. Includes CPU, GPU, and motherboard sensors where available",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_hwmon_temp_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ chip_name }} {{ sensor }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "expr": "node_hwmon_temp_crit_alarm_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ chip_name }} {{ sensor }} Critical Alarm",
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": true
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_hwmon_temp_crit_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ chip_name }} {{ sensor }} Critical",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "expr": "node_hwmon_temp_crit_hyst_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ chip_name }} {{ sensor }} Critical Hysteresis",
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": true
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "expr": "node_hwmon_temp_max_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ chip_name }} {{ sensor }} Max",
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": true
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "celsius",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Critical.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#E24D42",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-16": {
+ "kind": "Panel",
+ "spec": {
+ "id": 16,
+ "title": "RAM Used",
+ "description": "Real RAM usage excluding cache and reclaimable memory",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "clamp_min((1 - (node_memory_MemAvailable_bytes{instance=\"$node\", job=\"$job\"} / node_memory_MemTotal_bytes{instance=\"$node\", job=\"$job\"})) * 100, 0)",
+ "format": "time_series",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "gauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percent",
+ "decimals": 1,
+ "min": 0,
+ "max": 100,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "rgba(50, 172, 45, 0.97)"
+ },
+ {
+ "value": 80,
+ "color": "rgba(237, 129, 40, 0.89)"
+ },
+ {
+ "value": 90,
+ "color": "rgba(245, 54, 54, 0.9)"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-160": {
+ "kind": "Panel",
+ "spec": {
+ "id": 160,
+ "title": "Memory Kernel / CPU / IO",
+ "description": "Tracks kernel memory used for CPU-local structures, per-thread stacks, and bounce buffers used for I/O on DMA-limited devices. These areas are typically small but critical for low-level operations",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_KernelStack_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "KernelStack – Kernel stack memory (per-thread, non-reclaimable)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Percpu_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PerCPU – Dynamically allocated per-CPU memory (used by kernel modules)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Bounce_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Bounce Memory – I/O buffer for DMA-limited devices",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-168": {
+ "kind": "Panel",
+ "spec": {
+ "id": 168,
+ "title": "Time Synchronized Status",
+ "description": "Shows whether the system clock is synchronized to a reliable time source, and the current frequency correction ratio applied by the kernel to maintain synchronization",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_sync_status{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Sync status (1 = ok)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_frequency_adjustment_ratio{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Frequency Adjustment",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_tick_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Tick Interval",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": true
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_tai_offset_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "TAI Offset",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": true
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-175": {
+ "kind": "Panel",
+ "spec": {
+ "id": 175,
+ "title": "Memory Page Faults",
+ "description": "Rate of memory page faults, split into total, major (disk-backed), and derived minor (non-disk) faults. High major fault rates may indicate memory pressure or insufficient RAM",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Pgfault - Page major and minor fault ops",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Pgmajfault - Major page fault ops",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[$__rate_interval]) - rate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Pgminfault - Minor page fault ops",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Pgfault - Page major and minor fault ops"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": false,
+ "mode": "none"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-176": {
+ "kind": "Panel",
+ "spec": {
+ "id": 176,
+ "title": "Memory Pages In / Out",
+ "description": "Rate of memory pages being read from or written to disk (page-in and page-out operations). High page-out may indicate memory pressure or swapping activity",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_pgpgin{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Pagesin - Page in ops",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_pgpgout{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Pagesout - Page out ops",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-18": {
+ "kind": "Panel",
+ "spec": {
+ "id": 18,
+ "title": "SWAP Total",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {
+ "maxDataPoints": 100
+ }
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "decimals": 0,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-191": {
+ "kind": "Panel",
+ "spec": {
+ "id": 191,
+ "title": "Memory LRU Active / Inactive Detail",
+ "description": "Breakdown of memory pages in the kernel's active and inactive LRU lists, separated by anonymous (heap, tmpfs) and file-backed (caches, mmap) pages.",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Inactive_file_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Inactive_file - File-backed memory on inactive LRU list",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Inactive_anon_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Inactive_anon – Anonymous memory on inactive LRU (incl. tmpfs & swap cache)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Active_file_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Active_file - File-backed memory on active LRU list",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Active_anon_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Active_anon – Anonymous memory on active LRU (incl. tmpfs & swap cache)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-20": {
+ "kind": "Panel",
+ "spec": {
+ "id": 20,
+ "title": "CPU Busy",
+ "description": "Overall CPU busy percentage (averaged across all cores)",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "100 * (1 - avg(rate(node_cpu_seconds_total{mode=\"idle\",instance=\"$node\",job=\"$job\"}[$__rate_interval])))",
+ "instant": true,
+ "legendFormat": "",
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "gauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percent",
+ "decimals": 1,
+ "min": 0,
+ "max": 100,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "rgba(50, 172, 45, 0.97)"
+ },
+ {
+ "value": 85,
+ "color": "rgba(237, 129, 40, 0.89)"
+ },
+ {
+ "value": 95,
+ "color": "rgba(245, 54, 54, 0.9)"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-21": {
+ "kind": "Panel",
+ "spec": {
+ "id": 21,
+ "title": "SWAP Used",
+ "description": "Percentage of swap space currently used by the system",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} > bool 0) * ((node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"}) / (node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"})) * 100",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "gauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percent",
+ "decimals": 1,
+ "min": 0,
+ "max": 100,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "rgba(50, 172, 45, 0.97)"
+ },
+ {
+ "value": 10,
+ "color": "rgba(237, 129, 40, 0.89)"
+ },
+ {
+ "value": 25,
+ "color": "rgba(245, 54, 54, 0.9)"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-219": {
+ "kind": "Panel",
+ "spec": {
+ "id": 219,
+ "title": "File Nodes Size",
+ "description": "Number of file nodes (inodes) available per mounted filesystem. Reflects maximum file capacity regardless of disk size",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_files{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-22": {
+ "kind": "Panel",
+ "spec": {
+ "id": 22,
+ "title": "Memory Pages Swap In / Out",
+ "description": "Rate at which memory pages are being swapped in from or out to disk. High swap-out activity may indicate memory pressure",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_pswpin{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Pswpin - Pages swapped in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_pswpout{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Pswpout - Pages swapped out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-220": {
+ "kind": "Panel",
+ "spec": {
+ "id": 220,
+ "title": "Sockstat Memory Size",
+ "description": "Kernel memory used by TCP, UDP, and IP fragmentation buffers",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_TCP_mem_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "TCP",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_UDP_mem_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_FRAG_memory{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "legendFormat": "Fragmentation",
+ "range": true
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-221": {
+ "kind": "Panel",
+ "spec": {
+ "id": 221,
+ "title": "Netstat IP In / Out Octets",
+ "description": "Rate of octets sent and received at the IP layer, as reported by /proc/net/netstat",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_IpExt_InOctets{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "IP Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_IpExt_OutOctets{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "IP Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "Bps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-229": {
+ "kind": "Panel",
+ "spec": {
+ "id": 229,
+ "title": "Disk IOps",
+ "description": "Disk I/O operations per second for each device",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\",device=~\"[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+\"}[$__rate_interval])",
+ "legendFormat": "{{device}} - Read",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\",device=~\"[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+\"}[$__rate_interval])",
+ "legendFormat": "{{device}} - Write",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "iops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "read (-) / write (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Read.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-23": {
+ "kind": "Panel",
+ "spec": {
+ "id": 23,
+ "title": "RootFS Total",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"}",
+ "format": "time_series",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {
+ "maxDataPoints": 100
+ }
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "decimals": 0,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "rgba(50, 172, 45, 0.97)"
+ },
+ {
+ "value": 70,
+ "color": "rgba(237, 129, 40, 0.89)"
+ },
+ {
+ "value": 90,
+ "color": "rgba(245, 54, 54, 0.9)"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-230": {
+ "kind": "Panel",
+ "spec": {
+ "id": 230,
+ "title": "ARP Entries",
+ "description": "Number of ARP entries per interface. Useful for detecting excessive ARP traffic or table growth due to scanning or misconfiguration",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_arp_entries{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "{{ device }} ARP Table",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-231": {
+ "kind": "Panel",
+ "spec": {
+ "id": 231,
+ "title": "Network Traffic Carrier Errors",
+ "description": "Rate of carrier errors during transmission. These typically indicate physical layer issues like faulty cabling or duplex mismatches",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_carrier_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-232": {
+ "kind": "Panel",
+ "spec": {
+ "id": 232,
+ "title": "Network Traffic Collision",
+ "description": "Rate of packet collisions detected during transmission. Mostly relevant on half-duplex or legacy Ethernet networks",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_colls_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-24": {
+ "kind": "Panel",
+ "spec": {
+ "id": 24,
+ "title": "Memory",
+ "description": "Breakdown of physical memory and swap usage. Hardware-detected memory errors are also displayed",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Slab_bytes{instance=\"$node\",job=\"$job\"} - node_memory_PageTables_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapCached_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Apps - Memory used by user-space applications",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_PageTables_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_SwapCached_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Slab_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Cache - Parked file data (file content) cache",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Buffers - Block device (e.g. harddisk) cache",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "F",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Unused - Free memory unassigned",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "G",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "legendFormat": "Swap - Swap space used",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "H",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_HardwareCorrupted_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "I",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Apps"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#629E51",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Buffers"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#614D93",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Cache"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#6D1F62",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Free"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#0A437C",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#CFFAFF",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "PageTables"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#0A50A1",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Slab"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#806EB7",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Swap"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#BF1B00",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Unused"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#EAB839",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Unused - Free memory unassigned"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#052B51",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Hardware Corrupted - *./"
+ },
+ "properties": [
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": false,
+ "mode": "normal"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-259": {
+ "kind": "Panel",
+ "spec": {
+ "id": 259,
+ "title": "IRQ Detail",
+ "description": "Breaks down hardware interrupts by type and device. Useful for diagnosing IRQ load on network, disk, or CPU interfaces. Requires --collector.interrupts to be enabled in node_exporter",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_interrupts_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ type }} - {{ info }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-260": {
+ "kind": "Panel",
+ "spec": {
+ "id": 260,
+ "title": "Time Synchronized Drift",
+ "description": "Tracks the system clock's estimated and maximum error, as well as its offset from the reference clock (e.g., via NTP). Useful for detecting synchronization drift",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_estimated_error_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Estimated error",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_offset_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Offset local vs reference",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_maxerror_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Maximum error",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-28": {
+ "kind": "Panel",
+ "spec": {
+ "id": 28,
+ "title": "File Descriptor",
+ "description": "Number of file descriptors currently allocated system-wide versus the system limit. Important for detecting descriptor exhaustion risks",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filefd_maximum{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Max open files",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filefd_allocated{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Open files",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Max.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-280": {
+ "kind": "Panel",
+ "spec": {
+ "id": 280,
+ "title": "Speed",
+ "description": "Maximum speed of each network interface as reported by the operating system. This is a static hardware capability, not current throughput",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_network_speed_bytes{instance=\"$node\",job=\"$job\"} * 8",
+ "format": "time_series",
+ "legendFormat": "{{ device }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "bargauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "displayMode": "basic",
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "maxVizHeight": 30,
+ "minVizHeight": 16,
+ "minVizWidth": 8,
+ "namePlacement": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showUnfilled": true,
+ "sizing": "manual",
+ "valueMode": "color"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bps",
+ "decimals": 0,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ },
+ "fieldMinMax": false
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-288": {
+ "kind": "Panel",
+ "spec": {
+ "id": 288,
+ "title": "MTU",
+ "description": "MTU (Maximum Transmission Unit) in bytes for each network interface. Affects packet size and transmission efficiency",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_network_mtu_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "{{ device }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "bargauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "displayMode": "basic",
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "maxVizHeight": 30,
+ "minVizHeight": 16,
+ "minVizWidth": 8,
+ "namePlacement": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showUnfilled": true,
+ "sizing": "manual",
+ "valueMode": "color"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none",
+ "decimals": 0,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-290": {
+ "kind": "Panel",
+ "spec": {
+ "id": 290,
+ "title": "Softnet Packets",
+ "description": "Packets processed and dropped by the softnet network stack per CPU. Drops may indicate CPU saturation or network driver limitations",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_softnet_processed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{cpu}} - Processed",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_softnet_dropped_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{cpu}} - Dropped",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "drop (-) / process (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Dropped.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-291": {
+ "kind": "Panel",
+ "spec": {
+ "id": 291,
+ "title": "Time PLL Adjust",
+ "description": "NTP phase-locked loop (PLL) time constant used by the kernel to control time adjustments. Lower values mean faster correction but less stability",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_loop_time_constant{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PLL Time Constant",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-297": {
+ "kind": "Panel",
+ "spec": {
+ "id": 297,
+ "title": "Systemd Sockets Accepted",
+ "description": "Rate of accepted connections per second for each systemd socket",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_systemd_socket_accepted_connections_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ name }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "eps",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-298": {
+ "kind": "Panel",
+ "spec": {
+ "id": 298,
+ "title": "Systemd Units State",
+ "description": "Current number of systemd units in each operational state, such as active, failed, inactive, or transitioning",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"activating\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Activating",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"active\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Active",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"deactivating\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Deactivating",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"failed\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Failed",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"inactive\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Inactive",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Failed"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#F2495C",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Active"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#73BF69",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Activating"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#C8F2C2",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Deactivating"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Inactive"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-blue",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-299": {
+ "kind": "Panel",
+ "spec": {
+ "id": 299,
+ "title": "TCP In / Out",
+ "description": "Rate of TCP segments sent and received per second, including data and control segments",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Tcp_InSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "instant": false,
+ "interval": "",
+ "legendFormat": "TCP Rx in",
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Tcp_OutSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "TCP Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-3": {
+ "kind": "Panel",
+ "spec": {
+ "id": 3,
+ "title": "CPU",
+ "description": "CPU time usage split by state, normalized across all CPU cores",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"system\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "System - Processes executing in kernel mode",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"user\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "legendFormat": "User - Normal processes executing in user mode",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"nice\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "legendFormat": "Nice - Niced processes executing in user mode",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"iowait\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "legendFormat": "Iowait - Waiting for I/O to complete",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"irq\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "legendFormat": "Irq - Servicing interrupts",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"softirq\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "legendFormat": "Softirq - Servicing softirqs",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "F",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"steal\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "G",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(rate(node_cpu_seconds_total{mode=\"idle\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
+ "format": "time_series",
+ "legendFormat": "Idle - Waiting for something to happen",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "H",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum by(instance) (rate(node_cpu_guest_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])) / on(instance) group_left sum by (instance)((rate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]))) > 0",
+ "format": "time_series",
+ "legendFormat": "Guest CPU usage",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "I",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 250
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 70,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "smooth",
+ "lineWidth": 2,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "percent"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Idle - Waiting for something to happen"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#052B51",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Iowait - Waiting for I/O to complete"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#EAB839",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Irq - Servicing interrupts"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#BF1B00",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Nice - Niced processes executing in user mode"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#C15C17",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Softirq - Servicing softirqs"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#E24D42",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Steal - Time spent in other operating systems when running in a virtualized environment"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#FCE2DE",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "System - Processes executing in kernel mode"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#508642",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "User - Normal processes executing in user mode"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#5195CE",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Guest CPU usage"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": "A",
+ "mode": "none"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-300": {
+ "kind": "Panel",
+ "spec": {
+ "id": 300,
+ "title": "Cooling Device Utilization",
+ "description": "Shows how hard each cooling device (fan/throttle) is working relative to its maximum capacity",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_cooling_device_max_state{instance=\"$node\",job=\"$job\"} > bool 0) * (100 * node_cooling_device_cur_state{instance=\"$node\",job=\"$job\"} / node_cooling_device_max_state{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{name}} - {{type}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percent",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Max.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#EF843C",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-301": {
+ "kind": "Panel",
+ "spec": {
+ "id": 301,
+ "title": "Disk Ops Discards / Flush",
+ "description": "Per-second rate of discard (TRIM) and flush (write cache) operations. Useful for monitoring low-level disk activity on SSDs and advanced storage",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_discards_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}} - Discards completed",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_discards_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}} - Discards merged",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_flush_requests_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}} - Flush",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-302": {
+ "kind": "Panel",
+ "spec": {
+ "id": 302,
+ "title": "Power Supply",
+ "description": "Shows the online status of power supplies (e.g., AC, battery). A value of 1-Yes indicates the power supply is active/online",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_power_supply_online{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ power_supply }} online",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bool_yes_no",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-305": {
+ "kind": "Panel",
+ "spec": {
+ "id": 305,
+ "title": "CPU Saturation per Core",
+ "description": "Shows CPU saturation per core, calculated as the proportion of time spent waiting to run relative to total time demanded (running + waiting).",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_schedstat_running_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{ cpu }} - Running",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": true
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_schedstat_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{cpu}} - Waiting Queue",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": true
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "((rate(node_schedstat_running_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) + rate(node_schedstat_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])) > bool 0) * (rate(node_schedstat_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) / (rate(node_schedstat_running_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) + rate(node_schedstat_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])))",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{cpu}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*waiting.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-306": {
+ "kind": "Panel",
+ "spec": {
+ "id": 306,
+ "title": "CPU Schedule Timeslices",
+ "description": "Rate of scheduling timeslices executed per CPU. Reflects how frequently the scheduler switches tasks on each core",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_schedstat_timeslices_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{ cpu }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-307": {
+ "kind": "Panel",
+ "spec": {
+ "id": 307,
+ "title": "OOM Killer",
+ "description": "Rate of Out-of-Memory (OOM) kill events. A non-zero value indicates the kernel has terminated one or more processes due to memory exhaustion",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_vmstat_oom_kill{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "OOM Kills",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "OOM Kills"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-308": {
+ "kind": "Panel",
+ "spec": {
+ "id": 308,
+ "title": "Exporter Process CPU Usage",
+ "description": "Rate of CPU time used by the process exposing this metric (user + system mode)",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(process_cpu_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Process CPU Usage",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-309": {
+ "kind": "Panel",
+ "spec": {
+ "id": 309,
+ "title": "Network Operational Status",
+ "description": "Operational and physical link status of each network interface. Values are Yes for 'up' or link present, and No for 'down' or no carrier.",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_network_up{operstate=\"up\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "{{interface}} - Operational state UP",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": true
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_network_carrier{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "instant": false,
+ "legendFormat": "{{device}} - Physical link"
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bool_yes_no",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-310": {
+ "kind": "Panel",
+ "spec": {
+ "id": 310,
+ "title": "Softnet Out of Quota",
+ "description": "How often the kernel was unable to process all packets in the softnet queue before time ran out. Frequent squeezes may indicate CPU contention or driver inefficiency",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_softnet_times_squeezed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{cpu}} - Times Squeezed",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "eps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-313": {
+ "kind": "Panel",
+ "spec": {
+ "id": 313,
+ "title": "PIDs Number and Limit",
+ "description": "Number of active PIDs on the system and the configured maximum allowed. Useful for detecting PID exhaustion risk. Requires --collector.processes in node_exporter",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_processes_pids{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Number of PIDs",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_processes_max_processes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PIDs limit",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "PIDs limit"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#F2495C",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-314": {
+ "kind": "Panel",
+ "spec": {
+ "id": 314,
+ "title": "Threads Number and Limit",
+ "description": "Number of active threads on the system and the configured thread limit. Useful for monitoring thread pressure. Requires --collector.processes in node_exporter",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_processes_threads{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Allocated threads",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_processes_max_threads{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Threads limit",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Threads limit"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#F2495C",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-315": {
+ "kind": "Panel",
+ "spec": {
+ "id": 315,
+ "title": "Processes Detailed States",
+ "description": "Current number of processes in each state (e.g., running, sleeping, zombie). Requires --collector.processes to be enabled in node_exporter",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_processes_state{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ state }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "D"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Uninterruptible Sleeping"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "I"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Idle Kernel Thread"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "R"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Running"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "S"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Interruptible Sleeping"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "T"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Stopped"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "X"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Dead"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Z"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Zombie"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-320": {
+ "kind": "Panel",
+ "spec": {
+ "id": 320,
+ "title": "TCP Stat Persistent",
+ "description": "Number of TCP sockets in key connection states. Requires the --collector.tcpstat flag on node_exporter",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"established\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Established",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"fin_wait2\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "FIN_WAIT2",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"listen\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Listen",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"time_wait\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "TIME_WAIT",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"close_wait\", instance=\"$node\", job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CLOSE_WAIT",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "noValue": "0",
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-321": {
+ "kind": "Panel",
+ "spec": {
+ "id": 321,
+ "title": "CPU Frequency Scaling",
+ "description": "Real-time CPU frequency scaling per core, including average minimum and maximum allowed scaling frequencies",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_cpu_scaling_frequency_hertz{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{ cpu }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "avg(node_cpu_scaling_frequency_max_hertz{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Max",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "avg(node_cpu_scaling_frequency_min_hertz{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Min",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "hertz",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Max"
+ },
+ "properties": [
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": true,
+ "tooltip": false,
+ "viz": false
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Min"
+ },
+ "properties": [
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "blue",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": true,
+ "tooltip": false,
+ "viz": false
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-322": {
+ "kind": "Panel",
+ "spec": {
+ "id": 322,
+ "title": "Pressure Stall Information",
+ "description": "How often tasks experience CPU, memory, or I/O delays. 'Some' indicates partial slowdown; 'Full' indicates all tasks are stalled. Based on Linux PSI metrics:\nhttps://docs.kernel.org/accounting/psi.html",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_pressure_cpu_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "CPU - Some",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "CPU some",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_pressure_memory_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Memory - Some",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "Memory some",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_pressure_memory_stalled_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Memory - Full",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "Memory full",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_pressure_io_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "I/O - Some",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "I/O some",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_pressure_io_stalled_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "I/O - Full",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "I/O full",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_pressure_irq_stalled_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "IRQ - Full",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "some (-) / full (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Some.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Some.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-323": {
+ "kind": "Panel",
+ "spec": {
+ "id": 323,
+ "title": "Pressure",
+ "description": "Resource pressure via PSI",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "rate(node_pressure_cpu_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "instant": true,
+ "legendFormat": "CPU",
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "rate(node_pressure_memory_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "instant": true,
+ "legendFormat": "Mem",
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "rate(node_pressure_io_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "instant": true,
+ "legendFormat": "I/O",
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "rate(node_pressure_irq_stalled_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "instant": true,
+ "legendFormat": "Irq",
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "bargauge",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "displayMode": "basic",
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "maxVizHeight": 300,
+ "minVizHeight": 10,
+ "minVizWidth": 0,
+ "namePlacement": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showUnfilled": true,
+ "sizing": "auto",
+ "text": {},
+ "valueMode": "color"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "decimals": 1,
+ "min": 0,
+ "max": 1,
+ "thresholds": {
+ "mode": "percentage",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 70,
+ "color": "dark-yellow"
+ },
+ {
+ "value": 90,
+ "color": "dark-red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-325": {
+ "kind": "Panel",
+ "spec": {
+ "id": 325,
+ "title": "Hardware Fan Speed",
+ "description": "Displays the current fan speeds (RPM) from hardware sensors via the hwmon interface",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_hwmon_fan_rpm{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ chip_name }} {{ sensor }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_hwmon_fan_min_rpm{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ chip_name }} {{ sensor }} rpm min",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": true
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "rotrpm",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-326": {
+ "kind": "Panel",
+ "spec": {
+ "id": 326,
+ "title": "Disk Sectors Discarded Successfully",
+ "description": "Shows how many disk sectors are discarded (TRIMed) per second. Useful for monitoring SSD behavior and storage efficiency",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_discarded_sectors_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-327": {
+ "kind": "Panel",
+ "spec": {
+ "id": 327,
+ "title": "Network Traffic NoHandler",
+ "description": "Rate of received packets that could not be processed due to missing protocol or handler in the kernel. May indicate unsupported traffic or misconfiguration",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_nohandler_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-33": {
+ "kind": "Panel",
+ "spec": {
+ "id": 33,
+ "title": "Disk Read/Write Data",
+ "description": "Number of bytes read from or written to the device per second",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Read",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "rate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "instant": false,
+ "legendFormat": "{{device}} - Write",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "Bps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "read (–) / write (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Read.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-330": {
+ "kind": "Panel",
+ "spec": {
+ "id": 330,
+ "title": "Softnet RPS",
+ "description": "Tracks the number of packets processed or dropped by Receive Packet Steering (RPS), a mechanism to distribute packet processing across CPUs",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_softnet_received_rps_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{cpu}} - Processed",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_softnet_flow_limit_count_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "CPU {{cpu}} - Dropped",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Dropped.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-331": {
+ "kind": "Panel",
+ "spec": {
+ "id": 331,
+ "title": "Systemd Sockets Current",
+ "description": "Current number of active connections per systemd socket, as reported by the Node Exporter systemd collector",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_systemd_socket_current_connections{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ name }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-332": {
+ "kind": "Panel",
+ "spec": {
+ "id": 332,
+ "title": "Systemd Sockets Refused",
+ "description": "Rate of systemd socket connection refusals per second, typically due to service unavailability or backlog overflow",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_systemd_socket_refused_connections_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{ name }}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "eps",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-333": {
+ "kind": "Panel",
+ "spec": {
+ "id": 333,
+ "title": "PPS Frequency / Stability",
+ "description": "Displays the PPS signal's frequency offset and stability (jitter) in hertz. Useful for monitoring high-precision time sources like GPS or atomic clocks",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_pps_frequency_hertz{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Frequency Offset",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_pps_stability_hertz{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Frequency Stability",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "hertz",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-334": {
+ "kind": "Panel",
+ "spec": {
+ "id": 334,
+ "title": "PPS Time Accuracy",
+ "description": "Tracks PPS signal timing jitter and shift compared to system clock",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_pps_jitter_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Jitter",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_timex_pps_shift_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Shift",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-335": {
+ "kind": "Panel",
+ "spec": {
+ "id": 335,
+ "title": "PPS Sync Events",
+ "description": "Rate of PPS synchronization diagnostics including calibration events, jitter violations, errors, and frequency stability exceedances",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_timex_pps_calibration_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Calibrations/sec",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_timex_pps_error_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Errors/sec",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_timex_pps_stability_exceeded_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Stability Exceeded/sec",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_timex_pps_jitter_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "PPS Jitter Events/sec",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-336": {
+ "kind": "Panel",
+ "spec": {
+ "id": 336,
+ "title": "TCP/UDP Kernel Buffer Memory Pages",
+ "description": "TCP/UDP socket memory usage in kernel (in pages)",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_TCP_mem{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "TCP",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_UDP_mem{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-337": {
+ "kind": "Panel",
+ "spec": {
+ "id": 337,
+ "title": "UDP Queue",
+ "description": "Number of UDP packets currently queued in the receive (RX) and transmit (TX) buffers. A growing queue may indicate a bottleneck",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_udp_queues{instance=\"$node\",job=\"$job\",ip=\"v4\",queue=\"rx\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP Rx in Queue",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_udp_queues{instance=\"$node\",job=\"$job\",ip=\"v4\",queue=\"tx\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP Tx out Queue",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-338": {
+ "kind": "Panel",
+ "spec": {
+ "id": 338,
+ "title": "Network Saturation",
+ "description": "Network interface utilization as a percentage of its maximum capacity",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_network_speed_bytes{instance=\"$node\",job=\"$job\"} > bool 0) * (rate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) / node_network_speed_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_network_speed_bytes{instance=\"$node\",job=\"$job\"} > bool 0) * (rate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) / node_network_speed_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-339": {
+ "kind": "Panel",
+ "spec": {
+ "id": 339,
+ "title": "Sockstat Average Socket Memory",
+ "description": "Average memory used per socket (TCP/UDP). Helps tune net.ipv4.tcp_rmem / tcp_wmem",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_sockstat_TCP_inuse{instance=\"$node\",job=\"$job\"} > bool 0) * (node_sockstat_TCP_mem_bytes{instance=\"$node\",job=\"$job\"} / node_sockstat_TCP_inuse{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "TCP",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_sockstat_UDP_inuse{instance=\"$node\",job=\"$job\"} > bool 0) * (node_sockstat_UDP_mem_bytes{instance=\"$node\",job=\"$job\"} / node_sockstat_UDP_inuse{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-34": {
+ "kind": "Panel",
+ "spec": {
+ "id": 34,
+ "title": "Instantaneous Queue Size",
+ "description": "Number of in-progress I/O requests at the time of sampling (active requests in the disk queue)",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_disk_io_now{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "legendFormat": "{{device}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-340": {
+ "kind": "Panel",
+ "spec": {
+ "id": 340,
+ "title": "TCP Socket Queue",
+ "description": "TCP socket queue sizes. High rx_queued_bytes indicates application not reading fast enough. High tx_queued_bytes indicates network congestion or slow receiver",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"rx_queued_bytes\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "RX Queued (waiting to be read)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"tx_queued_bytes\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "TX Queued (waiting to be sent)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-341": {
+ "kind": "Panel",
+ "spec": {
+ "id": 341,
+ "title": "TCP Stat Transient",
+ "description": "Transient TCP connection states. These are typically short-lived during connection establishment and teardown",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"syn_sent\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "SYN_SENT",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"syn_recv\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "SYN_RECV",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"fin_wait1\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "FIN_WAIT1",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"close\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "CLOSE",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"last_ack\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "LAST_ACK",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_tcp_connection_states{state=\"closing\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "CLOSING",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "F",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "noValue": "0",
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-35": {
+ "kind": "Panel",
+ "spec": {
+ "id": 35,
+ "title": "Average Queue Size",
+ "description": "Average queue length of the requests that were issued to the device",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_io_time_weighted_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda_*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#7EB26D",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-36": {
+ "kind": "Panel",
+ "spec": {
+ "id": 36,
+ "title": "Time Spent Doing I/Os",
+ "description": "Percentage of time the disk spent actively processing I/O operations, including general I/O, discards (TRIM), and write cache flushes",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}} - General IO",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_discard_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}} - Discard/TRIM",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_flush_requests_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "interval": "",
+ "legendFormat": "{{device}} - Flush (write cache)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-37": {
+ "kind": "Panel",
+ "spec": {
+ "id": 37,
+ "title": "Disk Average Wait Time",
+ "description": "Average time for requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(rate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) > bool 0) * (rate(node_disk_read_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) / rate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]))",
+ "interval": "",
+ "legendFormat": "{{device}} - Read",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(rate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) > bool 0) * (rate(node_disk_write_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) / rate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]))",
+ "interval": "",
+ "legendFormat": "{{device}} - Write",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "read (–) / write (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Read.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-40": {
+ "kind": "Panel",
+ "spec": {
+ "id": 40,
+ "title": "Node Exporter Scrape Time",
+ "description": "Duration of each individual collector executed during a Node Exporter scrape. Useful for identifying slow or failing collectors",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_scrape_collector_duration_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{collector}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-41": {
+ "kind": "Panel",
+ "spec": {
+ "id": 41,
+ "title": "File Nodes Free",
+ "description": "Number of free file nodes (inodes) available per mounted filesystem. A low count may prevent file creation even if disk space is available",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_files_free{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-42": {
+ "kind": "Panel",
+ "spec": {
+ "id": 42,
+ "title": "Disk Throughput",
+ "description": "Disk I/O throughput per device",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\",device=~\"[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Read",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\",device=~\"[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Write",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "Bps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "read (-) / write (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Read.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-43": {
+ "kind": "Panel",
+ "spec": {
+ "id": 43,
+ "title": "Filesystem Space Available",
+ "description": "Amount of available disk space per mounted filesystem, excluding rootfs. Based on block availability to non-root users",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}}",
+ "metric": "",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_free_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}} - Free",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": true
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}} - Size",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": true
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-44": {
+ "kind": "Panel",
+ "spec": {
+ "id": 44,
+ "title": "Filesystem in ReadOnly / Error",
+ "description": "Indicates filesystems mounted in read-only mode or reporting device-level I/O errors.",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_readonly{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "legendFormat": "{{mountpoint}} - ReadOnly",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_filesystem_device_error{instance=\"$node\",job=\"$job\",device!~'rootfs',fstype!~'tmpfs'}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{mountpoint}} - Device error",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bool_yes_no",
+ "min": 0,
+ "max": 1,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-50": {
+ "kind": "Panel",
+ "spec": {
+ "id": 50,
+ "title": "ICMP Errors",
+ "description": "Rate of incoming ICMP messages that contained protocol-specific errors, such as bad checksums or invalid lengths",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Icmp_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "ICMP Rx In",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-55": {
+ "kind": "Panel",
+ "spec": {
+ "id": 55,
+ "title": "UDP In / Out",
+ "description": "Rate of UDP datagrams sent and received per second, based on /proc/net/netstat",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Udp_InDatagrams{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Udp_OutDatagrams{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "UDP Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-60": {
+ "kind": "Panel",
+ "spec": {
+ "id": 60,
+ "title": "Network Traffic by Packets",
+ "description": "Number of network packets received and transmitted per second, by interface.",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_packets_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_packets_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "pps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-61": {
+ "kind": "Panel",
+ "spec": {
+ "id": 61,
+ "title": "NF Conntrack",
+ "description": "Current and maximum connection tracking entries used by Netfilter (nf_conntrack). High usage approaching the limit may cause packet drops or connection issues",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_nf_conntrack_entries{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "NF conntrack entries",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_nf_conntrack_entries_limit{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "NF conntrack limit",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "NF conntrack limit"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-62": {
+ "kind": "Panel",
+ "spec": {
+ "id": 62,
+ "title": "Processes Status",
+ "description": "Processes currently in runnable or blocked states. Helps identify CPU contention or I/O wait bottlenecks.",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_procs_blocked{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Blocked (I/O Wait)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_procs_running{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Runnable (Ready for CPU)",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-63": {
+ "kind": "Panel",
+ "spec": {
+ "id": 63,
+ "title": "Sockstat TCP",
+ "description": "Tracks TCP socket usage and memory per node",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_TCP_alloc{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Allocated Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_TCP_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "In-Use Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_TCP_orphan{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Orphaned Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_sockstat_TCP_tw{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "TIME_WAIT Sockets",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-64": {
+ "kind": "Panel",
+ "spec": {
+ "id": 64,
+ "title": "Exporter File Descriptor Usage",
+ "description": "Number of file descriptors used by the exporter process versus its configured limit",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "process_max_fds{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "legendFormat": "Maximum open file descriptors",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "process_open_fds{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "legendFormat": "Open file descriptors",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Max.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#890F02",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ }
+ ]
+ },
+ {
+ "__systemRef": "hideSeriesFrom",
+ "matcher": {
+ "id": "byNames",
+ "options": {
+ "mode": "exclude",
+ "names": [
+ "Open file descriptors"
+ ],
+ "prefix": "All except:",
+ "readOnly": true
+ }
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom",
+ "value": {
+ "legend": false,
+ "tooltip": true,
+ "viz": true
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-7": {
+ "kind": "Panel",
+ "spec": {
+ "id": 7,
+ "title": "System Load",
+ "description": "System load average over 1, 5, and 15 minutes. Reflects the number of active or waiting processes. Values above CPU core count may indicate overload",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_load1{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Load 1m",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_load5{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Load 5m",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_load15{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Load 15m",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))",
+ "format": "time_series",
+ "legendFormat": "CPU Core Count",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "CPU Core Count"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-70": {
+ "kind": "Panel",
+ "spec": {
+ "id": 70,
+ "title": "Memory Vmalloc",
+ "description": "Usage of the kernel's vmalloc area, which provides virtual memory allocations for kernel modules and drivers. Includes total, used, and largest free block sizes",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_VmallocChunk_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Vmalloc Free Chunk – Largest available block in vmalloc area",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_VmallocTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Vmalloc Total – Total size of the vmalloc memory area",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_VmallocUsed_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Vmalloc Used – Portion of vmalloc area currently in use",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Total.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-74": {
+ "kind": "Panel",
+ "spec": {
+ "id": 74,
+ "title": "Network Traffic Basic",
+ "description": "Per-interface network traffic (receive and transmit) in bits per second",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
+ "format": "time_series",
+ "legendFormat": "Rx {{device}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
+ "format": "time_series",
+ "legendFormat": "Tx {{device}}",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Tx.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-75": {
+ "kind": "Panel",
+ "spec": {
+ "id": 75,
+ "title": "RAM Total",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "instant": true,
+ "range": false,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {
+ "maxDataPoints": 100
+ }
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "decimals": 0,
+ "mappings": [
+ {
+ "type": "special",
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ }
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-77": {
+ "kind": "Panel",
+ "spec": {
+ "id": 77,
+ "title": "CPU Basic",
+ "description": "CPU time spent busy vs idle, split by activity type",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "avg(rate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"system\"}[$__rate_interval]))",
+ "format": "time_series",
+ "instant": false,
+ "legendFormat": "Busy System",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "avg(rate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"user\"}[$__rate_interval]))",
+ "format": "time_series",
+ "legendFormat": "Busy User",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "avg(rate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"iowait\"}[$__rate_interval]))",
+ "format": "time_series",
+ "legendFormat": "Busy Iowait",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "avg(sum without(mode) (rate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=~\".*irq\"}[$__rate_interval])))",
+ "format": "time_series",
+ "legendFormat": "Busy IRQs",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "avg(sum without (mode) (rate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq'}[$__rate_interval])))",
+ "format": "time_series",
+ "legendFormat": "Busy Other",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "avg(rate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"idle\"}[$__rate_interval]))",
+ "format": "time_series",
+ "legendFormat": "Idle",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "F",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 250
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "smooth",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "percent"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Busy Iowait"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#890F02",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Idle"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#052B51",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Busy System"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#EAB839",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Busy User"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#0A437C",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Busy Other"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#6D1F62",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-78": {
+ "kind": "Panel",
+ "spec": {
+ "id": 78,
+ "title": "Memory Basic",
+ "description": "RAM and swap usage overview, including caches",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Total",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"} - (node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} + node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"} + node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "legendFormat": "Used",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} + node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"} + node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Cache + Buffer",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "legendFormat": "Free",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "D",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "legendFormat": "Swap used",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "E",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true,
+ "width": 350
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Swap used"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#BF1B00",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Total"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#E0F9D7",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": false,
+ "mode": "normal"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Cache + Buffer"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#052B51",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Free"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#7EB26D",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-8": {
+ "kind": "Panel",
+ "spec": {
+ "id": 8,
+ "title": "Context Switches / Interrupts",
+ "description": "Per-second rate of context switches and hardware interrupts. High values may indicate intense CPU or I/O activity",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_context_switches_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Context switches",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_intr_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "legendFormat": "Interrupts",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ops",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-82": {
+ "kind": "Panel",
+ "spec": {
+ "id": 82,
+ "title": "TCP Direct Transition",
+ "description": "Rate of TCP connection initiations per second. 'Active' opens are initiated by this host. 'Passive' opens are accepted from incoming connections",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Tcp_ActiveOpens{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Active Opens",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_Tcp_PassiveOpens{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Passive Opens",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "eps",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-84": {
+ "kind": "Panel",
+ "spec": {
+ "id": 84,
+ "title": "Network Traffic",
+ "description": "Incoming and outgoing network traffic per interface",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Rx in",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
+ "format": "time_series",
+ "legendFormat": "{{device}} - Tx out",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "out (-) / in (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 40,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*out.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-85": {
+ "kind": "Panel",
+ "spec": {
+ "id": 85,
+ "title": "TCP Connections",
+ "description": "Number of currently established TCP connections and the system's max supported limit. On Linux, MaxConn may return -1 to indicate a dynamic/unlimited configuration",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_netstat_Tcp_CurrEstab{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Current Connections",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "node_netstat_Tcp_MaxConn{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "Max Connections",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Max.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#890F02",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-9": {
+ "kind": "Panel",
+ "spec": {
+ "id": 9,
+ "title": "Disk Read/Write IOps",
+ "description": "Number of I/O operations completed per second for the device (after merges), including both reads and writes",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "legendFormat": "{{device}} - Read",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "legendFormat": "{{device}} - Write",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "iops",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "read (–) / write (+)",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Read.*/"
+ },
+ "properties": [
+ {
+ "id": "custom.transform",
+ "value": "negative-Y"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/sda.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-91": {
+ "kind": "Panel",
+ "spec": {
+ "id": 91,
+ "title": "TCP SynCookie",
+ "description": "Rate of TCP SYN cookies sent, validated, and failed. These are used to protect against SYN flood attacks and manage TCP handshake resources under load",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_SyncookiesFailed{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "SYN Cookies Failed",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_SyncookiesRecv{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "SYN Cookies Validated",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "B",
+ "hidden": false
+ }
+ },
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "rate(node_netstat_TcpExt_SyncookiesSent{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "SYN Cookies Sent",
+ "range": true,
+ "step": 240
+ }
+ },
+ "refId": "C",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "11.6.1",
+ "spec": {
+ "options": {
+ "legend": {
+ "calcs": [
+ "min",
+ "mean",
+ "max"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "eps",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": null,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 20,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "/.*Failed.*/"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "layout": {
+ "kind": "RowsLayout",
+ "spec": {
+ "rows": [
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Quick CPU / Mem / Disk",
+ "collapse": false,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 3,
+ "height": 4,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-323"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 3,
+ "y": 0,
+ "width": 3,
+ "height": 4,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-20"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 6,
+ "y": 0,
+ "width": 3,
+ "height": 4,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-155"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 9,
+ "y": 0,
+ "width": 3,
+ "height": 4,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-16"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 3,
+ "height": 4,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-21"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 15,
+ "y": 0,
+ "width": 3,
+ "height": 4,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-154"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 18,
+ "y": 0,
+ "width": 2,
+ "height": 2,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-14"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 20,
+ "y": 0,
+ "width": 2,
+ "height": 2,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-75"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 22,
+ "y": 0,
+ "width": 2,
+ "height": 2,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-18"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 18,
+ "y": 2,
+ "width": 2,
+ "height": 2,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-23"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 20,
+ "y": 2,
+ "width": 4,
+ "height": 2,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-15"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Basic CPU / Mem / Net / Disk",
+ "collapse": false,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 7,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-77"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 7,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-78"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 7,
+ "width": 12,
+ "height": 7,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-74"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 7,
+ "width": 12,
+ "height": 7,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-152"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "CPU / Memory / Net / Disk",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-3"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-24"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 412,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-84"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 412,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-338"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 424,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-229"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 424,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-42"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 436,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-43"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 436,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-156"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 448,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-127"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 448,
+ "width": 12,
+ "height": 12,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-322"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Memory Meminfo",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-135"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-130"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 910,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-131"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 910,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-138"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 920,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-136"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 920,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-191"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 930,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-160"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 930,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-70"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 940,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-129"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 940,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-137"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 950,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-128"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 950,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-140"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Memory Vmstat",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-176"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-22"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 890,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-175"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 890,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-307"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "System Timesync",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-260"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-291"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 860,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-168"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 860,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-333"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 870,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-334"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 870,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-335"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "System Processes",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-62"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-315"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 740,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-148"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 740,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-305"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 750,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-313"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 750,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-314"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "System Misc",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 790,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-8"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 790,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-7"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 800,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-321"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 800,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-306"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 810,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-259"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 810,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-151"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Hardware Misc",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-158"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 710,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-300"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 720,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-302"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 720,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-325"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Systemd",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 4200,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-298"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 4200,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-331"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 4210,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-297"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 4210,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-332"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Storage Disk",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-9"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-33"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 360,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-37"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 360,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-35"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 370,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-133"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 370,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-36"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 380,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-301"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 380,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-326"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 390,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-34"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Storage Filesystem",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-28"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-41"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 340,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-44"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 340,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-219"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Network Traffic",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-60"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-142"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 220,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-143"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 220,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-141"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 230,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-146"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 230,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-327"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 240,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-145"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 240,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-144"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 250,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-232"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 250,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-231"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 260,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-230"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 260,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-61"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 270,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-309"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 270,
+ "width": 6,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-280"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 18,
+ "y": 270,
+ "width": 6,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-288"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Network Sockstat",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-63"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-124"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 10,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-126"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 10,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-125"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 20,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-220"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 20,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-339"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 30,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-336"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 30,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-290"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 40,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-310"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 40,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-330"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Network Netstat",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 130,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-221"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 130,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-299"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 160,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-55"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 160,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-115"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 170,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-104"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 170,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-109"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 180,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-50"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 180,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-91"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 190,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-85"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 190,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-337"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 200,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-82"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 200,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-320"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 210,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-341"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 210,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-340"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Node Exporter",
+ "collapse": true,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 130,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-40"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 130,
+ "width": 12,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-308"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 140,
+ "width": 10,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-149"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 10,
+ "y": 140,
+ "width": 10,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-64"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 20,
+ "y": 140,
+ "width": 4,
+ "height": 10,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-157"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "links": [
+ {
+ "title": "GitHub",
+ "type": "link",
+ "icon": "external link",
+ "tooltip": "",
+ "url": "https://github.com/rfmoz/grafana-dashboards",
+ "tags": [],
+ "asDropdown": false,
+ "targetBlank": true,
+ "includeVars": false,
+ "keepTime": false
+ },
+ {
+ "title": "Grafana",
+ "type": "link",
+ "icon": "external link",
+ "tooltip": "",
+ "url": "https://grafana.com/grafana/dashboards/1860",
+ "tags": [],
+ "asDropdown": false,
+ "targetBlank": true,
+ "includeVars": false,
+ "keepTime": false
+ }
+ ],
+ "liveNow": false,
+ "preload": false,
+ "tags": [
+ "linux"
+ ],
+ "timeSettings": {
+ "timezone": "browser",
+ "from": "now-24h",
+ "to": "now",
+ "autoRefresh": "1m",
+ "autoRefreshIntervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "hideTimepicker": false,
+ "fiscalYearStartMonth": 0
+ },
+ "title": "Node Exporter Full",
+ "variables": [
+ {
+ "kind": "DatasourceVariable",
+ "spec": {
+ "name": "ds_prometheus",
+ "pluginId": "prometheus",
+ "refresh": "onDashboardLoad",
+ "regex": "",
+ "current": {
+ "text": "",
+ "value": ""
+ },
+ "options": [],
+ "multi": false,
+ "includeAll": false,
+ "label": "Datasource",
+ "hide": "dontHide",
+ "skipUrlSync": false,
+ "allowCustomValue": true
+ }
+ },
+ {
+ "kind": "QueryVariable",
+ "spec": {
+ "name": "job",
+ "current": {
+ "text": "",
+ "value": ""
+ },
+ "label": "Job",
+ "hide": "dontHide",
+ "refresh": "onDashboardLoad",
+ "skipUrlSync": false,
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "query": "label_values(node_uname_info, job)",
+ "refId": "Prometheus-job-Variable-Query"
+ }
+ },
+ "regex": "",
+ "sort": "alphabeticalAsc",
+ "definition": "",
+ "options": [],
+ "multi": false,
+ "includeAll": false,
+ "allowCustomValue": true
+ }
+ },
+ {
+ "kind": "QueryVariable",
+ "spec": {
+ "name": "nodename",
+ "current": {
+ "text": "",
+ "value": ""
+ },
+ "label": "Nodename",
+ "hide": "dontHide",
+ "refresh": "onDashboardLoad",
+ "skipUrlSync": false,
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "query": "label_values(node_uname_info{job=\"$job\"}, nodename)",
+ "refId": "Prometheus-nodename-Variable-Query"
+ }
+ },
+ "regex": "",
+ "sort": "alphabeticalAsc",
+ "definition": "label_values(node_uname_info{job=\"$job\"}, nodename)",
+ "options": [],
+ "multi": false,
+ "includeAll": false,
+ "allowCustomValue": true
+ }
+ },
+ {
+ "kind": "QueryVariable",
+ "spec": {
+ "name": "node",
+ "current": {
+ "text": "",
+ "value": ""
+ },
+ "label": "Instance",
+ "hide": "dontHide",
+ "refresh": "onDashboardLoad",
+ "skipUrlSync": false,
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "${ds_prometheus}"
+ },
+ "spec": {
+ "query": "label_values(node_uname_info{job=\"$job\", nodename=\"$nodename\"}, instance)",
+ "refId": "Prometheus-node-Variable-Query"
+ }
+ },
+ "regex": "",
+ "sort": "alphabeticalAsc",
+ "definition": "label_values(node_uname_info{job=\"$job\", nodename=\"$nodename\"}, instance)",
+ "options": [],
+ "multi": false,
+ "includeAll": false,
+ "allowCustomValue": true
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/modules/by-name/mo/monitoring/dashboards/performance.json b/modules/by-name/mo/monitoring/dashboards/performance.json
new file mode 100644
index 0000000..bb8c88f
--- /dev/null
+++ b/modules/by-name/mo/monitoring/dashboards/performance.json
@@ -0,0 +1,1606 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": {
+ "type": "grafana",
+ "uid": "-- Grafana --"
+ },
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "fiscalYearStartMonth": 0,
+ "graphTooltip": 0,
+ "id": 6,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 12,
+ "panels": [],
+ "title": "Node",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": 3600000,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "decimals": 2,
+ "fieldMinMax": false,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": null
+ },
+ {
+ "color": "transparent",
+ "value": 0.05
+ }
+ ]
+ },
+ "unit": "mbytes"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byFrameRefID",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "custom.axisPlacement",
+ "value": "right"
+ },
+ {
+ "id": "unit",
+ "value": "ms"
+ },
+ {
+ "id": "decimals"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byFrameRefID",
+ "options": "B"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "green",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 0,
+ 10
+ ],
+ "fill": "dot"
+ }
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 10
+ },
+ {
+ "id": "custom.axisPlacement",
+ "value": "auto"
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": "A",
+ "mode": "none"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 1
+ },
+ "id": 20,
+ "options": {
+ "legend": {
+ "calcs": [
+ "max",
+ "lastNotNull"
+ ],
+ "displayMode": "table",
+ "placement": "right",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "netdata_system_memory_full_pressure_stall_time_ms_average{hostname=~\"$hostname\"} * -1",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "full stall time",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "sum(node_memory_MemTotal_bytes{instance=\"127.0.0.1:9112\"}) / 1000000 - sum(netdata_mem_available_MiB_average{instance=~\"$instance\"})",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "remaining",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "disableTextWrap": false,
+ "editorMode": "code",
+ "expr": "sum by(dimension, service_name) (netdata_systemd_service_memory_usage_MiB_average{instance=~\"$instance\", service_name=~\"$service\", dimension=\"ram\"})",
+ "fullMetaSearch": false,
+ "hide": false,
+ "includeNullMetadata": true,
+ "legendFormat": "{{service_name}}",
+ "range": true,
+ "refId": "used",
+ "useBackend": false
+ }
+ ],
+ "title": "Memory",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": 3600000,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "decimals": 2,
+ "fieldMinMax": false,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": null
+ },
+ {
+ "color": "transparent",
+ "value": 0.05
+ }
+ ]
+ },
+ "unit": "mbytes"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byFrameRefID",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "custom.axisPlacement",
+ "value": "right"
+ },
+ {
+ "id": "unit",
+ "value": "ms"
+ },
+ {
+ "id": "decimals"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "dark-red",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byFrameRefID",
+ "options": "B"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "green",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 0,
+ 10
+ ],
+ "fill": "dot"
+ }
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 10
+ },
+ {
+ "id": "custom.axisPlacement",
+ "value": "auto"
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": "A",
+ "mode": "none"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 1
+ },
+ "id": 23,
+ "options": {
+ "legend": {
+ "calcs": [
+ "max",
+ "lastNotNull"
+ ],
+ "displayMode": "table",
+ "placement": "right",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "netdata_system_memory_full_pressure_stall_time_ms_average{hostname=~\"$hostname\"} * -1",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "full stall time",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "sum(node_memory_SwapFree_bytes{instance=~\"127.0.0.1:9112\"}) / 1000000",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "remaining",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "disableTextWrap": false,
+ "editorMode": "code",
+ "expr": "sum by(dimension, service_name) (netdata_systemd_service_memory_usage_MiB_average{hostname=~\"$hostname\", service_name=~\"$service\", dimension=\"swap\"})",
+ "fullMetaSearch": false,
+ "hide": false,
+ "includeNullMetadata": true,
+ "legendFormat": "{{service_name}}",
+ "range": true,
+ "refId": "used",
+ "useBackend": false
+ }
+ ],
+ "title": "Swap",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": 3600000,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "decimals": 2,
+ "fieldMinMax": false,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": null
+ },
+ {
+ "color": "transparent",
+ "value": 0.05
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byFrameRefID",
+ "options": "B"
+ },
+ "properties": [
+ {
+ "id": "custom.axisPlacement",
+ "value": "right"
+ },
+ {
+ "id": "unit",
+ "value": "ms"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 0,
+ 10
+ ],
+ "fill": "dot"
+ }
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 34
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 9
+ },
+ "id": 22,
+ "options": {
+ "legend": {
+ "calcs": [
+ "max",
+ "sum"
+ ],
+ "displayMode": "table",
+ "placement": "right",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "netdata_system_cpu_some_pressure_stall_time_ms_average{hostname=~\"$hostname\"} * -1",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "some stall time",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "disableTextWrap": false,
+ "editorMode": "code",
+ "expr": "sum by(dimension, service_name) (netdata_systemd_service_cpu_utilization_percentage_average{hostname=~\"$hostname\", service_name=~\"$service\"})",
+ "fullMetaSearch": false,
+ "hide": false,
+ "includeNullMetadata": true,
+ "legendFormat": "{{service_name}} / {{dimension}}",
+ "range": true,
+ "refId": "used",
+ "useBackend": false
+ }
+ ],
+ "title": "CPU",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": 3600000,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "decimals": 2,
+ "fieldMinMax": false,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": null
+ },
+ {
+ "color": "transparent",
+ "value": 0.05
+ }
+ ]
+ },
+ "unit": "Kibits"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byFrameRefID",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "custom.axisPlacement",
+ "value": "right"
+ },
+ {
+ "id": "unit",
+ "value": "ms"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "red",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 0,
+ 10
+ ],
+ "fill": "dot"
+ }
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 12
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": "A",
+ "mode": "none"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byFrameRefID",
+ "options": "B"
+ },
+ "properties": [
+ {
+ "id": "custom.axisPlacement",
+ "value": "right"
+ },
+ {
+ "id": "unit",
+ "value": "ms"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "orange",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 0,
+ 10
+ ],
+ "fill": "dot"
+ }
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 17
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": "A",
+ "mode": "none"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 9
+ },
+ "id": 21,
+ "options": {
+ "legend": {
+ "calcs": [
+ "max",
+ "sum"
+ ],
+ "displayMode": "table",
+ "placement": "right",
+ "showLegend": true,
+ "width": 300
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "netdata_system_io_full_pressure_stall_time_ms_average{hostname=~\"$hostname\"} * -1",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "full stall time",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "netdata_system_io_some_pressure_stall_time_ms_average{instance=~\"$instance\"} * -1",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "some stall time",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "disableTextWrap": false,
+ "editorMode": "code",
+ "expr": "sum by(dimension, service_name) (netdata_systemd_service_disk_io_KiB_persec_average{instance=~\"$instance\", service_name=~\"$service\"})",
+ "fullMetaSearch": false,
+ "hide": false,
+ "includeNullMetadata": true,
+ "legendFormat": "{{service_name}} / {{dimension}}",
+ "range": true,
+ "refId": "used",
+ "useBackend": false
+ }
+ ],
+ "title": "Disk I/O",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "Kibits"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 17
+ },
+ "id": 18,
+ "options": {
+ "legend": {
+ "calcs": [
+ "max",
+ "sum"
+ ],
+ "displayMode": "table",
+ "placement": "right",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "netdata_disk_io_KiB_persec_average{hostname=~\"$hostname\", chart=~\"disk.sd.+\"}",
+ "instant": false,
+ "legendFormat": "{{device}} / {{dimension}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Disk I/O",
+ "type": "timeseries"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 25
+ },
+ "id": 4,
+ "panels": [],
+ "title": "Network Requests",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "scaleDistribution": {
+ "type": "linear"
+ }
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 26
+ },
+ "id": 17,
+ "links": [
+ {
+ "title": "explore",
+ "url": "https://grafana.tiserbox.com/explore?panes=%7B%22HWt%22:%7B%22datasource%22:%22cd6cc53e-840c-484d-85f7-96fede324006%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22expr%22:%22%7Bunit%3D%5C%22nginx.service%5C%22%7D%20%7C%20pattern%20%5C%22%3C_%3E%20%3C_%3E%20%3Cline%3E%5C%22%20%7C%20line_format%20%5C%22%7B%7B.line%7D%7D%5C%22%20%7C%20json%20%7C%20status%20%21~%20%5C%222..%5C%22%20%7C%20__error__%20%21%3D%20%5C%22JSONParserErr%5C%22%22,%22queryType%22:%22range%22,%22datasource%22:%7B%22type%22:%22loki%22,%22uid%22:%22cd6cc53e-840c-484d-85f7-96fede324006%22%7D,%22editorMode%22:%22code%22%7D%5D,%22range%22:%7B%22from%22:%22now-6h%22,%22to%22:%22now%22%7D%7D%7D&schemaVersion=1&orgId=1"
+ }
+ ],
+ "options": {
+ "calculate": false,
+ "cellGap": 1,
+ "color": {
+ "exponent": 0.5,
+ "fill": "dark-orange",
+ "mode": "scheme",
+ "reverse": false,
+ "scale": "exponential",
+ "scheme": "RdBu",
+ "steps": 62
+ },
+ "exemplars": {
+ "color": "rgba(255,0,255,0.7)"
+ },
+ "filterValues": {
+ "le": 1e-9
+ },
+ "legend": {
+ "show": true
+ },
+ "rowsFrame": {
+ "layout": "auto"
+ },
+ "tooltip": {
+ "mode": "single",
+ "showColorScale": false,
+ "yHistogram": false
+ },
+ "yAxis": {
+ "axisPlacement": "left",
+ "decimals": 0,
+ "reverse": false,
+ "unit": "s"
+ }
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "editorMode": "code",
+ "expr": "{hostname=~\"$hostname\",unit=\"nginx.service\"} | pattern \"<_> <_> <line>\" | line_format \"{{.line}}\" | json | __error__ != \"JSONParserErr\" | request_time > 100",
+ "legendFormat": "{{server_name}}",
+ "queryType": "range",
+ "refId": "A"
+ }
+ ],
+ "title": "Slow Requests Histogram > 100ms",
+ "transformations": [
+ {
+ "id": "extractFields",
+ "options": {
+ "keepTime": false,
+ "replace": false,
+ "source": "Line"
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Line": true,
+ "body_bytes_sent": true,
+ "bytes_sent": true,
+ "gzip_ration": true,
+ "id": true,
+ "labels": true,
+ "post": true,
+ "referrer": true,
+ "remote_addr": true,
+ "remote_user": true,
+ "request": true,
+ "request_length": true,
+ "server_name": true,
+ "status": true,
+ "time_local": true,
+ "tsNs": true,
+ "upstream_addr": true,
+ "upstream_connect_time": true,
+ "upstream_header_time": true,
+ "upstream_response_time": true,
+ "upstream_status": true,
+ "user_agent": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ },
+ {
+ "id": "convertFieldType",
+ "options": {
+ "conversions": [
+ {
+ "destinationType": "number",
+ "targetField": "request_time"
+ }
+ ],
+ "fields": {}
+ }
+ },
+ {
+ "id": "heatmap",
+ "options": {
+ "xBuckets": {
+ "mode": "size",
+ "value": ""
+ },
+ "yBuckets": {
+ "mode": "size",
+ "scale": {
+ "log": 2,
+ "type": "log"
+ },
+ "value": ""
+ }
+ }
+ }
+ ],
+ "type": "heatmap"
+ },
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "points",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 26
+ },
+ "id": 2,
+ "options": {
+ "legend": {
+ "calcs": [
+ "max",
+ "mean",
+ "variance"
+ ],
+ "displayMode": "table",
+ "placement": "right",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "editorMode": "code",
+ "expr": "{hostname=~\"$hostname\",unit=\"nginx.service\"} | pattern \"<_> <_> <line>\" | line_format \"{{.line}}\" | json | __error__ != \"JSONParserErr\" | request_time > 100",
+ "legendFormat": "",
+ "queryType": "range",
+ "refId": "A"
+ }
+ ],
+ "title": "Requests > 100ms",
+ "transformations": [
+ {
+ "id": "extractFields",
+ "options": {
+ "keepTime": true,
+ "replace": true,
+ "source": "labels"
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "body_bytes_sent": true,
+ "bytes_sent": true,
+ "gzip_ration": true,
+ "job": true,
+ "line": true,
+ "post": true,
+ "referrer": true,
+ "remote_addr": true,
+ "remote_user": true,
+ "request": true,
+ "request_length": true,
+ "status": true,
+ "time_local": true,
+ "unit": true,
+ "upstream_addr": true,
+ "upstream_connect_time": true,
+ "upstream_header_time": true,
+ "upstream_response_time": true,
+ "upstream_status": true,
+ "user_agent": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ },
+ {
+ "id": "convertFieldType",
+ "options": {
+ "conversions": [
+ {
+ "dateFormat": "",
+ "destinationType": "number",
+ "targetField": "request_time"
+ }
+ ],
+ "fields": {}
+ }
+ },
+ {
+ "id": "partitionByValues",
+ "options": {
+ "fields": [
+ "server_name"
+ ]
+ }
+ },
+ {
+ "id": "renameByRegex",
+ "options": {
+ "regex": "request_time (.*)",
+ "renamePattern": "$1"
+ }
+ }
+ ],
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "auto",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": false,
+ "inspect": false
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 34
+ },
+ "id": 3,
+ "links": [
+ {
+ "title": "explore",
+ "url": "https://grafana.tiserbox.com/explore?panes=%7B%22HWt%22:%7B%22datasource%22:%22cd6cc53e-840c-484d-85f7-96fede324006%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22expr%22:%22%7Bunit%3D%5C%22nginx.service%5C%22%7D%20%7C%20pattern%20%5C%22%3C_%3E%20%3C_%3E%20%3Cline%3E%5C%22%20%7C%20line_format%20%5C%22%7B%7B.line%7D%7D%5C%22%20%7C%20json%20%7C%20status%20%21~%20%5C%222..%5C%22%20%7C%20__error__%20%21%3D%20%5C%22JSONParserErr%5C%22%22,%22queryType%22:%22range%22,%22datasource%22:%7B%22type%22:%22loki%22,%22uid%22:%22cd6cc53e-840c-484d-85f7-96fede324006%22%7D,%22editorMode%22:%22code%22%7D%5D,%22range%22:%7B%22from%22:%22now-6h%22,%22to%22:%22now%22%7D%7D%7D&schemaVersion=1&orgId=1"
+ }
+ ],
+ "options": {
+ "cellHeight": "sm",
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "editorMode": "code",
+ "expr": "{hostname=~\"$hostname\",unit=\"nginx.service\"} | pattern \"<_> <_> <line>\" | line_format \"{{.line}}\" | json | __error__ != \"JSONParserErr\" | request_time > 1",
+ "queryType": "range",
+ "refId": "A"
+ }
+ ],
+ "title": "Network Requests Above 1s",
+ "transformations": [
+ {
+ "id": "extractFields",
+ "options": {
+ "replace": true,
+ "source": "Line"
+ }
+ }
+ ],
+ "type": "table"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 42
+ },
+ "id": 7,
+ "panels": [],
+ "title": "Databases",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "auto",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "inspect": false
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "duration_ms"
+ },
+ "properties": [
+ {
+ "id": "custom.width",
+ "value": 100
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "unit"
+ },
+ "properties": [
+ {
+ "id": "custom.width",
+ "value": 150
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 43
+ },
+ "id": 6,
+ "links": [
+ {
+ "title": "explore",
+ "url": "https://grafana.tiserbox.com/explore?panes=%7B%22HWt%22:%7B%22datasource%22:%22cd6cc53e-840c-484d-85f7-96fede324006%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22expr%22:%22%7Bunit%3D%5C%22nginx.service%5C%22%7D%20%7C%20pattern%20%5C%22%3C_%3E%20%3C_%3E%20%3Cline%3E%5C%22%20%7C%20line_format%20%5C%22%7B%7B.line%7D%7D%5C%22%20%7C%20json%20%7C%20status%20%21~%20%5C%222..%5C%22%20%7C%20__error__%20%21%3D%20%5C%22JSONParserErr%5C%22%22,%22queryType%22:%22range%22,%22datasource%22:%7B%22type%22:%22loki%22,%22uid%22:%22cd6cc53e-840c-484d-85f7-96fede324006%22%7D,%22editorMode%22:%22code%22%7D%5D,%22range%22:%7B%22from%22:%22now-6h%22,%22to%22:%22now%22%7D%7D%7D&schemaVersion=1&orgId=1"
+ }
+ ],
+ "options": {
+ "cellHeight": "sm",
+ "footer": {
+ "countRows": false,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "editorMode": "code",
+ "expr": "{hostname=~\"$hostname\",unit=\"postgresql.service\"} | regexp \".*duration: (?P<duration_ms>[0-9.]+) ms (?P<statement>.*)\" | duration_ms > 500 | __error__ != \"LabelFilterErr\"",
+ "queryType": "range",
+ "refId": "A"
+ }
+ ],
+ "title": "Slow DB Queries",
+ "transformations": [
+ {
+ "id": "extractFields",
+ "options": {
+ "replace": true,
+ "source": "labels"
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "job": true
+ },
+ "indexByName": {
+ "duration_ms": 0,
+ "job": 1,
+ "statement": 3,
+ "unit": 2
+ },
+ "renameByName": {}
+ }
+ }
+ ],
+ "type": "table"
+ }
+ ],
+ "preload": false,
+ "refresh": "1m",
+ "schemaVersion": 40,
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": ".*",
+ "current": {
+ "text": [
+ "baryum"
+ ],
+ "value": [
+ "baryum"
+ ]
+ },
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "definition": "label_values(netdata_systemd_service_unit_state_state_average,hostname)",
+ "includeAll": false,
+ "multi": true,
+ "name": "hostname",
+ "options": [],
+ "query": {
+ "qryType": 1,
+ "query": "label_values(netdata_systemd_service_unit_state_state_average,hostname)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
+ },
+ "refresh": 1,
+ "regex": "",
+ "type": "query"
+ },
+ {
+ "allValue": ".*",
+ "current": {
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "definition": "label_values(netdata_systemd_service_unit_state_state_average,unit_name)",
+ "includeAll": true,
+ "multi": true,
+ "name": "service",
+ "options": [],
+ "query": {
+ "qryType": 1,
+ "query": "label_values(netdata_systemd_service_unit_state_state_average,unit_name)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
+ },
+ "refresh": 1,
+ "regex": "",
+ "type": "query"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-30m",
+ "to": "now"
+ },
+ "timepicker": {},
+ "timezone": "",
+ "title": "Performance",
+ "uid": "e01156bf-cdba-42eb-9845-a401dd634d41",
+ "version": 82,
+ "weekStart": ""
+}
diff --git a/modules/by-name/mo/monitoring/dashboards/scraping_jobs.json b/modules/by-name/mo/monitoring/dashboards/scraping_jobs.json
new file mode 100644
index 0000000..39921d0
--- /dev/null
+++ b/modules/by-name/mo/monitoring/dashboards/scraping_jobs.json
@@ -0,0 +1,334 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": {
+ "type": "grafana",
+ "uid": "-- Grafana --"
+ },
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "fiscalYearStartMonth": 0,
+ "graphTooltip": 0,
+ "id": 5,
+ "links": [],
+ "panels": [
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "fieldConfig": {
+ "defaults": {},
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 0
+ },
+ "id": 5,
+ "options": {
+ "dedupStrategy": "none",
+ "enableInfiniteScrolling": false,
+ "enableLogDetails": true,
+ "prettifyLogMessage": false,
+ "showCommonLabels": false,
+ "showLabels": false,
+ "showTime": true,
+ "sortOrder": "Descending",
+ "wrapLogMessage": false
+ },
+ "pluginVersion": "12.2.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "direction": "backward",
+ "editorMode": "code",
+ "expr": "{unit=~\"prometheus-.*-exporter.service\"}",
+ "queryType": "range",
+ "refId": "A"
+ }
+ ],
+ "title": "Exporter Logs",
+ "type": "logs"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "fixedColor": "red",
+ "mode": "shades"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": 0
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 0
+ },
+ "id": 4,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "12.2.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "rate(net_conntrack_dialer_conn_failed_total{hostname=~\"$hostname\"}[2m]) > 0",
+ "instant": false,
+ "legendFormat": "{{dialer_name}} - {{reason}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Errors",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "fixedColor": "red",
+ "mode": "thresholds"
+ },
+ "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",
+ "value": 0
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 8
+ },
+ "id": 3,
+ "options": {
+ "alignValue": "center",
+ "legend": {
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "mergeValues": true,
+ "rowHeight": 0.9,
+ "showValue": "never",
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "12.2.0",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "prometheus_sd_discovered_targets{hostname=~\"$hostname\"}",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "{{config}}",
+ "range": true,
+ "refId": "All"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "label_replace(increase((sum by(dialer_name) (net_conntrack_dialer_conn_failed_total{hostname=~\"$hostname\"}))[15m:1m]), \"config\", \"$1\", \"dialer_name\", \"(.*)\")",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "{{dialer_name}}",
+ "range": true,
+ "refId": "Failed"
+ }
+ ],
+ "title": "Scraping jobs",
+ "transformations": [
+ {
+ "id": "labelsToFields",
+ "options": {
+ "keepLabels": [
+ "config"
+ ],
+ "mode": "columns"
+ }
+ },
+ {
+ "id": "merge",
+ "options": {}
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "prometheus_sd_discovered_targets": true
+ },
+ "indexByName": {},
+ "renameByName": {
+ "prometheus_sd_discovered_targets": ""
+ }
+ }
+ },
+ {
+ "id": "partitionByValues",
+ "options": {
+ "fields": [
+ "config"
+ ]
+ }
+ }
+ ],
+ "type": "state-timeline"
+ }
+ ],
+ "preload": false,
+ "refresh": "",
+ "schemaVersion": 42,
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "text": "baryum",
+ "value": "baryum"
+ },
+ "definition": "label_values(up,hostname)",
+ "includeAll": false,
+ "name": "hostname",
+ "options": [],
+ "query": {
+ "qryType": 1,
+ "query": "label_values(up,hostname)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
+ },
+ "refresh": 1,
+ "regex": "",
+ "type": "query"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-6h",
+ "to": "now"
+ },
+ "timepicker": {},
+ "timezone": "",
+ "title": "Scraping Jobs",
+ "uid": "debb763d-77aa-47bd-9290-2e02583c8ed2",
+ "version": 24
+}
diff --git a/modules/by-name/mo/monitoring/dashboards/systemd_exporter.json b/modules/by-name/mo/monitoring/dashboards/systemd_exporter.json
new file mode 100644
index 0000000..7a7e67c
--- /dev/null
+++ b/modules/by-name/mo/monitoring/dashboards/systemd_exporter.json
@@ -0,0 +1,2870 @@
+{
+ "apiVersion": "dashboard.grafana.app/v2",
+ "kind": "Dashboard",
+ "metadata": {
+ "name": "d67da086-b996-4b94-be01-84e607a60956",
+ "namespace": "default",
+ "uid": "5fdf1a03-a8fd-4697-aaaf-ef7e13e33ce9",
+ "resourceVersion": "1784477451414701",
+ "generation": 10,
+ "creationTimestamp": "2026-07-19T15:05:16Z",
+ "labels": {
+ "grafana.app/deprecatedInternalID": "2699293740498944"
+ },
+ "annotations": {
+ "grafana.app/createdBy": "user:dfsj9uc3855oga",
+ "grafana.app/folder": "",
+ "grafana.app/saved-from-ui": "Grafana v13.0.3 (NA)",
+ "grafana.app/updatedBy": "user:dfsj9uc3855oga",
+ "grafana.app/updatedTimestamp": "2026-07-19T16:10:51Z"
+ }
+ },
+ "spec": {
+ "annotations": [
+ {
+ "kind": "AnnotationQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "grafana",
+ "version": "v0",
+ "datasource": {
+ "name": "-- Grafana --"
+ },
+ "spec": {}
+ },
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "builtIn": true
+ }
+ }
+ ],
+ "cursorSync": "Off",
+ "description": "Dashboard for prometheus systemd exporter",
+ "editable": true,
+ "elements": {
+ "panel-1": {
+ "kind": "Panel",
+ "spec": {
+ "id": 1,
+ "title": "Exporter build info",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "systemd_exporter_build_info",
+ "format": "table",
+ "instant": true,
+ "legendFormat": "__auto",
+ "range": false
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "table",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "cellHeight": "sm",
+ "showHeader": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "auto",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "footer": {
+ "reducers": []
+ },
+ "inspect": false
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Time"
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom.viz",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "branch"
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom.viz",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "__name__"
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom.viz",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "instance"
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom.viz",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "custom.hideFrom.viz",
+ "value": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "panel-10": {
+ "kind": "Panel",
+ "spec": {
+ "id": 10,
+ "title": "Service Failed State",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "count by (state) (systemd_unit_state{instance=~\"$instance\",state=\"failed\"}==1)",
+ "instant": false,
+ "legendFormat": "{{state}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 1,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ },
+ "noValue": "0"
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-11": {
+ "kind": "Panel",
+ "spec": {
+ "id": 11,
+ "title": "Service Active State",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "count by (state) (systemd_unit_state{instance=~\"$instance\",state=\"active\"}==1)",
+ "instant": false,
+ "legendFormat": "{{state}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ },
+ "noValue": "0"
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-12": {
+ "kind": "Panel",
+ "spec": {
+ "id": 12,
+ "title": "Service Inactive State",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "count by (state) (systemd_unit_state{instance=~\"$instance\",state=\"inactive\"}==1)",
+ "instant": false,
+ "legendFormat": "{{state}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ },
+ "noValue": "0"
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-13": {
+ "kind": "Panel",
+ "spec": {
+ "id": 13,
+ "title": "Service Dectivating State",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "count by (state) (systemd_unit_state{instance=~\"$instance\",state=\"deactivating\"}==1)",
+ "instant": false,
+ "legendFormat": "{{state}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ },
+ "noValue": "0"
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-14": {
+ "kind": "Panel",
+ "spec": {
+ "id": 14,
+ "title": "Service State",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "count by (state) (systemd_unit_state{instance=~\"$instance\"}==1)",
+ "instant": false,
+ "legendFormat": "{{state}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-15": {
+ "kind": "Panel",
+ "spec": {
+ "id": 15,
+ "title": "Service Active services",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "$$hashKey": "object:24",
+ "aggregation": "Last",
+ "decimals": 2,
+ "displayAliasType": "Warning / Critical",
+ "displayType": "Regular",
+ "displayValueWithAlias": "Never",
+ "editorMode": "code",
+ "expr": "sum by (name,state) (systemd_unit_state{instance=~\"$instance\",state=\"active\"}) == 1",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true,
+ "units": "none",
+ "valueHandler": "Number Threshold"
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "max": 1,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-16": {
+ "kind": "Panel",
+ "spec": {
+ "id": 16,
+ "title": "Service Inctive services",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "$$hashKey": "object:24",
+ "aggregation": "Last",
+ "decimals": 2,
+ "displayAliasType": "Warning / Critical",
+ "displayType": "Regular",
+ "displayValueWithAlias": "Never",
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "sum by (name,state) (systemd_unit_state{instance=~\"$instance\",state=\"inactive\"}) == 1",
+ "instant": false,
+ "legendFormat": "{{name}} ",
+ "range": true,
+ "units": "none",
+ "valueHandler": "Number Threshold"
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "max": 1,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-17": {
+ "kind": "Panel",
+ "spec": {
+ "id": 17,
+ "title": "Service Activating services",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "$$hashKey": "object:24",
+ "aggregation": "Last",
+ "decimals": 2,
+ "displayAliasType": "Warning / Critical",
+ "displayType": "Regular",
+ "displayValueWithAlias": "Never",
+ "editorMode": "builder",
+ "expr": "sum by(name, state) (systemd_unit_state{instance=~\"$instance\", state=\"activating\"}) == 1",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true,
+ "units": "none",
+ "valueHandler": "Number Threshold"
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "max": 1,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-18": {
+ "kind": "Panel",
+ "spec": {
+ "id": 18,
+ "title": "Service Failed services",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "$$hashKey": "object:24",
+ "aggregation": "Last",
+ "decimals": 2,
+ "displayAliasType": "Warning / Critical",
+ "displayType": "Regular",
+ "displayValueWithAlias": "Never",
+ "editorMode": "code",
+ "expr": "sum by (name,state) (systemd_unit_state{instance=~\"$instance\",state=\"failed\"}) == 1",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true,
+ "units": "none",
+ "valueHandler": "Number Threshold"
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "max": 1,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-19": {
+ "kind": "Panel",
+ "spec": {
+ "id": 19,
+ "title": "Service Devativating services",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "$$hashKey": "object:24",
+ "aggregation": "Last",
+ "decimals": 2,
+ "displayAliasType": "Warning / Critical",
+ "displayType": "Regular",
+ "displayValueWithAlias": "Never",
+ "editorMode": "builder",
+ "expr": "sum by(name, state) (systemd_unit_state{instance=~\"$instance\", state=\"deactivating\"}) == 1",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true,
+ "units": "none",
+ "valueHandler": "Number Threshold"
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "max": 1,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-2": {
+ "kind": "Panel",
+ "spec": {
+ "id": 2,
+ "title": "Service Egress Traffic",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "builder",
+ "expr": "sum by(name) (rate(systemd_service_ip_egress_bytes{instance=~\"$instance\"}[$__rate_interval]))",
+ "instant": false,
+ "legendFormat": "{{name}} egress",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-24": {
+ "kind": "Panel",
+ "spec": {
+ "id": 24,
+ "title": "Timer last run",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "time() - systemd_timer_last_trigger_seconds{instance=~\"$instance\"} < 50*365*60*60",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "log": 2,
+ "type": "log"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-25": {
+ "kind": "Panel",
+ "spec": {
+ "id": 25,
+ "title": "Service uptime",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "time() - systemd_unit_start_time_seconds{instance=~\"$instance\"} < 50*365*60*60",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "log": 2,
+ "type": "log"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-26": {
+ "kind": "Panel",
+ "spec": {
+ "id": 26,
+ "title": "Unit State Count",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum(systemd_unit_state{instance=~\"$instance\"}) by (state)",
+ "interval": "1m",
+ "intervalFactor": 2,
+ "legendFormat": "{{ state }}",
+ "metric": "node_systemd_unit_state",
+ "range": true,
+ "step": 120
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [
+ "mean",
+ "lastNotNull",
+ "max",
+ "min"
+ ],
+ "displayMode": "table",
+ "placement": "right",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "multi",
+ "sort": "asc"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "short",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "points",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 8,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "always",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-3": {
+ "kind": "Panel",
+ "spec": {
+ "id": 3,
+ "title": "Service Ingress Traffic",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum by (name) (rate(systemd_service_ip_ingress_bytes{instance=~\"$instance\"}[$__rate_interval]))",
+ "instant": false,
+ "legendFormat": "{{name}} ingress",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "bytes",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-4": {
+ "kind": "Panel",
+ "spec": {
+ "id": 4,
+ "title": "Service Packets Sent",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum by (name) (rate(systemd_service_ip_egress_packets_total{instance=~\"$instance\"}[$__rate_interval]))",
+ "instant": false,
+ "legendFormat": "{{name}} sent",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-5": {
+ "kind": "Panel",
+ "spec": {
+ "id": 5,
+ "title": "Service Packets Received",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "sum by (name) (rate(systemd_service_ip_ingress_packets_total{instance=~\"$instance\"}[$__rate_interval]))",
+ "instant": false,
+ "legendFormat": "{{name}} received",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-6": {
+ "kind": "Panel",
+ "spec": {
+ "id": 6,
+ "title": "Service Restart",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "builder",
+ "expr": "sum by(name) (increase(systemd_service_restart_total{instance=~\"$instance\"}[$__rate_interval])) >= 1",
+ "instant": false,
+ "legendFormat": "{{name}} sent",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-7": {
+ "kind": "Panel",
+ "spec": {
+ "id": 7,
+ "title": "Service Restart Count",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "builder",
+ "expr": "sum by(name) (systemd_service_restart_total{instance=~\"$instance\"})",
+ "instant": false,
+ "legendFormat": "{{name}} sent",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "timeseries",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "annotations": {
+ "clustering": -1,
+ "multiLane": false
+ },
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": false
+ },
+ "tooltip": {
+ "hideZeros": false,
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ },
+ {
+ "value": 80,
+ "color": "red"
+ }
+ ]
+ },
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "barWidthFactor": 0.6,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "showValues": false,
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ }
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ },
+ "panel-9": {
+ "kind": "Panel",
+ "spec": {
+ "id": 9,
+ "title": "Service Activating State",
+ "description": "",
+ "links": [],
+ "data": {
+ "kind": "QueryGroup",
+ "spec": {
+ "queries": [
+ {
+ "kind": "PanelQuery",
+ "spec": {
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "editorMode": "code",
+ "expr": "count by (state) (systemd_unit_state{instance=~\"$instance\",state=\"activating\"}==1)",
+ "instant": false,
+ "legendFormat": "{{state}}",
+ "range": true
+ }
+ },
+ "refId": "A",
+ "hidden": false
+ }
+ }
+ ],
+ "transformations": [],
+ "queryOptions": {}
+ }
+ },
+ "vizConfig": {
+ "kind": "VizConfig",
+ "group": "stat",
+ "version": "13.0.3",
+ "spec": {
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "percentChangeColorMode": "standard",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "fieldConfig": {
+ "defaults": {
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "value": 0,
+ "color": "green"
+ }
+ ]
+ },
+ "color": {
+ "mode": "thresholds"
+ },
+ "noValue": "0"
+ },
+ "overrides": []
+ }
+ }
+ }
+ }
+ }
+ },
+ "layout": {
+ "kind": "RowsLayout",
+ "spec": {
+ "rows": [
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "General",
+ "collapse": false,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 3,
+ "height": 3,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-9"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 3,
+ "y": 0,
+ "width": 3,
+ "height": 3,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-11"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 6,
+ "y": 0,
+ "width": 3,
+ "height": 3,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-10"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 9,
+ "y": 0,
+ "width": 3,
+ "height": 3,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-12"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 3,
+ "height": 3,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-13"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 3,
+ "width": 24,
+ "height": 11,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-26"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 14,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-6"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 14,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-7"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 22,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-24"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 22,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-25"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "State",
+ "collapse": false,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-14"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-16"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 8,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-15"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 8,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-17"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 16,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-18"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 16,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-19"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Traffic",
+ "collapse": false,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-2"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 0,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-3"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 8,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-4"
+ }
+ }
+ },
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 12,
+ "y": 8,
+ "width": 12,
+ "height": 8,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-5"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "kind": "RowsLayoutRow",
+ "spec": {
+ "title": "Extra",
+ "collapse": false,
+ "layout": {
+ "kind": "GridLayout",
+ "spec": {
+ "items": [
+ {
+ "kind": "GridLayoutItem",
+ "spec": {
+ "x": 0,
+ "y": 0,
+ "width": 17,
+ "height": 4,
+ "element": {
+ "kind": "ElementReference",
+ "name": "panel-1"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "links": [],
+ "liveNow": false,
+ "preload": false,
+ "tags": [],
+ "timeSettings": {
+ "timezone": "browser",
+ "from": "now-3h",
+ "to": "now",
+ "autoRefresh": "",
+ "autoRefreshIntervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "hideTimepicker": false,
+ "fiscalYearStartMonth": 0
+ },
+ "title": "Systemd exporter",
+ "variables": [
+ {
+ "kind": "DatasourceVariable",
+ "spec": {
+ "name": "datasource",
+ "pluginId": "prometheus",
+ "refresh": "onDashboardLoad",
+ "regex": "",
+ "current": {
+ "text": "Prometheus",
+ "value": "Prometheus"
+ },
+ "options": [],
+ "multi": false,
+ "includeAll": false,
+ "hide": "dontHide",
+ "skipUrlSync": false,
+ "allowCustomValue": true
+ }
+ },
+ {
+ "kind": "QueryVariable",
+ "spec": {
+ "name": "instance",
+ "current": {
+ "text": "",
+ "value": ""
+ },
+ "hide": "dontHide",
+ "refresh": "onDashboardLoad",
+ "skipUrlSync": false,
+ "query": {
+ "kind": "DataQuery",
+ "group": "prometheus",
+ "version": "v0",
+ "datasource": {
+ "name": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "spec": {
+ "query": "label_values(systemd_exporter_build_info,instance)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
+ }
+ },
+ "regex": "",
+ "regexApplyTo": "value",
+ "sort": "disabled",
+ "definition": "label_values(systemd_exporter_build_info,instance)",
+ "options": [],
+ "multi": false,
+ "includeAll": false,
+ "allowCustomValue": true
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/modules/by-name/mo/monitoring/module.nix b/modules/by-name/mo/monitoring/module.nix
new file mode 100644
index 0000000..e0fc5db
--- /dev/null
+++ b/modules/by-name/mo/monitoring/module.nix
@@ -0,0 +1,31 @@
+# Heavily inspired by:
+# https://github.com/ibizaman/selfhostblocks/blob/989865eb519e3fc3e8a803c374775451c47a29c8/modules/blocks/monitoring.nix
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.vhack.monitoring;
+in {
+ imports = [
+ ./components/loki.nix
+ # ./components/perses.nix
+ ./components/grafana.nix
+ ./components/scrutiny.nix
+ ./components/prometheus.nix
+ ];
+
+ options.vhack.monitoring = {
+ enable = lib.mkEnableOption "monitoring defaults";
+ };
+
+ config.vhack.monitoring = lib.mkIf cfg.enable {
+ grafana.enable = true;
+
+ loki.enable = true;
+
+ prometheus.enable = true;
+
+ scrutiny. enable = true;
+ };
+}
diff --git a/modules/by-name/mo/monitoring/rules.json b/modules/by-name/mo/monitoring/rules.json
new file mode 100644
index 0000000..8e050e6
--- /dev/null
+++ b/modules/by-name/mo/monitoring/rules.json
@@ -0,0 +1,386 @@
+[
+ {
+ "uid": "f5246fa3-163f-4eae-9e1d-5b0fe2af0509",
+ "title": "5XX Requests Error Budgets Under 99%",
+ "condition": "threshold",
+ "data": [
+ {
+ "refId": "A",
+ "queryType": "range",
+ "relativeTimeRange": {
+ "from": 21600,
+ "to": 0
+ },
+ "datasourceUid": "cd6cc53e-840c-484d-85f7-96fede324006",
+ "model": {
+ "datasource": {
+ "type": "loki",
+ "uid": "cd6cc53e-840c-484d-85f7-96fede324006"
+ },
+ "editorMode": "code",
+ "expr": "(sum by(server_name) (count_over_time({unit=\"nginx.service\"} | pattern \"<_> <_> <line>\" | line_format \"{{.line}}\" | json | __error__ != \"JSONParserErr\" | status =~ \"[1234]..\" | server_name =~ \".*\" [1h])) / sum by(server_name) (count_over_time({unit=\"nginx.service\"} | pattern \"<_> <_> <line>\" | line_format \"{{.line}}\" | json | __error__ != \"JSONParserErr\" | server_name =~ \".*\" [1h])))",
+ "intervalMs": 1000,
+ "legendFormat": "{{server_name}}",
+ "maxDataPoints": 43200,
+ "queryType": "range",
+ "refId": "A"
+ }
+ },
+ {
+ "refId": "last",
+ "relativeTimeRange": {
+ "from": 0,
+ "to": 0
+ },
+ "datasourceUid": "__expr__",
+ "model": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "B"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "datasource": {
+ "type": "__expr__",
+ "uid": "__expr__"
+ },
+ "expression": "A",
+ "intervalMs": 1000,
+ "maxDataPoints": 43200,
+ "reducer": "last",
+ "refId": "last",
+ "type": "reduce"
+ }
+ },
+ {
+ "refId": "threshold",
+ "relativeTimeRange": {
+ "from": 0,
+ "to": 0
+ },
+ "datasourceUid": "__expr__",
+ "model": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0.99
+ ],
+ "type": "lt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "C"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "datasource": {
+ "type": "__expr__",
+ "uid": "__expr__"
+ },
+ "expression": "last",
+ "intervalMs": 1000,
+ "maxDataPoints": 43200,
+ "refId": "threshold",
+ "type": "threshold"
+ }
+ }
+ ],
+ "dasboardUid": "d66242cf-71e8-417c-8ef7-51b0741545df",
+ "panelId": 9,
+ "noDataState": "OK",
+ "execErrState": "Error",
+ "for": "20m",
+ "annotations": {
+ "__dashboardUid__": "d66242cf-71e8-417c-8ef7-51b0741545df",
+ "__panelId__": "9",
+ "description": "",
+ "runbook_url": "",
+ "summary": "The error budget for a service for the last 1 hour is under 99%"
+ },
+ "labels": {
+ "role": "sysadmin"
+ },
+ "isPaused": false
+ },
+ {
+ "uid": "ee817l3a88s1sd",
+ "title": "Certificate Did Not Renew",
+ "condition": "C",
+ "data": [
+ {
+ "refId": "A",
+ "relativeTimeRange": {
+ "from": 1800,
+ "to": 0
+ },
+ "datasourceUid": "df80f9f5-97d7-4112-91d8-72f523a02b09",
+ "model": {
+ "adhocFilters": [],
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "expr": "min by(subject) (ssl_certificate_expiry_seconds)",
+ "interval": "",
+ "intervalMs": 15000,
+ "legendFormat": "{{exported_hostname}}: {{subject}} {{path}}",
+ "maxDataPoints": 43200,
+ "range": true,
+ "refId": "A"
+ }
+ },
+ {
+ "refId": "B",
+ "relativeTimeRange": {
+ "from": 0,
+ "to": 0
+ },
+ "datasourceUid": "__expr__",
+ "model": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "B"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "datasource": {
+ "type": "__expr__",
+ "uid": "__expr__"
+ },
+ "expression": "A",
+ "intervalMs": 1000,
+ "maxDataPoints": 43200,
+ "reducer": "last",
+ "refId": "B",
+ "type": "reduce"
+ }
+ },
+ {
+ "refId": "C",
+ "relativeTimeRange": {
+ "from": 0,
+ "to": 0
+ },
+ "datasourceUid": "__expr__",
+ "model": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 604800
+ ],
+ "type": "lt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "C"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "datasource": {
+ "type": "__expr__",
+ "uid": "__expr__"
+ },
+ "expression": "B",
+ "intervalMs": 1000,
+ "maxDataPoints": 43200,
+ "refId": "C",
+ "type": "threshold"
+ }
+ }
+ ],
+ "dashboardUid": "ae818js0bvw8wb",
+ "panelId": 3,
+ "noDataState": "NoData",
+ "execErrState": "Error",
+ "for": "20m",
+ "annotations": {
+ "__dashboardUid__": "ae818js0bvw8wb",
+ "__panelId__": "3",
+ "description": "The expiry date of the certificate is 1 week from now.",
+ "summary": "Certificate did not renew on time."
+ },
+ "labels": {
+ "role": "sysadmin"
+ },
+ "isPaused": false
+ },
+ {
+ "uid": "df4doj5pomhvkf",
+ "title": "Late Backups",
+ "condition": "C",
+ "data": [
+ {
+ "refId": "A",
+ "relativeTimeRange": {
+ "from": 10800,
+ "to": 0
+ },
+ "datasourceUid": "df80f9f5-97d7-4112-91d8-72f523a02b09",
+ "model": {
+ "adhocFilters": [],
+ "datasource": {
+ "type": "prometheus",
+ "uid": "df80f9f5-97d7-4112-91d8-72f523a02b09"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "(\n # Timer triggered at least once in the last 24h\n label_replace((\n time()\n -\n systemd_timer_last_trigger_seconds{name=~\".*backup.*.timer\"}\n ) < 24*60*60, \"name\", \"$1.service\", \"name\", \"(.*).timer\")\n AND on(name)\n # At least one failure in the last 24h\n (\n max_over_time(systemd_unit_state{name=~\".*backup.*.service\", state=\"failed\"}[24h]) > 0\n )\n AND on(name)\n # No successes in the last 24h\n (\n max_over_time(systemd_unit_state{name=~\".*backup.*.service\", state=\"inactive\"}[24h]) == 0\n )\n)",
+ "instant": false,
+ "interval": "",
+ "intervalMs": 15000,
+ "legendFormat": "{{name}}",
+ "maxDataPoints": 43200,
+ "range": true,
+ "refId": "A"
+ }
+ },
+ {
+ "refId": "B",
+ "relativeTimeRange": {
+ "from": 0,
+ "to": 0
+ },
+ "datasourceUid": "__expr__",
+ "model": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "B"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "datasource": {
+ "type": "__expr__",
+ "uid": "__expr__"
+ },
+ "expression": "A",
+ "intervalMs": 1000,
+ "maxDataPoints": 43200,
+ "reducer": "last",
+ "refId": "B",
+ "type": "reduce"
+ }
+ },
+ {
+ "refId": "C",
+ "relativeTimeRange": {
+ "from": 0,
+ "to": 0
+ },
+ "datasourceUid": "__expr__",
+ "model": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 0
+ ],
+ "type": "gt"
+ },
+ "operator": {
+ "type": "and"
+ },
+ "query": {
+ "params": [
+ "C"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "last"
+ },
+ "type": "query"
+ }
+ ],
+ "datasource": {
+ "type": "__expr__",
+ "uid": "__expr__"
+ },
+ "expression": "B",
+ "intervalMs": 1000,
+ "maxDataPoints": 43200,
+ "refId": "C",
+ "type": "threshold"
+ }
+ }
+ ],
+ "dashboardUid": "f05500d0-15ed-4719-b68d-fb898ca13cc8",
+ "panelId": 15,
+ "noDataState": "OK",
+ "execErrState": "Error",
+ "annotations": {
+ "__dashboardUid__": "f05500d0-15ed-4719-b68d-fb898ca13cc8",
+ "__panelId__": "15",
+ "summary": "A backup did not run in the last 24 hours."
+ },
+ "labels": {
+ "role": "sysadmin"
+ },
+ "isPaused": false
+ }
+]
diff --git a/modules/by-name/mu/murmur/module.nix b/modules/by-name/mu/murmur/module.nix
index 5cc6f7d..061e236 100644
--- a/modules/by-name/mu/murmur/module.nix
+++ b/modules/by-name/mu/murmur/module.nix
@@ -47,8 +47,11 @@ in {
The entire team of [name of the company] is thrilled to welcome you on board. We hope you’ll do some amazing work here!
'';
- sslKey = "${cfg.murmurStore}/key.pem";
- sslCert = "${cfg.murmurStore}/fullchain.pem";
+
+ tls = {
+ keyPath = "${cfg.murmurStore}/key.pem";
+ certPath = "${cfg.murmurStore}/fullchain.pem";
+ };
registerUrl = cfg.url;
registerName = cfg.name;
diff --git a/modules/by-name/ne/nextcloud/module.nix b/modules/by-name/ne/nextcloud/module.nix
index 2e40970..f91ddae 100644
--- a/modules/by-name/ne/nextcloud/module.nix
+++ b/modules/by-name/ne/nextcloud/module.nix
@@ -10,7 +10,7 @@ in {
enable = lib.mkEnableOption "a sophisticated nextcloud setup";
package = lib.mkOption {
type = lib.types.package;
- default = pkgs.nextcloud31;
+ default = pkgs.nextcloud32;
description = "The nextcloud package to use";
};
hostname = lib.mkOption {
@@ -22,6 +22,7 @@ in {
description = "The age encrypted admin password file";
};
};
+
config = lib.mkIf cfg.enable {
vhack = {
nginx.enable = true;
@@ -42,6 +43,12 @@ in {
services = {
nextcloud = {
enable = true;
+ inherit (cfg) package;
+
+ extraApps = {
+ inherit (cfg.package.packages.apps) calendar contacts tasks;
+ };
+ extraAppsEnable = true;
configureRedis = true;
config = {
adminuser = "admin";
@@ -54,7 +61,6 @@ in {
hostName = cfg.hostname;
https = true;
maxUploadSize = "5G";
- package = cfg.package;
settings = {
default_phone_region = "DE";
};
@@ -67,7 +73,10 @@ in {
users = {
users = {
"nextcloud".uid = config.vhack.constants.ids.uids.nextcloud;
- "redis-nextcloud".uid = config.vhack.constants.ids.uids.redis-nextcloud;
+ "redis-nextcloud" = {
+ uid = config.vhack.constants.ids.uids.redis-nextcloud;
+ group = "redis-nextcloud";
+ };
};
groups = {
"nextcloud".gid = config.vhack.constants.ids.gids.nextcloud;
diff --git a/modules/by-name/ng/nginx/module.nix b/modules/by-name/ng/nginx/module.nix
index fa3337d..1317d4d 100644
--- a/modules/by-name/ng/nginx/module.nix
+++ b/modules/by-name/ng/nginx/module.nix
@@ -18,15 +18,6 @@ in {
a default nginx config.
'';
- selfsign = lib.mkOption {
- type = lib.types.bool;
- default = false;
- description = ''
- Whether to selfsign the acme certificates. This should only
- really be useful for tests.
- '';
- };
-
redirects = lib.mkOption {
type = lib.types.attrsOf lib.types.str;
default = {};
@@ -39,9 +30,27 @@ in {
};
config = lib.mkIf cfg.enable {
- vhack.persist.directories = [
- "/var/lib/acme"
- ];
+ vhack = {
+ persist.directories = [
+ "/var/lib/acme"
+ ];
+
+ monitoring.prometheus = {
+ sources = [
+ {
+ name = "nginx";
+ target = "127.0.0.1:${toString config.services.prometheus.exporters.nginx.port}";
+ }
+ ];
+ };
+ };
+
+ services.prometheus.exporters.nginx = {
+ enable = true;
+ port = 9111;
+ listenAddress = "127.0.0.1";
+ scrapeUri = "http://localhost:80/nginx_status";
+ };
users = {
users.acme = {
@@ -56,10 +65,6 @@ in {
defaults = {
email = "admin@vhack.eu";
webroot = "/var/lib/acme/acme-challenge";
-
- # Avoid spamming the acme server, if we run in a test, and only really want self-signed
- # certificates
- server = lib.mkIf cfg.selfsign "https://127.0.0.1";
};
};
@@ -68,6 +73,10 @@ in {
};
services.nginx = {
enable = true;
+
+ # Enable the status page for the prometheus exporter.
+ statusPage = lib.mkIf config.services.prometheus.enable true;
+
virtualHosts = redirects;
};
};
diff --git a/modules/by-name/re/redlib/module.nix b/modules/by-name/re/redlib/module.nix
index eb5edba..4d3c600 100644
--- a/modules/by-name/re/redlib/module.nix
+++ b/modules/by-name/re/redlib/module.nix
@@ -23,19 +23,6 @@ in {
openFirewall = false;
};
- services.nginx = {
- enable = true;
- virtualHosts.${domain} = {
- locations."/".proxyPass = "http://127.0.0.1:${toString config.services.redlib.port}";
-
- enableACME = true;
- forceSSL = true;
- };
- };
-
- # TODO(@bpeetz): Remove this at some point. <2025-02-04>
- vhack.nginx.redirects = {
- "libreddit.vhack.eu" = "${domain}";
- };
+ vhack.anubis.instances."${domain}".target = "http://127.0.0.1:${toString config.services.redlib.port}";
};
}
diff --git a/modules/by-name/ro/rocie/module.nix b/modules/by-name/ro/rocie/module.nix
new file mode 100644
index 0000000..1e419b8
--- /dev/null
+++ b/modules/by-name/ro/rocie/module.nix
@@ -0,0 +1,59 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.vhack.rocie;
+ data = "/var/lib/rocie";
+in {
+ options.vhack.rocie = {
+ enable = lib.mkEnableOption "Rocie integration into vhack.eu";
+
+ domain = lib.mkOption {
+ type = lib.types.str;
+ description = "The domain where to deploy rocie";
+ };
+
+ loginSecret = lib.mkOption {
+ type = lib.types.path;
+ description = "The age encrypted secret file for rocie, passed to agenix";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ rocie = {
+ enable = true;
+ inherit (cfg) domain;
+
+ dbPath = "${data}/database.db";
+
+ secretKeyFile = config.age.secrets.rocie_secret.path;
+ };
+
+ vhack.persist.directories = [
+ {
+ directory = data;
+ user = "rocie";
+ group = "rocie";
+ mode = "0700";
+ }
+ ];
+
+ users = {
+ groups.rocie = {
+ gid = config.vhack.constants.ids.gids.rocie;
+ };
+ users.rocie = {
+ group = "rocie";
+ uid = config.vhack.constants.ids.uids.rocie;
+ };
+ };
+
+ age.secrets.rocie_secret = {
+ file = cfg.loginSecret;
+ mode = "700";
+ owner = "rocie";
+ group = "rocie";
+ };
+ };
+}
diff --git a/modules/by-name/ru/rust-motd/module.nix b/modules/by-name/ru/rust-motd/module.nix
index a6998f4..bf23843 100644
--- a/modules/by-name/ru/rust-motd/module.nix
+++ b/modules/by-name/ru/rust-motd/module.nix
@@ -19,6 +19,13 @@
|| v.openssh.authorizedKeys.keyFiles != []
);
userList = builtins.mapAttrs (n: v: 2) (lib.filterAttrs pred config.users.users);
+
+ bannerFile =
+ pkgs.runCommandLocal "banner-file" {
+ nativeBuildInputs = [pkgs.figlet];
+ } ''
+ echo "${config.system.name}" | figlet -f slant > "$out"
+ '';
in {
options.vhack.rust-motd = {
enable = lib.mkEnableOption "rust-motd";
@@ -49,25 +56,22 @@ in {
banner = {
color = "red";
- command = "${pkgs.hostname}/bin/hostname | ${pkgs.figlet}/bin/figlet -f slant";
- # if you don't want a dependency on figlet, you can generate your
- # banner however you want, put it in a file, and then use something like:
- # command = "cat banner.txt"
+ # Avoid some runtime dependencies.
+ command = "cat ${bannerFile}";
+ };
+
+ cg_stats = {
+ state_file = "/var/lib/rust-motd/cg_stats_state";
+ threshold = 0.02; # When to start generating output for a cgroup
+ };
+ load_avg = {
+ format = "Load (1, 5, 15 min.): {one:.02}, {five:.02}, {fifteen:.02}";
};
uptime = {
prefix = "Uptime:";
};
- # ssl_certificates = {
- # sort_method = "manual";
- #
- # certs = {
- # "server1.vhack.eu" = "/var/lib/acme/server1.vhack.eu/cert.pem";
- # "vhack.eu" = "/var/lib/acme/vhack.eu/cert.pem";
- # };
- # };
-
filesystems = {
root = "/";
persistent = "/srv";
@@ -79,7 +83,7 @@ in {
swap_pos = "beside"; # or "below" or "none"
};
- fail2_ban = {
+ fail_2_ban = {
jails = ["sshd"]; #, "anotherjail"]
};
diff --git a/modules/by-name/sh/sharkey/module.nix b/modules/by-name/sh/sharkey/module.nix
index 2b50cf0..186fed2 100644
--- a/modules/by-name/sh/sharkey/module.nix
+++ b/modules/by-name/sh/sharkey/module.nix
@@ -1,277 +1,114 @@
-# Source: https://github.com/sodiboo/system/blob/b63c7b27f49043e8701b3ff5e1441cd27d5a2fff/sharkey/module.nix
{
config,
lib,
pkgs,
- vhackPackages,
...
}: let
cfg = config.vhack.sharkey;
-
- createDB = cfg.database.host == "127.0.0.1" && cfg.database.createLocally;
-
- settingsFormat = pkgs.formats.yaml {};
- configFile = settingsFormat.generate "sharkey-config.yml" cfg.settings;
in {
- options.vhack.sharkey = {
- enable = lib.mkEnableOption "sharkey";
-
- fqdn = lib.mkOption {
- description = "The fully qualified domain name of this instance.";
- type = lib.types.str;
- example = "sharkey.shonk.social";
- };
-
- package = lib.mkOption {
- type = lib.types.package;
- default = vhackPackages.sharkey;
- defaultText = lib.literalExpression "vhackPackages.sharkey";
- description = "Sharkey package to use.";
- };
-
- dataDirectory = lib.mkOption {
- type = lib.types.path;
- default = "/var/lib/sharkey";
- description = "The directory where sharkey stores it's data.";
-
- # This is already set in the package.
- readOnly = true;
- };
-
- database = {
- createLocally = lib.mkOption {
- description = "Whether to enable local db creation.";
- type = lib.types.bool;
- default = true;
- };
+ options = {
+ vhack.sharkey = {
+ enable = lib.mkEnableOption "sharkey";
- host = lib.mkOption {
+ fqdn = lib.mkOption {
+ description = "The fully qualified domain name of this instance.";
type = lib.types.str;
- default = "127.0.0.1";
- description = "The database host.";
+ example = "sharkey.shonk.social";
};
- port = lib.mkOption {
- type = lib.types.port;
- default = 5432;
- description = "The database port.";
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.sharkey;
+ defaultText = lib.literalExpression "vhackPackages.sharkey";
+ description = "Sharkey package to use.";
};
- name = lib.mkOption {
- type = lib.types.str;
- default = "sharkey";
- description = "The database name in postgresql.";
+ mediaDirectory = lib.mkOption {
+ type = lib.types.path;
+ default = "/var/lib/sharkey";
+ description = "The directory where sharkey stores it's data.";
};
- };
- settings = lib.mkOption {
- inherit (settingsFormat) type;
- default = {};
- description = ''
- Configuration for Sharkey, see
- <link xlink:href="https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/.config/example.yml"/>
- for supported settings.
- '';
+ settings = lib.mkOption {
+ inherit (pkgs.formats.yaml {}) type;
+ default = {};
+ description = ''
+ Extra Configuration for Sharkey, see
+ <link xlink:href="https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/.config/example.yml"/>
+ for supported settings.
+
+ Note, that this is applied on-top of the neccessary config.
+ '';
+ };
};
};
config = lib.mkIf cfg.enable {
- environment.systemPackages = [cfg.package];
-
- vhack = {
- nginx.enable = true;
+ services = {
+ sharkey = {
+ enable = true;
- sharkey.settings = {
- id = "aidx";
+ inherit (cfg) package;
+ openFirewall = false;
+ setupRedis = true;
+ setupPostgresql = true;
- url = "https://${cfg.fqdn}/";
- port = 5312;
+ settings =
+ cfg.settings
+ // {
+ url = "https://${cfg.fqdn}/";
+ port = 5312;
- db = {
- inherit (cfg.database) host port;
- db = cfg.database.name;
- user = cfg.database.name;
- pass = "sharkey-password";
- };
- redis = {
- path = config.services.redis.servers."sharkey".unixSocket;
- };
+ inherit (cfg) mediaDirectory;
+ fulltextSearch.provider = "sqlLike";
+ };
};
- persist.directories = [
- {
- directory = "${config.services.redis.servers."sharkey".settings.dir}";
- user = "sharkey";
- group = "redis-sharey";
- mode = "0770";
- }
- {
- directory = "${cfg.dataDirectory}";
- user = "sharkey";
- group = "sharkey";
- mode = "0770";
- }
- ];
- };
-
- services = {
nginx.virtualHosts."${cfg.fqdn}" = {
locations."/" = {
- proxyPass = "http://127.0.0.1:${toString cfg.settings.port}";
+ proxyPass = "http://127.0.0.1:${toString config.services.sharkey.settings.port}";
proxyWebsockets = true;
};
- # proxy_set_header Host $host;
- # proxy_http_version 1.1;
- # proxy_redirect off;
- #
- # # If it's behind another reverse proxy or CDN, remove the following.
- # proxy_set_header X-Real-IP $remote_addr;
- # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- # proxy_set_header X-Forwarded-Proto https;
- #
- # # For WebSocket
- # proxy_set_header Upgrade $http_upgrade;
- # proxy_set_header Connection $connection_upgrade;
- #
- # # Cache settings
- # proxy_cache cache1;
- # proxy_cache_lock on;
- # proxy_cache_use_stale updating;
- # proxy_force_ranges on;
- # add_header X-Cache $upstream_cache_status;
-
enableACME = true;
forceSSL = true;
};
-
- postgresql = lib.mkIf createDB {
- enable = true;
- settings.port = cfg.database.port;
- ensureUsers = [
- {
- inherit (cfg.database) name;
- ensureDBOwnership = true;
- }
- ];
- ensureDatabases = [cfg.database.name];
- };
-
- redis = {
- servers."sharkey" = {
- enable = true;
-
- user = "sharkey";
-
- # Disable TCP listening. (We have a UNIX socket)
- port = 0;
- bind = null;
-
- settings = {
- protected-mode = true;
- enable-protected-configs = false;
- enable-debug-command = false;
- enable-module-command = false;
-
- supervised = "systemd";
- stop-writes-on-bgsave-error = true;
- sanitize-dump-payload = "clients";
- };
- };
- };
};
- systemd.services.postgresql.postStart = ''
- $PSQL -tAc "ALTER ROLE ${cfg.database.name} WITH ENCRYPTED PASSWORD 'sharkey-password';"
- '';
-
systemd.services.sharkey = {
- requires =
- [
- "redis-sharkey.service"
- "network-online.target"
- ]
- ++ lib.optionals createDB ["postgresql.service"];
-
- after =
- [
- "redis-sharkey.service"
- "network-online.target"
- ]
- ++ lib.optionals createDB ["postgresql.service"];
-
- wantedBy = ["multi-user.target"];
-
- environment = {
- MISSKEY_CONFIG_YML = "${configFile}";
- NODE_ENV = "production";
- };
+ after = [
+ "redis-sharkey.service"
+ ];
+ bindsTo = [
+ "redis-sharkey.service"
+ ];
serviceConfig = {
- Type = "simple";
-
- StateDirectory = "sharkey";
- StateDirectoryMode = "0700";
- CacheDirectory = "sharkey";
- RuntimeDirectory = "sharkey";
- RuntimeDirectoryMode = "0700";
- ExecStart = "${lib.getExe cfg.package} migrateandstart";
-
- TimeoutSec = 60;
- Restart = "no";
-
- StandardOutput = "journal";
- StandardError = "journal";
- SyslogIdentifier = "sharkey";
-
+ # The upstream service uses DynamicUsers, which currently poses issues to our
+ # directory persisting strategy.
User = "sharkey";
Group = "sharkey";
+ DynamicUser = lib.mkForce false;
+ };
+ };
- # Bind standard privileged ports
- AmbientCapabilities = [];
- CapabilityBoundingSet = [];
-
- ReadWritePaths = [
- "${cfg.dataDirectory}"
- ];
+ vhack = {
+ nginx.enable = true;
- # Hardening
- DeviceAllow = [""];
- LockPersonality = true;
- # Probably needed for v8's JIT (crashes with it on).
- MemoryDenyWriteExecute = false;
- PrivateDevices = true;
- PrivateUsers = true;
- # Sharkey needs access to the hosts CPUs
- ProcSubset = "all";
- PrivateTmp = true;
- ProtectClock = true;
- ProtectControlGroups = true;
- ProtectHome = true;
- ProtectHostname = true;
- ProtectKernelLogs = true;
- ProtectKernelModules = true;
- ProtectKernelTunables = true;
- ProtectProc = "invisible";
- ProtectSystem = "strict";
- RestrictAddressFamilies = [
- "AF_UNIX" # Local communication unix(7)
- "AF_INET" # IPv4 Internet protocols ip(7)
- "AF_INET6" # IPv6 Internet protocols ipv6(7)
- # Needed for nodes `os.networkInterfaces()` function.
- "AF_NETLINK" # Kernel user interface device netlink(7)
- ];
- RestrictNamespaces = true;
- RestrictRealtime = true;
- RestrictSUIDSGID = true;
- SystemCallArchitectures = "native";
- SystemCallFilter = [
- "@system-service"
- "@chown"
- "~@mount"
- ];
- UMask = "0077";
- };
+ persist.directories = [
+ {
+ directory = "${config.services.redis.servers."sharkey".settings.dir}";
+ user = "sharkey";
+ group = "redis-sharey";
+ mode = "0770";
+ }
+ {
+ directory = "${cfg.mediaDirectory}";
+ user = "sharkey";
+ group = "sharkey";
+ mode = "0700";
+ }
+ ];
};
users = {
diff --git a/modules/by-name/st/stalwart-mail/module.nix b/modules/by-name/st/stalwart-mail/module.nix
index 7bd985f..f7e44d8 100644
--- a/modules/by-name/st/stalwart-mail/module.nix
+++ b/modules/by-name/st/stalwart-mail/module.nix
@@ -18,7 +18,7 @@ in {
options.vhack.stalwart-mail = {
enable = lib.mkEnableOption "starwart-mail";
- package = lib.mkPackageOption vhackPackages "stalwart-mail-free" {};
+ package = lib.mkPackageOption pkgs "stalwart-mail" {};
admin = lib.mkOption {
description = ''
diff --git a/modules/by-name/st/stalwart-mail/settings.nix b/modules/by-name/st/stalwart-mail/settings.nix
index 907cea9..dfaf63d 100644
--- a/modules/by-name/st/stalwart-mail/settings.nix
+++ b/modules/by-name/st/stalwart-mail/settings.nix
@@ -24,7 +24,7 @@
then "internal"
else "in-memory";
in {
- config.services.stalwart-mail.settings = lib.mkIf cfg.enable {
+ config.services.stalwart.settings = lib.mkIf cfg.enable {
# https://www.rfc-editor.org/rfc/rfc6376.html#section-3.3
signature = let
signatures =
@@ -197,7 +197,7 @@ in {
# Fetch the newest spam-filter rules not from github, but from the nix
# package.
- resource = "file://${cfg.package.passthru.spamfilter}/spam-filter.toml";
+ resource = "file://${cfg.package.passthru.spam-filter}/spam-filter.toml";
auto-update = false;
};
diff --git a/modules/by-name/sy/system-info/module.nix b/modules/by-name/sy/system-info/module.nix
index 8136ae5..e25e88c 100644
--- a/modules/by-name/sy/system-info/module.nix
+++ b/modules/by-name/sy/system-info/module.nix
@@ -36,9 +36,11 @@
"10222" = checkEnabled "taskchampion-sync" "taskchampion-sync";
+ "64738" = checkEnabled "murmur" "murmur";
+
# TODO(@bpeetz): Check which service opens these ports: <2025-01-28>
- "64738" = "???";
"4190" = "???";
+ "8112" = "???";
};
in ''
${mode} ${builtins.toString port}: ${
diff --git a/modules/by-name/ta/taskchampion-sync/module.nix b/modules/by-name/ta/taskchampion-sync/module.nix
index 1870186..a7cba30 100644
--- a/modules/by-name/ta/taskchampion-sync/module.nix
+++ b/modules/by-name/ta/taskchampion-sync/module.nix
@@ -8,27 +8,59 @@
in {
options.vhack.taskchampion-sync = {
enable = lib.mkEnableOption "taskchampion-sync";
+
+ fqdn = lib.mkOption {
+ description = "The fully qualified domain name of this instance.";
+ type = lib.types.str;
+ example = "task-sync.tw.online";
+ };
};
config = lib.mkIf cfg.enable {
users = {
- users.taskchampion.uid = config.vhack.constants.ids.uids.taskchampion;
+ users.taskchampion = {
+ uid = config.vhack.constants.ids.uids.taskchampion;
+ group = "taskchampion";
+ };
groups.taskchampion.gid = config.vhack.constants.ids.uids.taskchampion;
};
- vhack.persist.directories = [
- {
- directory = dataDirectory;
- user = "taskchampion";
- group = "taskchampion";
- mode = "0700";
- }
- ];
+ vhack = {
+ persist.directories = [
+ {
+ directory = dataDirectory;
+ user = "taskchampion";
+ group = "taskchampion";
+ mode = "0700";
+ }
+ ];
+ nginx.enable = true;
+ };
+
+ systemd.services.taskchampion-sync-server = {
+ serviceConfig = {
+ # The upstream service uses DynamicUsers, which currently poses issues to our
+ # directory persisting strategy.
+ User = "taskchampion";
+ Group = "taskchampion";
+ DynamicUser = lib.mkForce false;
+ };
+ };
+
+ services = {
+ taskchampion-sync-server = {
+ enable = true;
+ dataDir = dataDirectory;
+ };
- services.taskchampion-sync-server = {
- enable = true;
- openFirewall = true;
- dataDir = dataDirectory;
+ nginx.virtualHosts."${cfg.fqdn}" = {
+ locations."/" = {
+ proxyPass = "http://127.0.0.1:${toString config.services.taskchampion-sync-server.port}";
+ recommendedProxySettings = true;
+ };
+ enableACME = true;
+ forceSSL = true;
+ };
};
};
}
diff --git a/modules/by-name/us/users/module.nix b/modules/by-name/us/users/module.nix
index a197b13..6011204 100644
--- a/modules/by-name/us/users/module.nix
+++ b/modules/by-name/us/users/module.nix
@@ -27,20 +27,22 @@
};
};
- extraUsers = lib.listToAttrs (builtins.map mkUser [
- {
- name = "soispha";
- password = "$y$jFT$3.8XmUyukZvpExMUxDZkI.$IVrJgm8ysNDF/0vDD2kF6w73ozXgr1LMVRNN4Bq7pv1";
- sshKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIME4ZVa+IoZf6T3U08JG93i6QIAJ4amm7mkBzO14JSkz cardno:000F_18F83532";
- uid = 1000;
- }
- {
- name = "sils";
- password = "$y$jFT$KpFnahVCE9JbE.5P3us8o.$ZzSxCusWqe3sL7b6DLgOXNNUf114tiiptM6T8lDxtKC";
- sshKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAe4o1PM6VasT3KZNl5NYvgkkBrPOg36dqsywd10FztS openpgp:0x21D20D6A";
- uid = 1001;
- }
- ]);
+ extraUsers = lib.listToAttrs (
+ builtins.map mkUser [
+ {
+ name = "soispha";
+ password = "$y$jFT$3.8XmUyukZvpExMUxDZkI.$IVrJgm8ysNDF/0vDD2kF6w73ozXgr1LMVRNN4Bq7pv1";
+ sshKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIME4ZVa+IoZf6T3U08JG93i6QIAJ4amm7mkBzO14JSkz cardno:000F_18F83532";
+ uid = 1000;
+ }
+ {
+ name = "sils";
+ password = "$y$jFT$KpFnahVCE9JbE.5P3us8o.$ZzSxCusWqe3sL7b6DLgOXNNUf114tiiptM6T8lDxtKC";
+ sshKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILn7Oumr5IYtTTIKRFvDnofGXXiDLBQE9jVF+7UE+4G5 vhack.eu";
+ uid = 1001;
+ }
+ ]
+ );
in {
options.vhack.users = {
enable = lib.mkEnableOption "user setup";