From dfa7b33c07854fdddbda410fd036bb07ff735a26 Mon Sep 17 00:00:00 2001 From: yamabiiko Date: Fri, 2 Jul 2021 12:23:06 +0000 Subject: [PATCH 1/2] Update from master --- .gitattributes | 1 + README.md | 12 +- .../etc/httpd/conf.d/virtualhost-example.conf | 18 + apache/etc/httpd/conf/httpd-maintenance.conf | 7 + apache/etc/httpd/conf/httpd-no-signature.conf | 4 + .../etc/httpd/conf/httpd-server-status.conf | 8 + apache/var/www/maintenance/index.html | 20 ++ apache/var/www/maintenance/index.png | Bin 0 -> 56005 bytes emacs/spacemacs.conf | 327 ++++++++++++++++++ emacs/spacemacs.md | 28 ++ emacs/spacemacs.png | Bin 0 -> 93674 bytes iptables/iptables-http-full-f2b.fw | 22 ++ iptables/iptables-http-full.fw | 20 ++ iptables/iptables-ssh-only.fw | 14 + iptables/iptables.md | 16 + postgresql/etc/postgresql/pg_hba.conf | 99 ++++++ postgresql/etc/postgresql/postgresql.conf | 5 + .../etc/default/prometheus-apache-exporter | 1 + .../etc/default/prometheus-nginx-exporter | 1 + .../default/prometheus-postgresql-exporter | 2 + .../system/prometheus-apache-exporter.service | 15 + .../system/prometheus-mysqld-exporter.service | 15 + 22 files changed, 634 insertions(+), 1 deletion(-) create mode 100644 apache/etc/httpd/conf.d/virtualhost-example.conf create mode 100644 apache/etc/httpd/conf/httpd-maintenance.conf create mode 100644 apache/etc/httpd/conf/httpd-no-signature.conf create mode 100644 apache/etc/httpd/conf/httpd-server-status.conf create mode 100644 apache/var/www/maintenance/index.html create mode 100644 apache/var/www/maintenance/index.png create mode 100644 emacs/spacemacs.conf create mode 100644 emacs/spacemacs.md create mode 100644 emacs/spacemacs.png create mode 100644 iptables/iptables-http-full-f2b.fw create mode 100644 iptables/iptables-http-full.fw create mode 100644 iptables/iptables-ssh-only.fw create mode 100644 iptables/iptables.md create mode 100644 postgresql/etc/postgresql/pg_hba.conf create mode 100644 postgresql/etc/postgresql/postgresql.conf create mode 100644 prometheus/exporters/etc/default/prometheus-apache-exporter create mode 100644 prometheus/exporters/etc/default/prometheus-nginx-exporter create mode 100644 prometheus/exporters/etc/default/prometheus-postgresql-exporter create mode 100644 prometheus/exporters/etc/systemd/system/prometheus-apache-exporter.service create mode 100644 prometheus/exporters/etc/systemd/system/prometheus-mysqld-exporter.service diff --git a/.gitattributes b/.gitattributes index 171c31e..34e73c0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ neovim/*.conf gitlab-language=vim +emacs/*.conf gitlab-language=elisp diff --git a/README.md b/README.md index f899c6c..6e6c127 100644 --- a/README.md +++ b/README.md @@ -23,5 +23,15 @@ edit the .gitattributes file accordingly: ```txt neovim/*.conf gitlab-language=vim -spacemacs/*.conf gitlab-language=elisp +emacs/*.conf gitlab-language=elisp ``` + +## Support + +Donate using Liberapay + +--- + +> [unitoo.it](https://www.unitoo.it)  ·  +> Mastodon [@unitoo](https://mastodon.uno/@unitoo)  ·  +> GitHub [@UnitooTeam](https://github.com/UnitooTeam) diff --git a/apache/etc/httpd/conf.d/virtualhost-example.conf b/apache/etc/httpd/conf.d/virtualhost-example.conf new file mode 100644 index 0000000..e08d0f4 --- /dev/null +++ b/apache/etc/httpd/conf.d/virtualhost-example.conf @@ -0,0 +1,18 @@ + + # YOUR CONFIG + + # Redirect all request to a 503 return code when in maintenance mode + ErrorDocument 503 /maintenance/index.html + RewriteEngine on + RewriteCond /var/www/maintenance/ALL -f [OR] + RewriteCond /var/www/maintenance/%{SERVER_NAME} -f + RewriteCond %{REQUEST_URI} !=/maintenance/index.html + RewriteCond %{REQUEST_URI} !=/maintenance/index.png + RewriteRule ^ - [R=503,L] + + # Redirect away from the maintenance page if not in maintenance mode + RewriteCond /var/www/maintenance/ALL !-f + RewriteCond /var/www/maintenance/%{SERVER_NAME} !-f + RewriteRule ^/maintenance/index.html$ / [R,L] + + diff --git a/apache/etc/httpd/conf/httpd-maintenance.conf b/apache/etc/httpd/conf/httpd-maintenance.conf new file mode 100644 index 0000000..d3fbced --- /dev/null +++ b/apache/etc/httpd/conf/httpd-maintenance.conf @@ -0,0 +1,7 @@ +## YOUR CONFIG HERE + + + ## OTHER CONFIG HERE + + Alias "/maintenance" "/var/www/maintenance" + diff --git a/apache/etc/httpd/conf/httpd-no-signature.conf b/apache/etc/httpd/conf/httpd-no-signature.conf new file mode 100644 index 0000000..09cafd0 --- /dev/null +++ b/apache/etc/httpd/conf/httpd-no-signature.conf @@ -0,0 +1,4 @@ +## MAIN CONFIG HERE + +ServerTokens Prod +ServerSignature Off diff --git a/apache/etc/httpd/conf/httpd-server-status.conf b/apache/etc/httpd/conf/httpd-server-status.conf new file mode 100644 index 0000000..8a8a49d --- /dev/null +++ b/apache/etc/httpd/conf/httpd-server-status.conf @@ -0,0 +1,8 @@ +## MAIN CONFIG HERE + + + SetHandler server-status + Order deny,allow + Deny from all + Allow from 127.0.0.1 + diff --git a/apache/var/www/maintenance/index.html b/apache/var/www/maintenance/index.html new file mode 100644 index 0000000..16fe47f --- /dev/null +++ b/apache/var/www/maintenance/index.html @@ -0,0 +1,20 @@ + +Site Maintenance + + +
+ +

We’ll be back soon!

+
+

We’re performing some hacks at the moment. +
You can always contact us!

+

— Your best friend 😎

+
+
diff --git a/apache/var/www/maintenance/index.png b/apache/var/www/maintenance/index.png new file mode 100644 index 0000000000000000000000000000000000000000..c99efd2452dcb34e0da5eac52c06ecaaa63896cc GIT binary patch literal 56005 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 QZUB6=)%B4jYBrev0sC))3jhEB literal 0 HcmV?d00001 diff --git a/emacs/spacemacs.conf b/emacs/spacemacs.conf new file mode 100644 index 0000000..8e6cc74 --- /dev/null +++ b/emacs/spacemacs.conf @@ -0,0 +1,327 @@ +;; -*- mode: emacs-lisp -*- +;; This file is loaded by Spacemacs at startup. +;; It must be stored in your home directory. + +(defun dotspacemacs/layers () + "Configuration Layers declaration. +You should not put any user code in this function besides modifying the variable +values." + (setq-default + ;; Base distribution to use. This is a layer contained in the directory + ;; `+distribution'. For now available distributions are `spacemacs-base' + ;; or `spacemacs'. (default 'spacemacs) + dotspacemacs-distribution 'spacemacs + ;; Lazy installation of layers (i.e. layers are installed only when a file + ;; with a supported type is opened). Possible values are `all', `unused' + ;; and `nil'. `unused' will lazy install only unused layers (i.e. layers + ;; not listed in variable `dotspacemacs-configuration-layers'), `all' will + ;; lazy install any layer that support lazy installation even the layers + ;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy + ;; installation feature and you have to explicitly list a layer in the + ;; variable `dotspacemacs-configuration-layers' to install it. + ;; (default 'unused) + dotspacemacs-enable-lazy-installation 'unused + ;; If non-nil then Spacemacs will ask for confirmation before installing + ;; a layer lazily. (default t) + dotspacemacs-ask-for-lazy-installation t + ;; If non-nil layers with lazy install support are lazy installed. + ;; List of additional paths where to look for configuration layers. + ;; Paths must have a trailing slash (i.e. `~/.mycontribs/') + dotspacemacs-configuration-layer-path '() + ;; List of configuration layers to load. + dotspacemacs-configuration-layers + '(systemd + ;; ---------------------------------------------------------------- + ;; Example of useful layers you may want to use right away. + ;; Uncomment some layer names and press (Vim style) or + ;; (Emacs style) to install them. + ;; ---------------------------------------------------------------- + (ruby :variables ruby-version-manager 'rbenv ruby-enable-enh-ruby-mode t) + yaml + html + javascript + coffeescript + markdown + sql + ruby-on-rails + helm + (colors :variables colors-enable-nyan-cat-progress-bar t) + better-defaults + emacs-lisp + syntax-checking + semantic + shell + php + ) + ;; List of additional packages that will be installed without being + ;; wrapped in a layer. If you need some configuration for these + ;; packages, then consider creating a layer. You can also put the + ;; configuration in `dotspacemacs/user-config'. + dotspacemacs-additional-packages '(xclip base16-theme) + ;; A list of packages that cannot be updated. + dotspacemacs-frozen-packages '() + ;; A list of packages that will not be installed and loaded. + dotspacemacs-excluded-packages '() + ;; Defines the behaviour of Spacemacs when installing packages. + ;; Possible values are `used-only', `used-but-keep-unused' and `all'. + ;; `used-only' installs only explicitly used packages and uninstall any + ;; unused packages as well as their unused dependencies. + ;; `used-but-keep-unused' installs only the used packages but won't uninstall + ;; them if they become unused. `all' installs *all* packages supported by + ;; Spacemacs and never uninstall them. (default is `used-only') + dotspacemacs-install-packages 'used-only)) + +(defun dotspacemacs/init () + "Initialization function. +This function is called at the very startup of Spacemacs initialization +before layers configuration. +You should not put any user code in there besides modifying the variable +values." + ;; This setq-default sexp is an exhaustive list of all the supported + ;; spacemacs settings. + (setq-default + ;; If non nil ELPA repositories are contacted via HTTPS whenever it's + ;; possible. Set it to nil if you have no way to use HTTPS in your + ;; environment, otherwise it is strongly recommended to let it set to t. + ;; This variable has no effect if Emacs is launched with the parameter + ;; `--insecure' which forces the value of this variable to nil. + ;; (default t) + dotspacemacs-elpa-https t + ;; Maximum allowed time in seconds to contact an ELPA repository. + dotspacemacs-elpa-timeout 5 + ;; If non nil then spacemacs will check for updates at startup + ;; when the current branch is not `develop'. Note that checking for + ;; new versions works via git commands, thus it calls GitHub services + ;; whenever you start Emacs. (default nil) + dotspacemacs-check-for-update nil + ;; If non-nil, a form that evaluates to a package directory. For example, to + ;; use different package directories for different Emacs versions, set this + ;; to `emacs-version'. + dotspacemacs-elpa-subdirectory nil + ;; One of `vim', `emacs' or `hybrid'. + ;; `hybrid' is like `vim' except that `insert state' is replaced by the + ;; `hybrid state' with `emacs' key bindings. The value can also be a list + ;; with `:variables' keyword (similar to layers). Check the editing styles + ;; section of the documentation for details on available variables. + ;; (default 'vim) + dotspacemacs-editing-style 'vim + ;; If non nil output loading progress in `*Messages*' buffer. (default nil) + dotspacemacs-verbose-loading nil + ;; Specify the startup banner. Default value is `official', it displays + ;; the official spacemacs logo. An integer value is the index of text + ;; banner, `random' chooses a random text banner in `core/banners' + ;; directory. A string value must be a path to an image format supported + ;; by your Emacs build. + ;; If the value is nil then no banner is displayed. (default 'official) + dotspacemacs-startup-banner nil + ;; List of items to show in startup buffer or an association list of + ;; the form `(list-type . list-size)`. If nil then it is disabled. + ;; Possible values for list-type are: + ;; `recents' `bookmarks' `projects' `agenda' `todos'." + ;; List sizes may be nil, in which case + ;; `spacemacs-buffer-startup-lists-length' takes effect. + dotspacemacs-startup-lists '((bookmarks . 5) + (recents . 5) + (projects . 7)) + ;; True if the home buffer should respond to resize events. + dotspacemacs-startup-buffer-responsive t + ;; Default major mode of the scratch buffer (default `text-mode') + dotspacemacs-scratch-mode 'text-mode + ;; List of themes, the first of the list is loaded when spacemacs starts. + ;; Press T n to cycle to the next theme in the list (works great + ;; with 2 themes variants, one dark and one light) + dotspacemacs-themes '(base16-one-light + spacemacs-light + spacemacs-dark) + dotspacemacs-colorize-cursor-according-to-state t + ;; Default font, or prioritized list of fonts. `powerline-scale' allows to + ;; quickly tweak the mode-line size to make separators look not too crappy. + dotspacemacs-default-font '("Anonymous Pro for Powerline" + :size 18 + :powerline-scale 1.4) + ;; The leader key + dotspacemacs-leader-key "SPC" + ;; The key used for Emacs commands (M-x) (after pressing on the leader key). + ;; (default "SPC") + dotspacemacs-emacs-command-key "SPC" + ;; The key used for Vim Ex commands (default ":") + dotspacemacs-ex-command-key ":" + ;; The leader key accessible in `emacs state' and `insert state' + ;; (default "M-m") + dotspacemacs-emacs-leader-key "M-m" + ;; Major mode leader key is a shortcut key which is the equivalent of + ;; pressing ` m`. Set it to `nil` to disable it. (default ",") + dotspacemacs-major-mode-leader-key "," + ;; Major mode leader key accessible in `emacs state' and `insert state'. + ;; (default "C-M-m") + dotspacemacs-major-mode-emacs-leader-key "C-M-m" + ;; These variables control whether separate commands are bound in the GUI to + ;; the key pairs C-i, TAB and C-m, RET. + ;; Setting it to a non-nil value, allows for separate commands under + ;; and TAB or and RET. + ;; In the terminal, these pairs are generally indistinguishable, so this only + ;; works in the GUI. (default nil) + dotspacemacs-distinguish-gui-tab nil + ;; If non nil `Y' is remapped to `y$' in Evil states. (default nil) + dotspacemacs-remap-Y-to-y$ nil + ;; If non-nil, the shift mappings `<' and `>' retain visual state if used + ;; there. (default t) + dotspacemacs-retain-visual-state-on-shift t + ;; If non-nil, J and K move lines up and down when in visual mode. + ;; (default nil) + dotspacemacs-visual-line-move-text nil + ;; If non nil, inverse the meaning of `g' in `:substitute' Evil ex-command. + ;; (default nil) + dotspacemacs-ex-substitute-global nil + ;; Name of the default layout (default "Default") + dotspacemacs-default-layout-name "Default" + ;; If non nil the default layout name is displayed in the mode-line. + ;; (default nil) + dotspacemacs-display-default-layout nil + ;; If non nil then the last auto saved layouts are resume automatically upon + ;; start. (default nil) + dotspacemacs-auto-resume-layouts nil + ;; Size (in MB) above which spacemacs will prompt to open the large file + ;; literally to avoid performance issues. Opening a file literally means that + ;; no major mode or minor modes are active. (default is 1) + dotspacemacs-large-file-size 1 + ;; Location where to auto-save files. Possible values are `original' to + ;; auto-save the file in-place, `cache' to auto-save the file to another + ;; file stored in the cache directory and `nil' to disable auto-saving. + ;; (default 'cache) + dotspacemacs-auto-save-file-location 'cache + ;; Maximum number of rollback slots to keep in the cache. (default 5) + dotspacemacs-max-rollback-slots 5 + ;; If non nil, `helm' will try to minimize the space it uses. (default nil) + dotspacemacs-helm-resize nil + ;; if non nil, the helm header is hidden when there is only one source. + ;; (default nil) + dotspacemacs-helm-no-header nil + ;; define the position to display `helm', options are `bottom', `top', + ;; `left', or `right'. (default 'bottom) + dotspacemacs-helm-position 'bottom + ;; Controls fuzzy matching in helm. If set to `always', force fuzzy matching + ;; in all non-asynchronous sources. If set to `source', preserve individual + ;; source settings. Else, disable fuzzy matching in all sources. + ;; (default 'always) + dotspacemacs-helm-use-fuzzy 'always + ;; If non nil the paste micro-state is enabled. When enabled pressing `p` + ;; several times cycle between the kill ring content. (default nil) + dotspacemacs-enable-paste-transient-state nil + ;; Which-key delay in seconds. The which-key buffer is the popup listing + ;; the commands bound to the current keystroke sequence. (default 0.4) + dotspacemacs-which-key-delay 0.4 + ;; Which-key frame position. Possible values are `right', `bottom' and + ;; `right-then-bottom'. right-then-bottom tries to display the frame to the + ;; right; if there is insufficient space it displays it at the bottom. + ;; (default 'bottom) + dotspacemacs-which-key-position 'bottom + ;; If non nil a progress bar is displayed when spacemacs is loading. This + ;; may increase the boot time on some systems and emacs builds, set it to + ;; nil to boost the loading time. (default t) + dotspacemacs-loading-progress-bar nil + ;; If non nil the frame is fullscreen when Emacs starts up. (default nil) + ;; (Emacs 24.4+ only) + dotspacemacs-fullscreen-at-startup nil + ;; If non nil `spacemacs/toggle-fullscreen' will not use native fullscreen. + ;; Use to disable fullscreen animations in OSX. (default nil) + dotspacemacs-fullscreen-use-non-native nil + ;; If non nil the frame is maximized when Emacs starts up. + ;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil. + ;; (default nil) (Emacs 24.4+ only) + dotspacemacs-maximized-at-startup t + ;; A value from the range (0..100), in increasing opacity, which describes + ;; the transparency level of a frame when it's active or selected. + ;; Transparency can be toggled through `toggle-transparency'. (default 90) + dotspacemacs-active-transparency 90 + ;; A value from the range (0..100), in increasing opacity, which describes + ;; the transparency level of a frame when it's inactive or deselected. + ;; Transparency can be toggled through `toggle-transparency'. (default 90) + dotspacemacs-inactive-transparency 90 + ;; If non nil show the titles of transient states. (default t) + dotspacemacs-show-transient-state-title t + ;; If non nil show the color guide hint for transient state keys. (default t) + dotspacemacs-show-transient-state-color-guide t + ;; If non nil unicode symbols are displayed in the mode line. (default t) + dotspacemacs-mode-line-unicode-symbols t + ;; If non nil smooth scrolling (native-scrolling) is enabled. Smooth + ;; scrolling overrides the default behavior of Emacs which recenters point + ;; when it reaches the top or bottom of the screen. (default t) + dotspacemacs-smooth-scrolling t + ;; Control line numbers activation. + ;; If set to `t' or `relative' line numbers are turned on in all `prog-mode' and + ;; `text-mode' derivatives. If set to `relative', line numbers are relative. + ;; This variable can also be set to a property list for finer control: + ;; '(:relative nil + ;; :disabled-for-modes dired-mode + ;; doc-view-mode + ;; markdown-mode + ;; org-mode + ;; pdf-view-mode + ;; text-mode + ;; :size-limit-kb 1000) + ;; (default nil) + dotspacemacs-line-numbers t + ;; Code folding method. Possible values are `evil' and `origami'. + ;; (default 'evil) + dotspacemacs-folding-method 'evil + ;; If non-nil smartparens-strict-mode will be enabled in programming modes. + ;; (default nil) + dotspacemacs-smartparens-strict-mode nil + ;; If non-nil pressing the closing parenthesis `)' key in insert mode passes + ;; over any automatically added closing parenthesis, bracket, quote, etc… + ;; This can be temporary disabled by pressing `C-q' before `)'. (default nil) + dotspacemacs-smart-closing-parenthesis nil + ;; Select a scope to highlight delimiters. Possible values are `any', + ;; `current', `all' or `nil'. Default is `all' (highlight any scope and + ;; emphasis the current one). (default 'all) + dotspacemacs-highlight-delimiters 'all + ;; If non nil, advise quit functions to keep server open when quitting. + ;; (default nil) + dotspacemacs-persistent-server nil + ;; List of search tool executable names. Spacemacs uses the first installed + ;; tool of the list. Supported tools are `ag', `pt', `ack' and `grep'. + ;; (default '("ag" "pt" "ack" "grep")) + dotspacemacs-search-tools '("ag" "pt" "ack" "grep") + ;; The default package repository used if no explicit repository has been + ;; specified with an installed package. + ;; Not used for now. (default nil) + dotspacemacs-default-package-repository nil + ;; Delete whitespace while saving buffer. Possible values are `all' + ;; to aggressively delete empty line and long sequences of whitespace, + ;; `trailing' to delete only the whitespace at end of lines, `changed'to + ;; delete only whitespace for changed lines or `nil' to disable cleanup. + ;; (default nil) + dotspacemacs-whitespace-cleanup nil + )) + +(defun dotspacemacs/user-init () + "Initialization function for user code. +It is called immediately after `dotspacemacs/init', before layer configuration +executes. + This function is mostly useful for variables that need to be set +before packages are loaded. If you are unsure, you should try in setting them in +`dotspacemacs/user-config' first." + ) + +(defun dotspacemacs/user-config () + "Configuration function for user code. +This function is called at the very end of Spacemacs initialization after +layers configuration. +This is the place where most of your configurations should be done. Unless it is +explicitly specified that a variable should be set before a package is loaded, +you should place your code here." + (add-hook 'before-save-hook 'delete-trailing-whitespace) + + ;; Activate column indicator in prog-mode and text-mode + ;; (add-hook 'prog-mode-hook 'turn-on-fci-mode) + ;; (add-hook 'text-mode-hook 'turn-on-fci-mode) + + (setq enh-ruby-add-encoding-comment-on-save nil) + (setq powerline-default-separator 'arrow) + (cancel-timer recentf-auto-save-timer) + (xclip-mode 1) + ) + +;; Do not write anything past this comment. This is where Emacs will +;; auto-generate custom variable definitions. diff --git a/emacs/spacemacs.md b/emacs/spacemacs.md new file mode 100644 index 0000000..bd86889 --- /dev/null +++ b/emacs/spacemacs.md @@ -0,0 +1,28 @@ +# Spacemacs configuration + +![spacemacs example](spacemacs.png "Emacs with this Spacemacs configuration") + +# Quick setup + +1. Copy the `spacemacs.conf` file in your $HOME directory and rename as `.spacemacs` +2. Adapt the file for your needs +3. Install dependecies, for each layer in `dotspacemacs-configuration-layers` function following respective documentation, starting here: [spacemacs layers](https://github.com/syl20bnr/spacemacs/tree/develop/layers) +4. Install your font; in this conf we are using "Anonymous Pro for Powerline" +5. Execute this: +```bash +git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d +``` + + +## Extra features + +* https Elpa enabled +* Base16 Light Theme +* xclip is working +* arrow as powerline separator +* automatic trailing whitespaces deletion + + +## Power features + +* Nyan cat scroll bar diff --git a/emacs/spacemacs.png b/emacs/spacemacs.png new file mode 100644 index 0000000000000000000000000000000000000000..6af81ac24c86f620c479b50b65e5a759e9bfe0d4 GIT binary patch literal 93674 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

7Ur~;CpASRE{<*-V+MgeaoBjl5f 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

tx~?Q(wev!quYIF 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

gfT0+XA8- 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 AYybcN literal 0 HcmV?d00001 diff --git a/iptables/iptables-http-full-f2b.fw b/iptables/iptables-http-full-f2b.fw new file mode 100644 index 0000000..45db85a --- /dev/null +++ b/iptables/iptables-http-full-f2b.fw @@ -0,0 +1,22 @@ +*filter +:INPUT DROP [4414218:211789180] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [17973:1146056] +:f2b-sshd - [0:0] +-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd +-A INPUT -i lo -j ACCEPT +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A INPUT -m conntrack --ctstate INVALID -j DROP +-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A INPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A INPUT -p tcp -m tcp --dport 587 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A OUTPUT -o lo -j ACCEPT +-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable +-A OUTPUT -p tcp -m tcp --sport 587 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A f2b-sshd -j RETURN +COMMIT diff --git a/iptables/iptables-http-full.fw b/iptables/iptables-http-full.fw new file mode 100644 index 0000000..6b2a30b --- /dev/null +++ b/iptables/iptables-http-full.fw @@ -0,0 +1,20 @@ +*filter +:INPUT DROP [4414218:211789180] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [17973:1146056] +-A INPUT -i lo -j ACCEPT +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A INPUT -m conntrack --ctstate INVALID -j DROP +-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A INPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A INPUT -p tcp -m tcp --dport 587 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A OUTPUT -o lo -j ACCEPT +-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable +-A OUTPUT -p tcp -m tcp --sport 587 -m conntrack --ctstate ESTABLISHED -j ACCEPT +COMMIT + diff --git a/iptables/iptables-ssh-only.fw b/iptables/iptables-ssh-only.fw new file mode 100644 index 0000000..42ec8dc --- /dev/null +++ b/iptables/iptables-ssh-only.fw @@ -0,0 +1,14 @@ +*filter +:INPUT DROP [4414218:211789180] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [17973:1146056] +-A INPUT -i lo -j ACCEPT +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A INPUT -m conntrack --ctstate INVALID -j DROP +-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT +-A OUTPUT -o lo -j ACCEPT +-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT +-A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable +COMMIT + diff --git a/iptables/iptables.md b/iptables/iptables.md new file mode 100644 index 0000000..85a508f --- /dev/null +++ b/iptables/iptables.md @@ -0,0 +1,16 @@ +# Configurations +All configurations includes: +* INPUT DROP +* SSH port on 22. +* SMTP port 25 as `--reject-with icmp-port-unreachable` + +- [ssh-only](iptables-ssh-only.fw) -> SSH +- [http-full](iptables-http-full.fw) -> HTTP/ HTTPS/ SMTPS +- [http-full-f2b](iptables-http-full-f2b.fw) -> HTTP/ HTTPS/ SMTPS/ fail2ban + +## Usage + +Simply: +```bash +iptables-restore < file.fw +``` diff --git a/postgresql/etc/postgresql/pg_hba.conf b/postgresql/etc/postgresql/pg_hba.conf new file mode 100644 index 0000000..6254116 --- /dev/null +++ b/postgresql/etc/postgresql/pg_hba.conf @@ -0,0 +1,99 @@ +# PostgreSQL Client Authentication Configuration File +# =================================================== +# +# Refer to the "Client Authentication" section in the PostgreSQL +# documentation for a complete description of this file. A short +# synopsis follows. +# +# This file controls: which hosts are allowed to connect, how clients +# are authenticated, which PostgreSQL user names they can use, which +# databases they can access. Records take one of these forms: +# +# local DATABASE USER METHOD [OPTIONS] +# host DATABASE USER ADDRESS METHOD [OPTIONS] +# hostssl DATABASE USER ADDRESS METHOD [OPTIONS] +# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS] +# +# (The uppercase items must be replaced by actual values.) +# +# The first field is the connection type: "local" is a Unix-domain +# socket, "host" is either a plain or SSL-encrypted TCP/IP socket, +# "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a +# plain TCP/IP socket. +# +# DATABASE can be "all", "sameuser", "samerole", "replication", a +# database name, or a comma-separated list thereof. The "all" +# keyword does not match "replication". Access to replication +# must be enabled in a separate record (see example below). +# +# USER can be "all", a user name, a group name prefixed with "+", or a +# comma-separated list thereof. In both the DATABASE and USER fields +# you can also write a file name prefixed with "@" to include names +# from a separate file. +# +# ADDRESS specifies the set of hosts the record matches. It can be a +# host name, or it is made up of an IP address and a CIDR mask that is +# an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that +# specifies the number of significant bits in the mask. A host name +# that starts with a dot (.) matches a suffix of the actual host name. +# Alternatively, you can write an IP address and netmask in separate +# columns to specify the set of hosts. Instead of a CIDR-address, you +# can write "samehost" to match any of the server's own IP addresses, +# or "samenet" to match any address in any subnet that the server is +# directly connected to. +# +# METHOD can be "trust", "reject", "md5", "password", "scram-sha-256", +# "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert". +# Note that "password" sends passwords in clear text; "md5" or +# "scram-sha-256" are preferred since they send encrypted passwords. +# +# OPTIONS are a set of options for the authentication in the format +# NAME=VALUE. The available options depend on the different +# authentication methods -- refer to the "Client Authentication" +# section in the documentation for a list of which options are +# available for which authentication methods. +# +# Database and user names containing spaces, commas, quotes and other +# special characters must be quoted. Quoting one of the keywords +# "all", "sameuser", "samerole" or "replication" makes the name lose +# its special character, and just match a database or username with +# that name. +# +# This file is read on server startup and when the server receives a +# SIGHUP signal. If you edit the file on a running system, you have to +# SIGHUP the server for the changes to take effect, run "pg_ctl reload", +# or execute "SELECT pg_reload_conf()". +# +# Put your actual configuration here +# ---------------------------------- +# +# If you want to allow non-local connections, you need to add more +# "host" records. In that case you will also need to make PostgreSQL +# listen on a non-local interface via the listen_addresses +# configuration parameter, or via the -i or -h command line switches. + + + + +# DO NOT DISABLE! +# If you change this first entry you will need to make sure that the +# database superuser can access the database using some other method. +# Noninteractive access to all databases is required during automatic +# maintenance (custom daily cronjobs, replication, and similar tasks). +# +# Database administrative login by Unix domain socket +local all postgres peer + +# TYPE DATABASE USER ADDRESS METHOD + +# "local" is for Unix domain socket connections only +local all all scram-sha-256 +# IPv4 local connections: +host all all 127.0.0.1/32 scram-sha-256 +# IPv6 local connections: +host all all ::1/128 scram-sha-256 +# Allow replication connections from localhost, by a user with the +# replication privilege. +local replication all peer +host replication all 127.0.0.1/32 scram-sha-256 +host replication all ::1/128 scram-sha-256 diff --git a/postgresql/etc/postgresql/postgresql.conf b/postgresql/etc/postgresql/postgresql.conf new file mode 100644 index 0000000..e9efbc1 --- /dev/null +++ b/postgresql/etc/postgresql/postgresql.conf @@ -0,0 +1,5 @@ +## OTHER CONFIG + +password_encryption = scram-sha-256 + +## END CONFIG diff --git a/prometheus/exporters/etc/default/prometheus-apache-exporter b/prometheus/exporters/etc/default/prometheus-apache-exporter new file mode 100644 index 0000000..a8e2ad2 --- /dev/null +++ b/prometheus/exporters/etc/default/prometheus-apache-exporter @@ -0,0 +1 @@ +ARGS='--scrape_uri="http://127.0.0.1/server-status?auto"' diff --git a/prometheus/exporters/etc/default/prometheus-nginx-exporter b/prometheus/exporters/etc/default/prometheus-nginx-exporter new file mode 100644 index 0000000..3068016 --- /dev/null +++ b/prometheus/exporters/etc/default/prometheus-nginx-exporter @@ -0,0 +1 @@ +ARGS="-nginx.scrape-uri http://127.0.0.1:80/stub_status" diff --git a/prometheus/exporters/etc/default/prometheus-postgresql-exporter b/prometheus/exporters/etc/default/prometheus-postgresql-exporter new file mode 100644 index 0000000..afb72f4 --- /dev/null +++ b/prometheus/exporters/etc/default/prometheus-postgresql-exporter @@ -0,0 +1,2 @@ +# peer mode +DATA_SOURCE_NAME='host=/var/run/postgresql sslmode=disable' diff --git a/prometheus/exporters/etc/systemd/system/prometheus-apache-exporter.service b/prometheus/exporters/etc/systemd/system/prometheus-apache-exporter.service new file mode 100644 index 0000000..fbf05b1 --- /dev/null +++ b/prometheus/exporters/etc/systemd/system/prometheus-apache-exporter.service @@ -0,0 +1,15 @@ +[Unit] +Description=Prometheus exporter for Apache +Documentation=https://github.com/Lusitaniae/apache_exporter +Wants=network-online.target +After=network-online.target + +[Service] +User=root +Group=root +Type=simple +EnvironmentFile=/etc/default/prometheus-apache-exporter +ExecStart=/usr/bin/apache_exporter $ARGS + +[Install] +WantedBy=multi-user.target diff --git a/prometheus/exporters/etc/systemd/system/prometheus-mysqld-exporter.service b/prometheus/exporters/etc/systemd/system/prometheus-mysqld-exporter.service new file mode 100644 index 0000000..0b9436c --- /dev/null +++ b/prometheus/exporters/etc/systemd/system/prometheus-mysqld-exporter.service @@ -0,0 +1,15 @@ +[Unit] +Description=Prometheus exporter for MariaDB +Documentation=https://github.com/prometheus/mysqld_exporter +Wants=network-online.target +After=network-online.target + +[Service] +User=root +Group=root +Type=simple +EnvironmentFile=/etc/default/prometheus-mariadb-exporter +ExecStart=/usr/bin/mysqld_exporter $ARGS + +[Install] +WantedBy=multi-user.target From 06c594aed85cae993b66585f4808173b9f22a10b Mon Sep 17 00:00:00 2001 From: Lorenzo Tucci Date: Fri, 2 Jul 2021 14:30:51 +0200 Subject: [PATCH 2/2] adding grafana dashboards --- grafana/dashboards/apache.json | 785 ++ grafana/dashboards/cadvisor-docker.json | 2337 ++++ grafana/dashboards/mariadb.json | 1201 ++ grafana/dashboards/nginx.json | 488 + grafana/dashboards/postgresql.json | 1917 +++ grafana/dashboards/system-info-node.json | 13881 +++++++++++++++++++++ 6 files changed, 20609 insertions(+) create mode 100644 grafana/dashboards/apache.json create mode 100644 grafana/dashboards/cadvisor-docker.json create mode 100644 grafana/dashboards/mariadb.json create mode 100644 grafana/dashboards/nginx.json create mode 100644 grafana/dashboards/postgresql.json create mode 100644 grafana/dashboards/system-info-node.json diff --git a/grafana/dashboards/apache.json b/grafana/dashboards/apache.json new file mode 100644 index 0000000..68a3024 --- /dev/null +++ b/grafana/dashboards/apache.json @@ -0,0 +1,785 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": 3894, + "graphTooltip": 0, + "id": 7, + "iteration": 1625228816036, + "links": [], + "panels": [ + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 0 + }, + "id": 8, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "apache_uptime_seconds_total{instance=~\"$host:$port\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "", + "refId": "A", + "step": 240 + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 0, + "fill": 7, + "fillGradient": 0, + "gridPos": { + "h": 4, + "w": 20, + "x": 4, + "y": 0 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 3, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Apache Down", + "color": "#BF1B00" + }, + { + "alias": "Apache Down", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "count(apache_up{instance=~\"$host:$port\"} == 1)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Apache Up", + "refId": "A", + "step": 240 + }, + { + "expr": "scalar(count(apache_up{instance=~\"$host:$port\"} == 0))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Apache Down", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Apache Up / Down", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": "1", + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 4 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(apache_sent_kilobytes_total{instance=~\"$host:$port\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Kilobytes Sent", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Current total kbytes sent", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "deckbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 4 + }, + "hiddenSeries": false, + "id": 1, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(apache_accesses_total{instance=~\"$host:$port\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Accesses", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Current total apache accesses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "apache_scoreboard{instance=~\"$host:$port\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ state }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Apache scoreboard statuses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "apache_workers{instance=~\"$host:$port\"}\n", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ state }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Apache worker statuses", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "apache_cpuload{instance=~\"$host:$port\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Load", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Apache CPU load", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "1m", + "schemaVersion": 30, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "selected": false, + "text": "nextcloud", + "value": "nextcloud" + }, + "datasource": "Prometheus", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "host", + "multi": false, + "name": "host", + "options": [], + "query": { + "query": "label_values(apache_up, instance)", + "refId": "Prometheus-host-Variable-Query" + }, + "refresh": 2, + "regex": "/([^:]+):.*/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "9117", + "value": "9117" + }, + "datasource": "Prometheus", + "definition": "label_values(apache_up, instance)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "port", + "options": [], + "query": { + "query": "label_values(apache_up, instance)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/[^:]+:(.*)/", + "skipUrlSync": false, + "sort": 2, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Apache", + "uid": "8r4vPMk7k", + "version": 7 +} diff --git a/grafana/dashboards/cadvisor-docker.json b/grafana/dashboards/cadvisor-docker.json new file mode 100644 index 0000000..3b524cb --- /dev/null +++ b/grafana/dashboards/cadvisor-docker.json @@ -0,0 +1,2337 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "A simple overview of the most important Docker host and container metrics. (cAdvisor/Prometheus)", + "editable": true, + "gnetId": 893, + "graphTooltip": 1, + "id": 11, + "iteration": 1625228861990, + "links": [], + "panels": [ + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 0 + }, + "id": 24, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "time() - node_boot_time{instance=~\"$server:.*\"}", + "hide": false, + "intervalFactor": 2, + "legendFormat": "", + "refId": "A", + "step": 1800 + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 4, + "y": 0 + }, + "id": 31, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "count(rate(container_last_seen{name=~\".+\"}[$interval]))", + "intervalFactor": 2, + "refId": "A", + "step": 1800 + } + ], + "title": "Containers", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.75 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 8, + "y": 0 + }, + "id": 26, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "min((node_filesystem_size{fstype=~\"xfs|ext4\",instance=~\"$server:.*\"} - node_filesystem_free{fstype=~\"xfs|ext4\",instance=~\"$server:.*\"} )/ node_filesystem_size{fstype=~\"xfs|ext4\",instance=~\"$server:.*\"})", + "hide": false, + "intervalFactor": 2, + "refId": "A", + "step": 1800 + } + ], + "title": "Disk space", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 70 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 12, + "y": 0 + }, + "id": 25, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "((node_memory_MemTotal{instance=~\"$server:.*\"} - node_memory_MemAvailable{instance=~\"$server:.*\"}) / node_memory_MemTotal{instance=~\"$server:.*\"}) * 100", + "intervalFactor": 2, + "refId": "A", + "step": 1800 + } + ], + "title": "Memory", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 500000000, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 400000000 + }, + { + "color": "rgba(245, 54, 54, 0.9)" + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 16, + "y": 0 + }, + "id": 30, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "(node_memory_SwapTotal{instance=~'$server:.*'} - node_memory_SwapFree{instance=~'$server:.*'})", + "intervalFactor": 2, + "legendFormat": "", + "refId": "A", + "step": 1800 + } + ], + "title": "Swap", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "rgb(69, 193, 31)", + "mode": "fixed" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 0.8 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 0.9 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 20, + "y": 0 + }, + "id": 27, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "node_load1{instance=~\"$server:.*\"} / count by(job, instance)(count by(job, instance, cpu)(node_cpu{instance=~\"$server:.*\"}))", + "intervalFactor": 2, + "refId": "A", + "step": 1800 + } + ], + "title": "Load", + "type": "stat" + }, + { + "aliasColors": { + "SENT": "#BF1B00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 6, + "w": 4, + "x": 0, + "y": 4 + }, + "hiddenSeries": false, + "id": 19, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_network_receive_bytes_total{id=\"/\"}[$interval])) by (id)", + "intervalFactor": 2, + "legendFormat": "RECEIVED", + "refId": "A", + "step": 600 + }, + { + "expr": "- sum(rate(container_network_transmit_bytes_total{id=\"/\"}[$interval])) by (id)", + "hide": false, + "intervalFactor": 2, + "legendFormat": "SENT", + "refId": "B", + "step": 600 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "{id=\"/\",instance=\"cadvisor:8080\",job=\"prometheus\"}": "#BA43A9" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 6, + "w": 4, + "x": 4, + "y": 4 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_system_seconds_total[1m]))", + "hide": true, + "intervalFactor": 2, + "legendFormat": "a", + "refId": "B", + "step": 120 + }, + { + "expr": "sum(rate(container_cpu_system_seconds_total{name=~\".+\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "nur container", + "refId": "F", + "step": 10 + }, + { + "expr": "sum(rate(container_cpu_system_seconds_total{id=\"/\"}[1m]))", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "nur docker host", + "metric": "", + "refId": "A", + "step": 20 + }, + { + "expr": "sum(rate(process_cpu_seconds_total[$interval])) * 100", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "host", + "metric": "", + "refId": "C", + "step": 600 + }, + { + "expr": "sum(rate(container_cpu_system_seconds_total{name=~\".+\"}[1m])) + sum(rate(container_cpu_system_seconds_total{id=\"/\"}[1m])) + sum(rate(process_cpu_seconds_total[1m]))", + "hide": true, + "intervalFactor": 2, + "legendFormat": "", + "refId": "D", + "step": 120 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "alert": { + "conditions": [ + { + "evaluator": { + "params": [ + 1.25 + ], + "type": "gt" + }, + "query": { + "params": [ + "A", + "5m", + "now" + ] + }, + "reducer": { + "params": [], + "type": "avg" + }, + "type": "query" + } + ], + "executionErrorState": "alerting", + "frequency": "60s", + "handler": 1, + "name": "Panel Title alert", + "noDataState": "keep_state", + "notifications": [ + { + "id": 1 + } + ] + }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 0, + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 4, + "x": 8, + "y": 4 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_load1{instance=~\"$server:.*\"} / count by(job, instance)(count by(job, instance, cpu)(node_cpu{instance=~\"$server:.*\"}))", + "intervalFactor": 2, + "refId": "A", + "step": 600 + } + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "gt", + "value": 1.25, + "visible": true + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Load", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1.50", + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "alert": { + "conditions": [ + { + "evaluator": { + "params": [ + 850000000000 + ], + "type": "gt" + }, + "query": { + "params": [ + "A", + "5m", + "now" + ] + }, + "reducer": { + "params": [], + "type": "avg" + }, + "type": "query" + } + ], + "executionErrorState": "alerting", + "frequency": "60s", + "handler": 1, + "name": "Free/Used Disk Space alert", + "noDataState": "keep_state", + "notifications": [ + { + "id": 1 + } + ] + }, + "aliasColors": { + "Belegete Festplatte": "#BF1B00", + "Free Disk Space": "#7EB26D", + "Used Disk Space": "#7EB26D", + "{}": "#BF1B00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 6, + "w": 4, + "x": 12, + "y": 4 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Used Disk Space", + "yaxis": 1 + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_size{fstype=\"aufs\"} - node_filesystem_free{fstype=\"aufs\"}", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Used Disk Space", + "refId": "A", + "step": 600 + } + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "gt", + "value": 850000000000, + "visible": true + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Used Disk Space", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": 1000000000000, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "alert": { + "conditions": [ + { + "evaluator": { + "params": [ + 10000000000 + ], + "type": "gt" + }, + "query": { + "params": [ + "A", + "5m", + "now" + ] + }, + "reducer": { + "params": [], + "type": "avg" + }, + "type": "query" + } + ], + "executionErrorState": "alerting", + "frequency": "60s", + "handler": 1, + "name": "Available Memory alert", + "noDataState": "keep_state", + "notifications": [ + { + "id": 1 + } + ] + }, + "aliasColors": { + "Available Memory": "#7EB26D", + "Unavailable Memory": "#7EB26D" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 6, + "w": 4, + "x": 16, + "y": 4 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "container_memory_rss{name=~\".+\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "D", + "step": 20 + }, + { + "expr": "sum(container_memory_rss{name=~\".+\"})", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "A", + "step": 20 + }, + { + "expr": "container_memory_usage_bytes{name=~\".+\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "B", + "step": 20 + }, + { + "expr": "container_memory_rss{id=\"/\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "C", + "step": 20 + }, + { + "expr": "sum(container_memory_rss)", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "E", + "step": 20 + }, + { + "expr": "node_memory_Buffers", + "hide": true, + "intervalFactor": 2, + "legendFormat": "node_memory_Dirty", + "refId": "N", + "step": 30 + }, + { + "expr": "node_memory_MemFree", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "F", + "step": 20 + }, + { + "expr": "node_memory_MemAvailable", + "hide": true, + "intervalFactor": 2, + "legendFormat": "Available Memory", + "refId": "H", + "step": 20 + }, + { + "expr": "node_memory_MemTotal - node_memory_MemAvailable", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Unavailable Memory", + "refId": "G", + "step": 600 + }, + { + "expr": "node_memory_Inactive", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "I", + "step": 30 + }, + { + "expr": "node_memory_KernelStack", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "J", + "step": 30 + }, + { + "expr": "node_memory_Active", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "K", + "step": 30 + }, + { + "expr": "node_memory_MemTotal - (node_memory_Active + node_memory_MemFree + node_memory_Inactive)", + "hide": true, + "intervalFactor": 2, + "legendFormat": "Unknown", + "refId": "L", + "step": 40 + }, + { + "expr": "node_memory_MemFree + node_memory_Inactive ", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "M", + "step": 30 + }, + { + "expr": "container_memory_rss{name=~\".+\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{__name__}}", + "refId": "O", + "step": 30 + }, + { + "expr": "node_memory_Inactive + node_memory_MemFree + node_memory_MemAvailable", + "hide": true, + "intervalFactor": 2, + "legendFormat": "", + "refId": "P", + "step": 40 + } + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "gt", + "value": 10000000000, + "visible": true + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Available Memory", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": 16000000000, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "IN on /sda": "#7EB26D", + "OUT on /sda": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 6, + "w": 4, + "x": 20, + "y": 4 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "-sum(rate(node_disk_bytes_read[$interval])) by (device)", + "hide": false, + "intervalFactor": 2, + "legendFormat": "OUT on /{{device}}", + "metric": "node_disk_bytes_read", + "refId": "A", + "step": 600 + }, + { + "expr": "sum(rate(node_disk_bytes_written[$interval])) by (device)", + "intervalFactor": 2, + "legendFormat": "IN on /{{device}}", + "metric": "", + "refId": "B", + "step": 600 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk I/O", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_network_receive_bytes_total{name=~\".+\"}[$interval])) by (name)", + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "A", + "step": 240 + }, + { + "expr": "- rate(container_network_transmit_bytes_total{name=~\".+\"}[$interval])", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "B", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Received Network Traffic per Container", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_network_transmit_bytes_total{name=~\".+\"}[$interval])) by (name)", + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(container_network_transmit_bytes_total{id=\"/\"}[$interval])", + "hide": true, + "intervalFactor": 2, + "legendFormat": "", + "refId": "B", + "step": 10 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sent Network Traffic per Container", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 10, + "max": 8, + "min": 0, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 5, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 1, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{name=~\".+\"}[$interval])) by (name) * 100", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{name}}", + "metric": "", + "refId": "F", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage per Container", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": "", + "logBase": 1, + "max": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 3, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(container_memory_swap{name=~\".+\"}) by (name)", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "A", + "step": 240 + }, + { + "expr": "container_memory_usage_bytes{name=~\".+\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Swap per Container", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "editable": true, + "error": false, + "fill": 3, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(container_memory_rss{name=~\".+\"}) by (name)", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "A", + "step": 240 + }, + { + "expr": "container_memory_usage_bytes{name=~\".+\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Usage per Container", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": null, + "editable": true, + "error": false, + "fontSize": "100%", + "gridPos": { + "h": 10, + "w": 8, + "x": 16, + "y": 24 + }, + "id": 36, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [ + "10000000", + " 25000000" + ], + "type": "number", + "unit": "decbytes" + } + ], + "targets": [ + { + "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"} - container_memory_usage_bytes{name=~\".+\"}) by (name) ", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "metric": "", + "refId": "A", + "step": 240 + }, + { + "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"}) by (name) ", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "B", + "step": 240 + }, + { + "expr": "container_memory_usage_bytes{name=~\".+\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "C", + "step": 240 + } + ], + "title": "Limit memory", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": null, + "editable": true, + "error": false, + "fontSize": "100%", + "gridPos": { + "h": 10, + "w": 8, + "x": 0, + "y": 31 + }, + "id": 37, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "styles": [ + { + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [ + "10000000", + " 25000000" + ], + "type": "number", + "unit": "decbytes" + } + ], + "targets": [ + { + "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"} - container_memory_usage_bytes{name=~\".+\"}) by (name) ", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "metric": "", + "refId": "A", + "step": 240 + }, + { + "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"}) by (name) ", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "B", + "step": 240 + }, + { + "expr": "container_memory_usage_bytes{name=~\".+\"}", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "C", + "step": 240 + } + ], + "title": "Usage memory", + "transform": "timeseries_aggregations", + "type": "table-old" + }, + { + "columns": [ + { + "text": "Current", + "value": "current" + } + ], + "datasource": null, + "editable": true, + "error": false, + "fontSize": "100%", + "gridPos": { + "h": 10, + "w": 8, + "x": 8, + "y": 31 + }, + "id": 35, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 1, + "desc": true + }, + "styles": [ + { + "align": "auto", + "colorMode": "cell", + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [ + "80", + "90" + ], + "type": "number", + "unit": "percent" + } + ], + "targets": [ + { + "expr": "sum(100 - ((container_spec_memory_limit_bytes{name=~\".+\"} - container_memory_usage_bytes{name=~\".+\"}) * 100 / container_spec_memory_limit_bytes{name=~\".+\"}) ) by (name) ", + "intervalFactor": 2, + "legendFormat": "{{name}}", + "metric": "", + "refId": "A", + "step": 240 + }, + { + "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"}) by (name) ", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "B", + "step": 240 + }, + { + "expr": "container_memory_usage_bytes{name=~\".+\"}", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{name}}", + "refId": "C", + "step": 240 + } + ], + "title": "Remaining memory", + "transform": "timeseries_aggregations", + "type": "table-old" + } + ], + "refresh": "5m", + "schemaVersion": 30, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": ".+", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Container Group", + "multi": true, + "name": "containergroup", + "options": [], + "query": { + "query": "label_values(container_group)", + "refId": "Prometheus-containergroup-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": null, + "tagsQuery": null, + "type": "query" + }, + { + "auto": true, + "auto_count": 50, + "auto_min": "50s", + "current": { + "selected": false, + "text": "auto", + "value": "$__auto_interval_interval" + }, + "datasource": null, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Interval", + "multi": false, + "name": "interval", + "options": [ + { + "selected": true, + "text": "auto", + "value": "$__auto_interval_interval" + }, + { + "selected": false, + "text": "30s", + "value": "30s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "2m", + "value": "2m" + }, + { + "selected": false, + "text": "3m", + "value": "3m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "7m", + "value": "7m" + }, + { + "selected": false, + "text": "10m", + "value": "10m" + }, + { + "selected": false, + "text": "30m", + "value": "30m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "12h", + "value": "12h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + }, + { + "selected": false, + "text": "7d", + "value": "7d" + }, + { + "selected": false, + "text": "14d", + "value": "14d" + }, + { + "selected": false, + "text": "30d", + "value": "30d" + } + ], + "query": "30s,1m,2m,3m,5m,7m,10m,30m,1h,6h,12h,1d,7d,14d,30d", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + }, + { + "allValue": null, + "current": { + "isNone": true, + "selected": false, + "text": "None", + "value": "" + }, + "datasource": "Prometheus", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Node", + "multi": true, + "name": "server", + "options": [], + "query": { + "query": "label_values(node_boot_time, instance)", + "refId": "Prometheus-server-Variable-Query" + }, + "refresh": 1, + "regex": "/([^:]+):.*/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": null, + "tagsQuery": null, + "type": "query" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Docker and system monitoring", + "uid": "4590GPk7z", + "version": 1 +} diff --git a/grafana/dashboards/mariadb.json b/grafana/dashboards/mariadb.json new file mode 100644 index 0000000..4cb4863 --- /dev/null +++ b/grafana/dashboards/mariadb.json @@ -0,0 +1,1201 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "mariadb galera cluster overview. metrics from mysqld exporter.", + "editable": true, + "gnetId": 13106, + "graphTooltip": 0, + "id": 6, + "iteration": 1625228890364, + "links": [], + "panels": [ + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "DOWN" + }, + "1": { + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 0 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byType", + "options": "number" + }, + "properties": [ + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "mysql_up{instance=\"$instance\"}", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Service Status", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "instance", + "Value" + ] + } + } + } + ], + "type": "stat" + }, + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byType", + "options": "number" + }, + "properties": [ + { + "id": "unit", + "value": "s" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 80 + } + ] + } + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 4, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "mysql_global_status_uptime{instance=\"$instance\"}", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Service Uptime", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "instance", + "Value" + ] + } + } + } + ], + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 5 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 200, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "rate(mysql_global_status_queries{instance=\"$instance\"}[1m])", + "interval": "", + "legendFormat": "{{ instance }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Current QPS", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 5 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 200, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "mysql_global_status_max_used_connections{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Current - {{ instance }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "mysql_global_variables_max_connections{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "Max - {{ instance }}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Mysql Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 200, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "write", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "irate(mysql_global_status_innodb_data_reads{instance=\"$instance\"}[10m])", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "reads - {{ instance }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "irate(mysql_global_status_innodb_data_writes{instance=\"$instance\"}[10m])", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "write - {{ instance }}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "mysql disk reads vs writes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 200, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/sent/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "irate(mysql_global_status_bytes_received{instance=\"$instance\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "received - {{ instance }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "irate(mysql_global_status_bytes_sent{instance=\"$instance\"}[5m])", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "sent - {{ instance }}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "mysql network received vs sent", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 19 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "topk(5, rate(mysql_global_status_commands_total{instance=\"$instance\"}[5m]))", + "interval": "", + "legendFormat": "Com_{{ command }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Top Command Counters", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "rate(mysql_global_status_opened_files{instance=\"$instance\"}[1m])", + "interval": "", + "legendFormat": "{{ instance }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MySQL File Openings", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "mysql_global_status_open_files{instance=\"$instance\"}", + "interval": "", + "legendFormat": "Open Files - {{ instance }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "mysql_global_variables_open_files_limit{instance=\"$instance\"}", + "interval": "", + "legendFormat": "Open Files Limit - {{ instance }}", + "refId": "B" + }, + { + "exemplar": true, + "expr": "mysql_global_status_innodb_num_open_files{instance=\"$instance\"}", + "interval": "", + "legendFormat": "InnoDB Open Files - {{ instance }}", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MySQL Open Files", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 1, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "irate(mysql_global_status_slow_queries{instance=\"$instance\"}[1m])", + "interval": "", + "legendFormat": "Slow Queries on {{ instance }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MySQL Slow Queries", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:94", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:95", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "irate(mysql_global_status_aborted_connects{instance=\"$instance\"}[1m])", + "interval": "", + "legendFormat": "Aborted Connects (attempts) on - {{ instance }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "irate(mysql_global_status_aborted_clients{instance=\"$instance\"}[1m])", + "interval": "", + "legendFormat": "Aborted Clients (timeout) on - {{ instance }}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MySQL Aborted Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:206", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:207", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "1m", + "schemaVersion": 30, + "style": "dark", + "tags": [ + "mysql", + "galera", + "mariadb" + ], + "templating": { + "list": [ + { + "datasource": "prometheus", + "description": null, + "error": null, + "filters": [], + "hide": 0, + "label": "", + "name": "Filters", + "skipUrlSync": false, + "type": "adhoc" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "mattermost:9104", + "value": "mattermost:9104" + }, + "datasource": null, + "definition": "label_values(mysql_up, instance)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "instance", + "options": [], + "query": { + "query": "label_values(mysql_up, instance)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Galera/MariaDB - Overview", + "uid": "3sN_YGz7z", + "version": 5 +} diff --git a/grafana/dashboards/nginx.json b/grafana/dashboards/nginx.json new file mode 100644 index 0000000..75bceb5 --- /dev/null +++ b/grafana/dashboards/nginx.json @@ -0,0 +1,488 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Shows stats built from the Prometheus Nginx status page exporter rebuy-de/nginx-exporter or ndiazg/nginx-prometheus-exporter.", + "editable": true, + "gnetId": 9512, + "graphTooltip": 0, + "id": 5, + "iteration": 1625228911934, + "links": [], + "panels": [ + { + "cacheTimeout": null, + "datasource": "$datasource", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "text": "Down" + }, + "1": { + "text": "Up" + } + }, + "type": "value" + }, + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "#299c46", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": null + }, + { + "color": "#d44a3a", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 4, + "x": 0, + "y": 0 + }, + "id": 18, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "nginx_up{namespace=~\"$namespace\", app=~\"$app\", instance=~\"$instance\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Status", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$datasource", + "decimals": 0, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 10, + "x": 4, + "y": 0 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "", + "exemplar": true, + "expr": "nginx_connections_active{app=~\"$app\", instance=~\"$instance\", namespace=~\"$namespace\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "active", + "rawSql": "SELECT\n $__time(time_column),\n value1\nFROM\n metric_table\nWHERE\n $__timeFilter(time_column)\n", + "refId": "A" + }, + { + "exemplar": true, + "expr": "nginx_connections_reading{app=~\"$app\", instance=~\"$instance\", namespace=~\"$namespace\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "reading", + "refId": "B" + }, + { + "exemplar": true, + "expr": "nginx_connections_writing{app=~\"$app\", instance=~\"$instance\", namespace=~\"$namespace\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "writing", + "refId": "D" + }, + { + "exemplar": true, + "expr": "nginx_connections_waiting{app=~\"$app\", instance=~\"$instance\", namespace=~\"$namespace\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "waiting", + "refId": "C" + }, + { + "exemplar": true, + "expr": "nginx_connections_handled{app=~\"$app\", instance=~\"$instance\", namespace=~\"$namespace\"}", + "hide": false, + "interval": "", + "legendFormat": "handled", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "none", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": 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 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 10, + "x": 14, + "y": 0 + }, + "id": 26, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "nginx_http_requests_total", + "instant": false, + "interval": "", + "legendFormat": "http_requests_total", + "refId": "A" + } + ], + "timeFrom": "1h", + "timeShift": null, + "title": "Panel Title", + "type": "timeseries" + } + ], + "refresh": false, + "schemaVersion": 30, + "style": "dark", + "tags": [ + "nginx", + "http" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "datasource", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "$datasource", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "", + "multi": false, + "name": "namespace", + "options": [], + "query": { + "query": "label_values(nginx_up, namespace)", + "refId": "Prometheus-namespace-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": "$datasource", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "", + "multi": false, + "name": "app", + "options": [], + "query": { + "query": "label_values(nginx_up{namespace=~\"$namespace\"}, app)", + "refId": "Prometheus-app-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "helpdesk:9113", + "value": "helpdesk:9113" + }, + "datasource": "$datasource", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "", + "multi": false, + "name": "instance", + "options": [], + "query": { + "query": "label_values(nginx_up{namespace=~\"$namespace\", app=~\"$app\"}, instance)", + "refId": "Prometheus-instance-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Nginx Connections Overview", + "uid": "33YCxGknk", + "version": 6 +} diff --git a/grafana/dashboards/postgresql.json b/grafana/dashboards/postgresql.json new file mode 100644 index 0000000..4caad39 --- /dev/null +++ b/grafana/dashboards/postgresql.json @@ -0,0 +1,1917 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Dashboard for PostgreSQL Statistics.", + "editable": true, + "gnetId": 6742, + "graphTooltip": 0, + "id": 1, + "iteration": 1625228932091, + "links": [], + "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 34, + "panels": [], + "title": "Settings", + "type": "row" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 1 + }, + "id": 2, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "name" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_static", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{short_version}}", + "refId": "A" + } + ], + "title": "Version", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 3, + "y": 1 + }, + "id": 58, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_effective_cache_size_bytes{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Effective Cache", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 5, + "y": 1 + }, + "id": 56, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_shared_buffers_bytes{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Shared Buffers", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 8, + "y": 1 + }, + "id": 54, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_max_connections{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Connections", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 10, + "y": 1 + }, + "id": 60, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_maintenance_work_mem_bytes{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Maintenance Work Mem", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 13, + "y": 1 + }, + "id": 66, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_work_mem_bytes{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Work Mem", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 15, + "y": 1 + }, + "id": 32, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_max_wal_size_bytes{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max WAL Size", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 17, + "y": 1 + }, + "id": 64, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_max_worker_processes{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Max Worker Processes", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 19, + "y": 1 + }, + "id": 70, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_seq_page_cost", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Seq Page Cost", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 1 + }, + "id": 62, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "exemplar": true, + "expr": "pg_settings_random_page_cost{instance=\"$instance\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Random Page Cost", + "type": "stat" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 36, + "panels": [], + "title": "Connection / Transaction Statistics", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 5 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "pg_stat_activity_count{instance=\"$instance\", datname=\"$db\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{state}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Connections", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 5 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(pg_stat_database_xact_commit{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "commits", + "refId": "A" + }, + { + "expr": "irate(pg_stat_database_xact_rollback{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "rollbacks", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Transactions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 15 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(pg_stat_database_tup_fetched{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "SELECT (index scan)", + "refId": "A" + }, + { + "expr": "irate(pg_stat_database_tup_returned{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "SELECT (table scan)", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Read Stats", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": null, + "format": "short", + "label": "Rows", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 15 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(pg_stat_database_tup_inserted{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "INSERT", + "refId": "A" + }, + { + "expr": "irate(pg_stat_database_tup_updated{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "UPDATE", + "refId": "B" + }, + { + "expr": "irate(pg_stat_database_tup_deleted{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "DELETE", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Change Stats", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Rows", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "pg_stat_activity_max_tx_duration{instance=\"$instance\", datname=\"$db\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "max_tx_duration [{{state}}]", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Longest Transaction", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "pg_stat_database_blks_hit{instance=\"$instance\", datname=\"$db\"} / (pg_stat_database_blks_read{instance=\"$instance\", datname=\"$db\"} + pg_stat_database_blks_hit{instance=\"$instance\", datname=\"$db\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Cache Hit Rate", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Cache Hit Rate", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 4, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 50, + "panels": [], + "title": "misc", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 17, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(pg_stat_bgwriter_buffers_backend{instance=\"$instance\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "buffers_backend", + "refId": "A" + }, + { + "expr": "irate(pg_stat_bgwriter_buffers_alloc{instance=\"$instance\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "buffers_alloc", + "refId": "B" + }, + { + "expr": "irate(pg_stat_bgwriter_buffers_backend_fsync{instance=\"$instance\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "backend_fsync", + "refId": "C" + }, + { + "expr": "irate(pg_stat_bgwriter_buffers_checkpoint{instance=\"$instance\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "buffers_checkpoint", + "refId": "D" + }, + { + "expr": "irate(pg_stat_bgwriter_buffers_clean{instance=\"$instance\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "buffers_clean", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Buffers (bgwriter)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 7, + "x": 17, + "y": 32 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(pg_stat_database_conflicts{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "conflicts", + "refId": "B" + }, + { + "expr": "irate(pg_stat_database_deadlocks{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "deadlocks", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Conflicts/Deadlocks", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 0, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 17, + "x": 0, + "y": 38 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "pg_locks_count{instance=\"$instance\", datname=\"$db\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{mode}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Lock Tables", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Total amount of data written to temporary files by queries in this database. All temporary files are counted, regardless of why the temporary file was created, and regardless of the log_temp_files setting.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 7, + "x": 17, + "y": 38 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(pg_stat_database_temp_bytes{instance=\"$instance\", datname=\"$db\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Temp Bytes", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Temp File", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 45 + }, + "hiddenSeries": false, + "id": 38, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(pg_stat_bgwriter_checkpoint_write_time{instance=\"$instance\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "write_time - Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk.", + "refId": "B" + }, + { + "expr": "irate(pg_stat_bgwriter_checkpoint_sync_time{instance=\"$instance\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "sync_time - Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk.", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Checkpoint Stats", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "schemaVersion": 30, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "selected": false, + "text": "helpdesk:9101", + "value": "helpdesk:9101" + }, + "datasource": "Prometheus", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Instance", + "multi": false, + "name": "instance", + "options": [], + "query": { + "query": "label_values(pg_up, instance)", + "refId": "Prometheus-instance-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "zammad", + "value": "zammad" + }, + "datasource": "Prometheus", + "definition": "", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Database", + "multi": false, + "name": "db", + "options": [], + "query": { + "query": "label_values(pg_stat_database_tup_fetched{datname!~\"template.*|postgres\"},datname)", + "refId": "Prometheus-db-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 2, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-30m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PostgreSQL Statistics", + "uid": "1ci9oGz7k", + "version": 3 +} diff --git a/grafana/dashboards/system-info-node.json b/grafana/dashboards/system-info-node.json new file mode 100644 index 0000000..a5a3dd1 --- /dev/null +++ b/grafana/dashboards/system-info-node.json @@ -0,0 +1,13881 @@ +{ + "annotations": { + "list": [ + { + "$$hashKey": "object:1058", + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": 1860, + "graphTooltip": 0, + "id": 2, + "iteration": 1625228958738, + "links": [ + { + "icon": "external link", + "tags": [], + "title": "Github", + "type": "link", + "url": "https://github.com/rfrail3/grafana-dashboards" + }, + { + "icon": "external link", + "tags": [], + "title": "Grafana", + "type": "link", + "url": "https://grafana.com/grafana/dashboards/1860" + } + ], + "panels": [ + { + "collapsed": false, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 261, + "panels": [], + "repeat": null, + "title": "Quick CPU / Mem / Disk", + "type": "row" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Busy state of all CPU cores together", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 1 + }, + "id": 20, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "(((count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))) - avg(sum by (mode)(rate(node_cpu_seconds_total{mode='idle',instance=\"$node\",job=\"$job\"}[$__rate_interval])))) * 100) / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 240 + } + ], + "title": "CPU Busy", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Busy state of all CPU cores together (5 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 1 + }, + "id": 155, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "avg(node_load5{instance=\"$node\",job=\"$job\"}) / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 240 + } + ], + "title": "Sys Load (5m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Busy state of all CPU cores together (15 min average)", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 85 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 6, + "y": 1 + }, + "id": 19, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "avg(node_load15{instance=\"$node\",job=\"$job\"}) / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)) * 100", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 240 + } + ], + "title": "Sys Load (15m avg)", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Non available RAM memory", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 9, + "y": 1 + }, + "hideTimeOverride": false, + "id": 16, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "((node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}) / (node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} )) * 100", + "format": "time_series", + "hide": true, + "intervalFactor": 1, + "refId": "A", + "step": 240 + }, + { + "expr": "100 - ((node_memory_MemAvailable_bytes{instance=\"$node\",job=\"$job\"} * 100) / node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "B", + "step": 240 + } + ], + "title": "RAM Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Used Swap", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 10 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 25 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 12, + "y": 1 + }, + "id": 21, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "((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", + "intervalFactor": 1, + "refId": "A", + "step": 240 + } + ], + "title": "SWAP Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Used Root FS", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 154, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"} * 100) / node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"})", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 240 + } + ], + "title": "Root FS Used", + "type": "gauge" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Total number of CPU cores", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 1 + }, + "id": 14, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))", + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A", + "step": 240 + } + ], + "title": "CPU Cores", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "System uptime", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 4, + "x": 20, + "y": 1 + }, + "hideTimeOverride": true, + "id": 15, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "node_time_seconds{instance=\"$node\",job=\"$job\"} - node_boot_time_seconds{instance=\"$node\",job=\"$job\"}", + "intervalFactor": 2, + "refId": "A", + "step": 240 + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Total RootFS", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)", + "value": null + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 70 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 90 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 18, + "y": 3 + }, + "id": 23, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A", + "step": 240 + } + ], + "title": "RootFS Total", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Total RAM", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 20, + "y": 3 + }, + "id": 75, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 240 + } + ], + "title": "RAM Total", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": "Prometheus", + "description": "Total SWAP", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 2, + "x": 22, + "y": 3 + }, + "id": 18, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.0.3", + "targets": [ + { + "expr": "node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"}", + "intervalFactor": 1, + "refId": "A", + "step": 240 + } + ], + "title": "SWAP Total", + "type": "stat" + }, + { + "collapsed": false, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 263, + "panels": [], + "repeat": null, + "title": "Basic CPU / Mem / Net / Disk", + "type": "row" + }, + { + "aliasColors": { + "Busy": "#EAB839", + "Busy Iowait": "#890F02", + "Busy other": "#1F78C1", + "Idle": "#052B51", + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "description": "Basic CPU info", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 6 + }, + "hiddenSeries": false, + "id": 77, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Busy Iowait", + "color": "#890F02" + }, + { + "alias": "Idle", + "color": "#7EB26D" + }, + { + "alias": "Busy System", + "color": "#EAB839" + }, + { + "alias": "Busy User", + "color": "#0A437C" + }, + { + "alias": "Busy Other", + "color": "#6D1F62" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode=\"system\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy System", + "refId": "A", + "step": 240 + }, + { + "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode='user',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Busy User", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode='iowait',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Iowait", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode=~\".*irq\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy IRQs", + "refId": "D", + "step": 240 + }, + { + "expr": "sum (rate(node_cpu_seconds_total{mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Busy Other", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='idle',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle", + "refId": "F", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:123", + "format": "short", + "label": "", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "$$hashKey": "object:124", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "SWAP Used": "#BF1B00", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap Used": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "description": "Basic memory usage", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 6 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "RAM Total", + "color": "#E0F9D7", + "fill": 0, + "stack": false + }, + { + "alias": "RAM Cache + Buffer", + "color": "#052B51" + }, + { + "alias": "RAM Free", + "color": "#7EB26D" + }, + { + "alias": "Avaliable", + "color": "#DEDAF7", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Total", + "refId": "A", + "step": 240 + }, + { + "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\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "RAM Used", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} + node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Cache + Buffer", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "RAM Free", + "refId": "D", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SWAP Used", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Recv_bytes_eth2": "#7EB26D", + "Recv_bytes_lo": "#0A50A1", + "Recv_drop_eth2": "#6ED0E0", + "Recv_drop_lo": "#E0F9D7", + "Recv_errs_eth2": "#BF1B00", + "Recv_errs_lo": "#CCA300", + "Trans_bytes_eth2": "#7EB26D", + "Trans_bytes_lo": "#0A50A1", + "Trans_drop_eth2": "#6ED0E0", + "Trans_drop_lo": "#E0F9D7", + "Trans_errs_eth2": "#BF1B00", + "Trans_errs_lo": "#CCA300", + "recv_bytes_lo": "#0A50A1", + "recv_drop_eth0": "#99440A", + "recv_drop_lo": "#967302", + "recv_errs_eth0": "#BF1B00", + "recv_errs_lo": "#890F02", + "trans_bytes_eth0": "#7EB26D", + "trans_bytes_lo": "#0A50A1", + "trans_drop_eth0": "#99440A", + "trans_drop_lo": "#967302", + "trans_errs_eth0": "#BF1B00", + "trans_errs_lo": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Basic network info per interface", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 74, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "recv {{device}}", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "trans {{device}} ", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "pps", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 3, + "description": "Disk space used of all filesystems mounted", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 13 + }, + "height": "", + "hiddenSeries": false, + "id": 152, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "100 - ((node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'} * 100) / node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used Basic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percent", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 265, + "panels": [], + "repeat": null, + "title": "CPU / Memory / Net / Disk", + "type": "row" + }, + { + "aliasColors": { + "Idle - Waiting for something to happen": "#052B51", + "guest": "#9AC48A", + "idle": "#052B51", + "iowait": "#EAB839", + "irq": "#BF1B00", + "nice": "#C15C17", + "softirq": "#E24D42", + "steal": "#FCE2DE", + "system": "#508642", + "user": "#5195CE" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 250, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": true, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode=\"system\",instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "interval": "10s", + "intervalFactor": 2, + "legendFormat": "System - Processes executing in kernel mode", + "refId": "A", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='user',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "User - Normal processes executing in user mode", + "refId": "B", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='nice',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Nice - Niced processes executing in user mode", + "refId": "C", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='idle',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Idle - Waiting for something to happen", + "refId": "D", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='iowait',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Iowait - Waiting for I/O to complete", + "refId": "E", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='irq',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Irq - Servicing interrupts", + "refId": "F", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='softirq',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Softirq - Servicing softirqs", + "refId": "G", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='steal',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment", + "refId": "H", + "step": 240 + }, + { + "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='guest',instance=\"$node\",job=\"$job\"}[$__rate_interval])) * 100", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Guest - Time spent running a virtual CPU for a guest operating system", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "percentage", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap - Swap memory usage": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839", + "Unused - Free memory unassigned": "#052B51" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 21 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Hardware Corrupted - *./", + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "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", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Apps - Memory used by user-space applications", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_PageTables_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_SwapCached_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_Slab_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)", + "refId": "D", + "step": 240 + }, + { + "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Cache - Parked file data (file content) cache", + "refId": "E", + "step": 240 + }, + { + "expr": "node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Buffers - Block device (e.g. harddisk) cache", + "refId": "F", + "step": 240 + }, + { + "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Unused - Free memory unassigned", + "refId": "G", + "step": 240 + }, + { + "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Swap - Swap space used", + "refId": "H", + "step": 240 + }, + { + "expr": "node_memory_HardwareCorrupted_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working", + "refId": "I", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Stack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 84, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:5871", + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:5884", + "format": "bps", + "label": "bits out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:5885", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 33 + }, + "height": "", + "hiddenSeries": false, + "id": 156, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'} - node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Space Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 45 + }, + "hiddenSeries": false, + "id": 229, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 12, + "y": 45 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*read*./", + "transform": "negative-Y" + }, + { + "alias": "/.*sda.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde.*/", + "color": "#E24D42" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully read bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Successfully written bytes", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Usage Read / Write", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:965", + "format": "Bps", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:966", + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "io time": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 4, + "fillGradient": 0, + "gridPos": { + "h": 12, + "w": 12, + "x": 0, + "y": 57 + }, + "hiddenSeries": false, + "id": 127, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": null, + "sortDesc": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.0.3", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"} [$__rate_interval])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "I/O Utilization", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": false, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1041", + "format": "percentunit", + "label": "%util", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1042", + "format": "s", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 69 + }, + "id": 266, + "panels": [ + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 70 + }, + "hiddenSeries": false, + "id": 136, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Inactive - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_Active_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 70 + }, + "hiddenSeries": false, + "id": 135, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Committed_AS - *./" + }, + { + "alias": "/.*CommitLimit - *./", + "color": "#BF1B00", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Committed_AS_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Committed_AS - Amount of memory presently allocated on the system", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_CommitLimit_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "CommitLimit - Amount of memory currently available to be allocated on the system", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Commited", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 80 + }, + "hiddenSeries": false, + "id": 191, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Inactive_file_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_file - File-backed memory on inactive LRU list", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_Inactive_anon_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Inactive_anon - Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_Active_file_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_file - File-backed memory on active LRU list", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_Active_anon_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Active_anon - Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Active / Inactive Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 80 + }, + "hiddenSeries": false, + "id": 130, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Writeback_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Writeback - Memory which is actively being written back to disk", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_WritebackTmp_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "WritebackTmp - Memory used by FUSE for temporary writeback buffers", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_Dirty_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Dirty - Memory which is waiting to get written back to the disk", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Writeback and Dirty", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 90 + }, + "hiddenSeries": false, + "id": 138, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:4131", + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + }, + { + "$$hashKey": "object:4138", + "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Mapped_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Mapped - Used memory in mapped pages files which have been mmaped, such as libraries", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_Shmem_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Shmem - Used shared memory (shared between several processes, thus including RAM disks)", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_ShmemHugePages_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages", + "refId": "C", + "step": 240 + }, + { + "expr": "node_memory_ShmemPmdMapped_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ShmemPmdMapped - Ammount of shared (shmem/tmpfs) memory backed by huge pages", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Shared and Mapped", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4106", + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:4107", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 90 + }, + "hiddenSeries": false, + "id": 131, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_SUnreclaim_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SUnreclaim - Part of Slab, that cannot be reclaimed on memory pressure", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "SReclaimable - Part of Slab, that might be reclaimed, such as caches", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Slab", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 100 + }, + "hiddenSeries": false, + "id": 70, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_VmallocChunk_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocChunk - Largest contigious block of vmalloc area which is free", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_VmallocTotal_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocTotal - Total size of vmalloc memory area", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_VmallocUsed_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "VmallocUsed - Amount of vmalloc area which is used", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Vmalloc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 100 + }, + "hiddenSeries": false, + "id": 159, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Bounce_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Bounce - Memory used for block device bounce buffers", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Bounce", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 110 + }, + "hiddenSeries": false, + "id": 129, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Inactive *./", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_AnonHugePages_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonHugePages - Memory in anonymous huge pages", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_AnonPages_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "AnonPages - Memory in user pages not backed by files", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Anonymous", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 110 + }, + "hiddenSeries": false, + "id": 160, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_KernelStack_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "KernelStack - Kernel memory stack. This is not reclaimable", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_Percpu_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PerCPU - Per CPU memory allocated dynamically by loadable modules", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Kernel / CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 120 + }, + "hiddenSeries": false, + "id": 140, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Free{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Free - Huge pages in the pool that are not yet allocated", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_HugePages_Rsvd{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Rsvd - Huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_HugePages_Surp{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages_Surp - Huge pages in the pool above the value in /proc/sys/vm/nr_hugepages", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Counter", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#806EB7", + "Total RAM + Swap": "#806EB7", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 120 + }, + "hiddenSeries": false, + "id": 71, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 2, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_HugePages_Total{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "HugePages - Total size of the pool of huge pages", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_Hugepagesize_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Hugepagesize - Huge Page size", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory HugePages Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 130 + }, + "hiddenSeries": false, + "id": 128, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_DirectMap1G_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "DirectMap1G - Amount of pages mapped as this size", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_DirectMap2M_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap2M - Amount of pages mapped as this size", + "refId": "B", + "step": 240 + }, + { + "expr": "node_memory_DirectMap4k_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DirectMap4K - Amount of pages mapped as this size", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory DirectMap", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 130 + }, + "hiddenSeries": false, + "id": 137, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_Unevictable_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Unevictable - Amount of unevictable memory that can't be swapped out for a variety of reasons", + "refId": "A", + "step": 240 + }, + { + "expr": "node_memory_Mlocked_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "MLocked - Size of pages locked to memory using the mlock() system call", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Unevictable and MLocked", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 140 + }, + "hiddenSeries": false, + "id": 132, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_memory_NFS_Unstable_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NFS Unstable - Memory in NFS pages sent to the server, but not yet commited to the storage", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory NFS", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Meminfo", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 70 + }, + "id": 267, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 176, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_vmstat_pgpgin{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesin - Page in operations", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_vmstat_pgpgout{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pagesout - Page out operations", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*out/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_vmstat_pswpin{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpin - Pages swapped in", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_vmstat_pswpout{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pswpout - Pages swapped out", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Pages Swap In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "pages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Apps": "#629E51", + "Buffers": "#614D93", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Free": "#0A437C", + "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF", + "Inactive": "#584477", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "RAM_Free": "#E0F9D7", + "Slab": "#806EB7", + "Slab_Cache": "#E0752D", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Swap_Free": "#2F575E", + "Unused": "#EAB839" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 175, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 350, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:6118", + "alias": "Pgfault - Page major and minor fault operations", + "fill": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgfault - Page major and minor fault operations", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgmajfault - Major page fault operations", + "refId": "B", + "step": 240 + }, + { + "expr": "rate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[$__rate_interval]) - rate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Pgminfault - Minor page fault operations", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Page Faults", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6133", + "format": "short", + "label": "faults", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6134", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Active": "#99440A", + "Buffers": "#58140C", + "Cache": "#6D1F62", + "Cached": "#511749", + "Committed": "#508642", + "Dirty": "#6ED0E0", + "Free": "#B7DBAB", + "Inactive": "#EA6460", + "Mapped": "#052B51", + "PageTables": "#0A50A1", + "Page_Tables": "#0A50A1", + "Slab_Cache": "#EAB839", + "Swap": "#BF1B00", + "Swap_Cache": "#C15C17", + "Total": "#511749", + "Total RAM": "#052B51", + "Total RAM + Swap": "#052B51", + "Total Swap": "#614D93", + "VmallocUsed": "#EA6460" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 2, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 33 + }, + "hiddenSeries": false, + "id": 307, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_vmstat_oom_kill{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "oom killer invocations ", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "OOM Killer", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:5373", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:5374", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Memory Vmstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 71 + }, + "id": 293, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 260, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_estimated_error_seconds{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Estimated error in seconds", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_offset_seconds{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time offset in between local system and reference clock", + "refId": "B", + "step": 240 + }, + { + "expr": "node_timex_maxerror_seconds{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum error in seconds", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Drift", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 24 + }, + "hiddenSeries": false, + "id": 291, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_loop_time_constant{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Phase-locked loop time adjust", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time PLL Adjust", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 34 + }, + "hiddenSeries": false, + "id": 168, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Variation*./", + "color": "#890F02" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_sync_status{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Is clock synchronized to a reliable server (1 = yes, 0 = no)", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_frequency_adjustment_ratio{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Local clock frequency adjustment", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Syncronized Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 34 + }, + "hiddenSeries": false, + "id": 294, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_timex_tick_seconds{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Seconds between clock ticks", + "refId": "A", + "step": 240 + }, + { + "expr": "node_timex_tai_offset_seconds{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "International Atomic Time (TAI) offset", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Misc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Timesync", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 72 + }, + "id": 312, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 7 + }, + "hiddenSeries": false, + "id": 62, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_procs_blocked{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes blocked waiting for I/O to complete", + "refId": "A", + "step": 240 + }, + { + "expr": "node_procs_running{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Processes in runnable state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6500", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6501", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 7 + }, + "hiddenSeries": false, + "id": 315, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_state{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ state }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6500", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6501", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 148, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_forks_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Processes forks second", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Forks", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6640", + "format": "short", + "label": "forks / sec", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6641", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 149, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Max.*/", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(process_virtual_memory_bytes{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "process_resident_memory_max_bytes{instance=\"$node\",job=\"$job\"}", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "B", + "step": 240 + }, + { + "expr": "rate(process_virtual_memory_bytes{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Processes virtual memory size in bytes", + "refId": "C", + "step": 240 + }, + { + "expr": "rate(process_virtual_memory_max_bytes{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum amount of virtual memory available in bytes", + "refId": "D", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processes Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 313, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:709", + "alias": "PIDs limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_pids{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Number of PIDs", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_processes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PIDs limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "PIDs Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6500", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6501", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 305, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:4963", + "alias": "/.*waiting.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_schedstat_running_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent running a process", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_schedstat_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }} - seconds spent by processing waiting for this CPU", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Process schedule stats Running / Waiting", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4860", + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:4861", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 314, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:709", + "alias": "Threads limit", + "color": "#F2495C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_processes_threads{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Allocated threads", + "refId": "A", + "step": 240 + }, + { + "expr": "node_processes_max_threads{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Threads limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Threads Number and Limit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6500", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6501", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "System Processes", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 73 + }, + "id": 269, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_context_switches_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Context switches", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_intr_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Interrupts", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Context Switches / Interrupts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 8 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_load1{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 1m", + "refId": "A", + "step": 240 + }, + { + "expr": "node_load5{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 5m", + "refId": "B", + "step": 240 + }, + { + "expr": "node_load15{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Load 15m", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "System Load", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6261", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6262", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 18 + }, + "hiddenSeries": false, + "id": 259, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_interrupts_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ type }} - {{ info }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Interrupts Detail", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 18 + }, + "hiddenSeries": false, + "id": 306, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_schedstat_timeslices_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{ cpu }}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Schedule timeslices executed by each cpu", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4860", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:4861", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 151, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_entropy_available_bits{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Entropy available to random number generators", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Entropy", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6568", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6569", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 308, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(process_cpu_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Time spent", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU time spent in user and system contexts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4860", + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:4861", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 38 + }, + "hiddenSeries": false, + "id": 64, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:6323", + "alias": "/.*Max*./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_max_fds{instance=\"$node\",job=\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Maximum open file descriptors", + "refId": "A", + "step": 240 + }, + { + "expr": "process_open_fds{instance=\"$node\",job=\"$job\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open file descriptors", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6338", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6339", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "System Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 74 + }, + "id": 304, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 26 + }, + "hiddenSeries": false, + "id": 158, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:6726", + "alias": "/.*Critical*./", + "color": "#E24D42", + "fill": 0 + }, + { + "$$hashKey": "object:6727", + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_hwmon_temp_celsius{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} temp", + "refId": "A", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_alarm_celsius{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Alarm", + "refId": "B", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_celsius{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical", + "refId": "C", + "step": 240 + }, + { + "expr": "node_hwmon_temp_crit_hyst_celsius{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Critical Historical", + "refId": "D", + "step": 240 + }, + { + "expr": "node_hwmon_temp_max_celsius{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ chip }} {{ sensor }} Max", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Hardware temperature monitor", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:6750", + "format": "celsius", + "label": "temperature", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:6751", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 26 + }, + "hiddenSeries": false, + "id": 300, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:1655", + "alias": "/.*Max*./", + "color": "#EF843C", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_cooling_device_cur_state{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Current {{ name }} in {{ type }}", + "refId": "A", + "step": 240 + }, + { + "expr": "node_cooling_device_max_state{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max {{ name }} in {{ type }}", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Throttle cooling device", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1678", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:1679", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 36 + }, + "hiddenSeries": false, + "id": 302, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_power_supply_online{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ power_supply }} online", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Power supply", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1678", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:1679", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Hardware Misc", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 75 + }, + "id": 296, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 297, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_systemd_socket_accepted_connections_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ name }} Connections", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Sockets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 10 + }, + "hiddenSeries": false, + "id": 298, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "Failed", + "color": "#F2495C" + }, + { + "alias": "Inactive", + "color": "#FF9830" + }, + { + "alias": "Active", + "color": "#73BF69" + }, + { + "alias": "Deactivating", + "color": "#FFCB7D" + }, + { + "alias": "Activating", + "color": "#C8F2C2" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"activating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Activating", + "refId": "A", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"active\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Active", + "refId": "B", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"deactivating\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Deactivating", + "refId": "C", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"failed\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Failed", + "refId": "D", + "step": 240 + }, + { + "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"inactive\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Inactive", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Systemd Units State", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Systemd", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 76 + }, + "id": 270, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "The number (after merges) of I/O requests completed per second for the device", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "$$hashKey": "object:2033", + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "$$hashKey": "object:2034", + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "$$hashKey": "object:2035", + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "$$hashKey": "object:2036", + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "$$hashKey": "object:2037", + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "$$hashKey": "object:2038", + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "$$hashKey": "object:2039", + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "$$hashKey": "object:2040", + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "$$hashKey": "object:2041", + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "$$hashKey": "object:2042", + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "$$hashKey": "object:2043", + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "$$hashKey": "object:2044", + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "$$hashKey": "object:2045", + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "$$hashKey": "object:2046", + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "$$hashKey": "object:2047", + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "$$hashKey": "object:2048", + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "$$hashKey": "object:2049", + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "$$hashKey": "object:2050", + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "$$hashKey": "object:2051", + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "$$hashKey": "object:2052", + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "$$hashKey": "object:2053", + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "intervalFactor": 4, + "legendFormat": "{{device}} - Reads completed", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Writes completed", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Completed", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2186", + "format": "iops", + "label": "IO read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:2187", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "The number of bytes read from or written to the device per second", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 33, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "{{device}} - Read bytes", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Written bytes", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Data", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:369", + "format": "Bps", + "label": "bytes read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:370", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "The 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.", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "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])", + "hide": false, + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - r_await", + "refId": "A", + "step": 240 + }, + { + "expr": "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])", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - w_await", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Average Wait Time", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:441", + "format": "s", + "label": "time. read (-) / write (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:442", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "The average queue length of the requests that were issued to the device", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 21 + }, + "hiddenSeries": false, + "id": 35, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_io_time_weighted_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}}", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average Queue Size", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:513", + "format": "none", + "label": "aqu-sz", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:514", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "The number of read and write requests merged per second that were queued to the device", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 31 + }, + "hiddenSeries": false, + "id": 133, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Read.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_reads_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Read merged", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_disk_writes_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "intervalFactor": 2, + "legendFormat": "{{device}} - Write merged", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk R/W Merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:585", + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:586", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not reflect their performance limits.", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 3, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 31 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_disk_discard_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - discard", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Spent Doing I/Os", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:657", + "format": "percentunit", + "label": "%util", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:658", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "The number of outstanding requests at the instant the sample was taken. Incremented as requests are given to appropriate struct request_queue and decremented as they finish.", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_io_now{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "intervalFactor": 4, + "legendFormat": "{{device}} - IO now", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Instantaneous Queue Size", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:729", + "format": "iops", + "label": "I/Os", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:730", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 301, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:2034", + "alias": "/.*sda_.*/", + "color": "#7EB26D" + }, + { + "$$hashKey": "object:2035", + "alias": "/.*sdb_.*/", + "color": "#EAB839" + }, + { + "$$hashKey": "object:2036", + "alias": "/.*sdc_.*/", + "color": "#6ED0E0" + }, + { + "$$hashKey": "object:2037", + "alias": "/.*sdd_.*/", + "color": "#EF843C" + }, + { + "$$hashKey": "object:2038", + "alias": "/.*sde_.*/", + "color": "#E24D42" + }, + { + "$$hashKey": "object:2039", + "alias": "/.*sda1.*/", + "color": "#584477" + }, + { + "$$hashKey": "object:2040", + "alias": "/.*sda2_.*/", + "color": "#BA43A9" + }, + { + "$$hashKey": "object:2041", + "alias": "/.*sda3_.*/", + "color": "#F4D598" + }, + { + "$$hashKey": "object:2042", + "alias": "/.*sdb1.*/", + "color": "#0A50A1" + }, + { + "$$hashKey": "object:2043", + "alias": "/.*sdb2.*/", + "color": "#BF1B00" + }, + { + "$$hashKey": "object:2044", + "alias": "/.*sdb3.*/", + "color": "#E0752D" + }, + { + "$$hashKey": "object:2045", + "alias": "/.*sdc1.*/", + "color": "#962D82" + }, + { + "$$hashKey": "object:2046", + "alias": "/.*sdc2.*/", + "color": "#614D93" + }, + { + "$$hashKey": "object:2047", + "alias": "/.*sdc3.*/", + "color": "#9AC48A" + }, + { + "$$hashKey": "object:2048", + "alias": "/.*sdd1.*/", + "color": "#65C5DB" + }, + { + "$$hashKey": "object:2049", + "alias": "/.*sdd2.*/", + "color": "#F9934E" + }, + { + "$$hashKey": "object:2050", + "alias": "/.*sdd3.*/", + "color": "#EA6460" + }, + { + "$$hashKey": "object:2051", + "alias": "/.*sde1.*/", + "color": "#E0F9D7" + }, + { + "$$hashKey": "object:2052", + "alias": "/.*sdd2.*/", + "color": "#FCEACA" + }, + { + "$$hashKey": "object:2053", + "alias": "/.*sde3.*/", + "color": "#F9E2D2" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_disk_discards_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "intervalFactor": 4, + "legendFormat": "{{device}} - Discards completed", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_disk_discards_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Discards merged", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk IOps Discards completed / merged", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2186", + "format": "iops", + "label": "IOs", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:2187", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Disk", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 77 + }, + "id": 271, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": 3, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 12 + }, + "hiddenSeries": false, + "id": 43, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Available", + "metric": "", + "refId": "A", + "step": 240 + }, + { + "expr": "node_filesystem_free_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free", + "refId": "B", + "step": 240 + }, + { + "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Size", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem space available", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3826", + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3827", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 12 + }, + "hiddenSeries": false, + "id": 41, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files_free{instance=\"$node\",job=\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Free file nodes", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Free", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3894", + "format": "short", + "label": "file nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3895", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filefd_maximum{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 4, + "legendFormat": "Max open files", + "refId": "A", + "step": 240 + }, + { + "expr": "node_filefd_allocated{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Open files", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Descriptor", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "files", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 22 + }, + "hiddenSeries": false, + "id": 219, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_files{instance=\"$node\",job=\"$job\",device!~'rootfs'}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - File nodes total", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "File Nodes Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "file Nodes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "/ ReadOnly": "#890F02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 6, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_filesystem_readonly{instance=\"$node\",job=\"$job\",device!~'rootfs'}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - ReadOnly", + "refId": "A", + "step": 240 + }, + { + "expr": "node_filesystem_device_error{instance=\"$node\",job=\"$job\",device!~'rootfs',fstype!~'tmpfs'}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{mountpoint}} - Device error", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Filesystem in ReadOnly / Error", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3670", + "format": "short", + "label": "counter", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "$$hashKey": "object:3671", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Storage Filesystem", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 78 + }, + "id": 272, + "panels": [ + { + "aliasColors": { + "receive_packets_eth0": "#7EB26D", + "receive_packets_lo": "#E24D42", + "transmit_packets_eth0": "#7EB26D", + "transmit_packets_lo": "#E24D42" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_packets_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_network_transmit_packets_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic by Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 30 + }, + "hiddenSeries": false, + "id": 142, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_errs_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive errors", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_network_transmit_errs_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Rransmit errors", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 143, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_drop_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive drop", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_network_transmit_drop_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit drop", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Drop", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 40 + }, + "hiddenSeries": false, + "id": 141, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_compressed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive compressed", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_network_transmit_compressed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit compressed", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Compressed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 50 + }, + "hiddenSeries": false, + "id": 146, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_multicast_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive multicast", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Multicast", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 50 + }, + "hiddenSeries": false, + "id": 144, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_fifo_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive fifo", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_network_transmit_fifo_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit fifo", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Fifo", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 60 + }, + "hiddenSeries": false, + "id": 145, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:576", + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_receive_frame_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{device}} - Receive frame", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Frame", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:589", + "format": "pps", + "label": "packets out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:590", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 60 + }, + "hiddenSeries": false, + "id": 231, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_transmit_carrier_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Statistic transmit_carrier", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Carrier", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 70 + }, + "hiddenSeries": false, + "id": 232, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Trans.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_network_transmit_colls_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{device}} - Transmit colls", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic Colls", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 70 + }, + "hiddenSeries": false, + "id": 61, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:663", + "alias": "NF conntrack limit", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_nf_conntrack_entries{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack entries", + "refId": "A", + "step": 240 + }, + { + "expr": "node_nf_conntrack_entries_limit{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "NF conntrack limit", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "NF Contrack", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:678", + "format": "short", + "label": "entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:679", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 80 + }, + "hiddenSeries": false, + "id": 230, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_arp_entries{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - ARP entries", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ARP Entries", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Entries", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 80 + }, + "hiddenSeries": false, + "id": 288, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_mtu_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Bytes", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "MTU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 90 + }, + "hiddenSeries": false, + "id": 280, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_speed_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Speed", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 90 + }, + "hiddenSeries": false, + "id": 289, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 1, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_transmit_queue_length{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ device }} - Interface transmit queue length", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Queue Length", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "none", + "label": "packets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 100 + }, + "hiddenSeries": false, + "id": 290, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:232", + "alias": "/.*Dropped.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_softnet_processed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Processed", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_softnet_dropped_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Dropped", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Packets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:207", + "format": "short", + "label": "packetes drop (-) / process (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:208", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 100 + }, + "hiddenSeries": false, + "id": 310, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_softnet_times_squeezed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CPU {{cpu}} - Squeezed", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Softnet Out of Quota", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:207", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:208", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 110 + }, + "hiddenSeries": false, + "id": 309, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_network_up{operstate=\"up\",instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{interface}} - Operational state UP", + "refId": "A", + "step": 240 + }, + { + "expr": "node_network_carrier{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "instant": false, + "legendFormat": "{{device}} - Physical link state", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Operational Status", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Traffic", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 79 + }, + "id": 273, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 63, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_alloc{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_alloc - Allocated sockets", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_inuse{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_inuse - Tcp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_mem{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_mem - Used memory for tcp", + "refId": "C", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_orphan{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_orphan - Orphan sockets", + "refId": "D", + "step": 240 + }, + { + "expr": "node_sockstat_TCP_tw{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCP_tw - Sockets wating close", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat TCP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 13 + }, + "hiddenSeries": false, + "id": 124, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_UDPLITE_inuse{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDPLITE_inuse - Udplite sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_inuse{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_inuse - Udp sockets currently in use", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "UDP_mem - Used memory for udp", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat UDP", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 126, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_sockets_used{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Sockets_used - Sockets currently in use", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Used", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "sockets", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 220, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_TCP_mem_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - TCP sockets in that state", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_UDP_mem_bytes{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "mem_bytes - UDP sockets in that state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat Memory Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "bytes", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 33 + }, + "hiddenSeries": false, + "id": 125, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_sockstat_FRAG_inuse{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_inuse - Frag sockets currently in use", + "refId": "A", + "step": 240 + }, + { + "expr": "node_sockstat_FRAG_memory{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "FRAG_memory - Used memory for frag", + "refId": "B", + "step": 240 + }, + { + "expr": "node_sockstat_RAW_inuse{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RAW_inuse - Raw sockets currently in use", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sockstat FRAG / RAW", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1572", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1573", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Sockstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 80 + }, + "id": 274, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 221, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:1876", + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_IpExt_InOctets{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InOctets - Received octets", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_IpExt_OutOctets{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "OutOctets - Sent octets", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP In / Out Octets", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1889", + "format": "short", + "label": "octects out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:1890", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 32 + }, + "height": "", + "hiddenSeries": false, + "id": 81, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sideWidth": 300, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Ip_Forwarding{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Forwarding - IP forwarding", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Netstat IP Forwarding", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1957", + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1958", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 115, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Icmp_InMsgs{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InMsgs - Messages which the entity received. Note that this counter includes all those counted by icmpInErrors", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_Icmp_OutMsgs{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutMsgs - Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 42 + }, + "height": "", + "hiddenSeries": false, + "id": 50, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Icmp_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ICMP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 55, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Udp_InDatagrams{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InDatagrams - Datagrams received", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_Udp_OutDatagrams{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutDatagrams - Datagrams sent", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 52 + }, + "height": "", + "hiddenSeries": false, + "id": 109, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Udp_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "InErrors - UDP Datagrams that could not be delivered to an application", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_Udp_NoPorts{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "NoPorts - UDP Datagrams received on a port with no listener", + "refId": "B", + "step": 240 + }, + { + "expr": "rate(node_netstat_UdpLite_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "legendFormat": "InErrors Lite - UDPLite Datagrams that could not be delivered to an application", + "refId": "C" + }, + { + "expr": "rate(node_netstat_Udp_RcvbufErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "RcvbufErrors - UDP buffer errors received", + "refId": "D", + "step": 240 + }, + { + "expr": "rate(node_netstat_Udp_SndbufErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "SndbufErrors - UDP buffer errors send", + "refId": "E", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "UDP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4232", + "format": "short", + "label": "datagrams", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:4233", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "decimals": null, + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 299, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Out.*/", + "transform": "negative-Y" + }, + { + "alias": "/.*Snd.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Tcp_InSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "InSegs - Segments received, including those received in error. This count includes segments received on currently established connections", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_Tcp_OutSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "OutSegs - Segments sent, including those on current connections but excluding those containing only retransmitted octets", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP In / Out", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "datagrams out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 62 + }, + "height": "", + "hiddenSeries": false, + "id": 104, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_TcpExt_ListenOverflows{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenOverflows - Times the listen queue of a socket overflowed", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_TcpExt_ListenDrops{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "ListenDrops - SYNs to LISTEN sockets ignored", + "refId": "B", + "step": 240 + }, + { + "expr": "rate(node_netstat_TcpExt_TCPSynRetrans{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "TCPSynRetrans - SYN-SYN/ACK retransmits to break down retransmissions in SYN, fast/timeout retransmits", + "refId": "C", + "step": 240 + }, + { + "expr": "rate(node_netstat_Tcp_RetransSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "legendFormat": "RetransSegs - Segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets", + "refId": "D" + }, + { + "expr": "rate(node_netstat_Tcp_InErrs{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "interval": "", + "legendFormat": "InErrs - Segments received in error (e.g., bad TCP checksums)", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 85, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:454", + "alias": "/.*MaxConn *./", + "color": "#890F02", + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_netstat_Tcp_CurrEstab{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "CurrEstab - TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT", + "refId": "A", + "step": 240 + }, + { + "expr": "node_netstat_Tcp_MaxConn{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "MaxConn - Limit on the total number of TCP connections the entity can support (Dinamic is \"-1\")", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:469", + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:470", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 72 + }, + "height": "", + "hiddenSeries": false, + "id": 91, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "/.*Sent.*/", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_TcpExt_SyncookiesFailed{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesFailed - Invalid SYN cookies received", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_TcpExt_SyncookiesRecv{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesRecv - SYN cookies received", + "refId": "B", + "step": 240 + }, + { + "expr": "rate(node_netstat_TcpExt_SyncookiesSent{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "SyncookiesSent - SYN cookies sent", + "refId": "C", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP SynCookie", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "counter out (-) / in (+)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 82 + }, + "height": "", + "hiddenSeries": false, + "id": 82, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": true, + "rightSide": false, + "show": true, + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "maxPerRow": 12, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(node_netstat_Tcp_ActiveOpens{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "ActiveOpens - TCP connections that have made a direct transition to the SYN-SENT state from the CLOSED state", + "refId": "A", + "step": 240 + }, + { + "expr": "rate(node_netstat_Tcp_PassiveOpens{instance=\"$node\",job=\"$job\"}[$__rate_interval])", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "PassiveOpens - TCP connections that have made a direct transition to the SYN-RCVD state from the LISTEN state", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "TCP Direct Transition", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "connections", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Network Netstat", + "type": "row" + }, + { + "collapsed": true, + "datasource": "Prometheus", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 81 + }, + "id": 279, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 54 + }, + "hiddenSeries": false, + "id": 40, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_duration_seconds{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape duration", + "refId": "A", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 54 + }, + "hiddenSeries": false, + "id": 157, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:1969", + "alias": "/.*error.*/", + "color": "#F2495C", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "node_scrape_collector_success{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape success", + "refId": "A", + "step": 240 + }, + { + "expr": "node_textfile_scrape_error{instance=\"$node\",job=\"$job\"}", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{collector}} - Scrape textfile error (1 = true)", + "refId": "B", + "step": 240 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Node Exporter Scrape", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1484", + "format": "short", + "label": "counter", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:1485", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "repeat": null, + "title": "Node Exporter", + "type": "row" + } + ], + "refresh": "1m", + "schemaVersion": 30, + "style": "dark", + "tags": [ + "linux" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "default", + "value": "default" + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "node", + "value": "node" + }, + "datasource": "Prometheus", + "definition": "label_values(node_uname_info, job)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Job", + "multi": false, + "name": "job", + "options": [], + "query": { + "query": "label_values(node_uname_info, job)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 2, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "helpdesk:9103", + "value": "helpdesk:9103" + }, + "datasource": "Prometheus", + "definition": "label_values(node_uname_info{job=\"$job\"}, instance)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Host:", + "multi": false, + "name": "node", + "options": [], + "query": { + "query": "label_values(node_uname_info{job=\"$job\"}, instance)", + "refId": "Prometheus-node-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "[a-z]+|nvme[0-9]+n[0-9]+", + "value": "[a-z]+|nvme[0-9]+n[0-9]+" + }, + "description": null, + "error": null, + "hide": 2, + "includeAll": false, + "label": null, + "multi": false, + "name": "diskdevices", + "options": [ + { + "selected": true, + "text": "[a-z]+|nvme[0-9]+n[0-9]+", + "value": "[a-z]+|nvme[0-9]+n[0-9]+" + } + ], + "query": "[a-z]+|nvme[0-9]+n[0-9]+", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "System info (node)", + "uid": "M6JtJMz7k", + "version": 5 +}