zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: 846977d1dfed4968bc5f8bdb363285bc
      name: 'Templates/Operating systems'
  templates:
    - uuid: 2506b0ca01884903b547b1e19b76ce6d
      template: 'Linux by Prom'
      name: 'Linux by Prom'
      description: |
        This template collects Linux metrics from node_exporter 0.18 and above. Support for older node_exporter versions is provided as 'best effort'.
        
        Setup:
        
        1. Set up the node_exporter according to the official documentation:
        https://prometheus.io/docs/guides/node-exporter/
        
        Use node_exporter v0.18.0 or above.
        
        2. Set the hostname or IP address of the node_exporter host in the '{$NODE_EXPORTER_HOST}' macro. You can also change the Prometheus endpoint port in the '{$NODE_EXPORTER_PORT}' macro if necessary.
        
        Known Issues:
        
          - Node Exporter 0.16.0 renamed many metrics. CPU utilization for "guest" and "guest_nice" metrics are not supported in this template with Node Exporter < 0.16. Disk IO metrics are not supported. Other metrics provided as best effort. See https://github.com/prometheus/node_exporter/releases/tag/v0.16.0 for details.
            - version: below 0.16.0
          - metric node_network_info with label 'device' cannot be found, so network discovery is not possible.
            - version: below 0.18
        
        Notes on filesystem (FS) discovery:
          - The ext4/3/2 FS reserves space for privileged usage, typically set at 5% by default.
          - BTRFS allocates a default of 10% of the volume for its own needs.
          - To mitigate potential disasters, FS usage triggers are based on the maximum available space.
            - Utilization formula: 'pused = 100 - 100 * (available / total - free + available)'
          - The FS utilization chart, derived from graph prototypes, reflects FS reserved space as the difference between used and available space from the total volume.
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/387225-discussion-thread-for-official-zabbix-template-for-linux
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: 'Templates/Operating systems'
      items:
        - uuid: 9a60d1e53caa4049a33aa52f3f55ad75
          name: 'Version of node_exporter running'
          type: DEPENDENT
          key: 'agent.version[node_exporter]'
          value_type: CHAR
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_exporter_build_info
                - label
                - version
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: application
        - uuid: d3631bd7effc4cd1bc45c991b3c3038f
          name: 'Number of open file descriptors'
          type: DEPENDENT
          key: 'fd.open[node_exporter]'
          value_type: FLOAT
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_filefd_allocated
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: system
        - uuid: a8b78e776e1d4011bbcb6dd54e32b40b
          name: 'Maximum number of open file descriptors'
          type: DEPENDENT
          key: 'kernel.maxfiles[node_exporter]'
          value_type: FLOAT
          description: 'May be increased by using `sysctl` utility or modifying the file `/etc/sysctl.conf`.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_filefd_maximum
                - value
                - ''
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: c0002ad071d7497ab32633c93624e0c2
              expression: 'last(/Linux by Prom/kernel.maxfiles[node_exporter])<{$KERNEL.MAXFILES.MIN}'
              name: 'Configured max number of open filedescriptors is too low'
              event_name: 'Configured max number of open filedescriptors is too low (< {$KERNEL.MAXFILES.MIN})'
              priority: INFO
              dependencies:
                - name: 'Running out of file descriptors'
                  expression: 'last(/Linux by Prom/fd.open[node_exporter])/last(/Linux by Prom/kernel.maxfiles[node_exporter])*100>80'
              tags:
                - tag: scope
                  value: performance
        - uuid: 8b2fffcba0b24ca8a687361645ffaa1d
          name: 'Get node_exporter metrics'
          type: HTTP_AGENT
          key: node_exporter.get
          history: 1h
          value_type: TEXT
          url: 'http://{$NODE_EXPORTER_HOST}:{$NODE_EXPORTER_PORT}/metrics'
          tags:
            - tag: component
              value: raw
          triggers:
            - uuid: e33fafc8476e404aa4150d0d491f4c83
              expression: 'nodata(/Linux by Prom/node_exporter.get,30m)=1'
              name: 'node_exporter is not available'
              event_name: 'node_exporter is not available (or no data for 30m)'
              priority: WARNING
              description: 'Failed to fetch system metrics from node_exporter in time.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: availability
        - uuid: 75afcb39d2d7496e9490cd14f1431600
          name: 'System boot time'
          type: DEPENDENT
          key: 'system.boottime[node_exporter]'
          value_type: FLOAT
          units: unixtime
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"^node_boot_time(?:_seconds)?$"}'
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: system
        - uuid: a732c4df8af047fbb874e1fb363b5e9e
          name: 'CPU guest time'
          type: DEPENDENT
          key: 'system.cpu.guest[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time spent on running a virtual CPU for a guest operating system.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_guest_seconds_total)?$",cpu=~".+",mode=~"^(?:user|guest)$"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 759809ee6c9e43cf8ff44f987221a90e
          name: 'CPU guest nice time'
          type: DEPENDENT
          key: 'system.cpu.guest_nice[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'The time spent on running a niced guest (a virtual CPU for guest operating systems under the control of the Linux kernel).'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_guest_seconds_total)?$",cpu=~".+",mode=~"^(?:nice|guest_nice)$"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 7bb99c606c6b497aaef279663b60829b
          name: 'CPU idle time'
          type: DEPENDENT
          key: 'system.cpu.idle[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time the CPU has spent doing nothing.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="idle"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 4d3f64c79c684d55bcde14ca5bf3022a
          name: 'CPU interrupt time'
          type: DEPENDENT
          key: 'system.cpu.interrupt[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time the CPU has spent servicing hardware interrupts.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="irq"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 76206cf435fd4a979dbbf74807b532de
          name: 'Interrupts per second'
          type: DEPENDENT
          key: 'system.cpu.intr[node_exporter]'
          value_type: FLOAT
          description: 'Number of interrupts processed.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"node_intr"}'
                - value
                - ''
            - type: CHANGE_PER_SECOND
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 6a727e148a2c4956bcfb6de0a3486c2d
          name: 'CPU iowait time'
          type: DEPENDENT
          key: 'system.cpu.iowait[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time the CPU has been waiting for I/O to complete.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="iowait"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 78fb393fe3d64cd7bf79be5427715add
          name: 'Load average (1m avg)'
          type: DEPENDENT
          key: 'system.cpu.load.avg1[node_exporter]'
          value_type: FLOAT
          description: 'Calculated as the system CPU load divided by the number of CPU cores.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_load1
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 7fc62b26b9ff43429632f1985dc07851
          name: 'Load average (5m avg)'
          type: DEPENDENT
          key: 'system.cpu.load.avg5[node_exporter]'
          value_type: FLOAT
          description: 'Calculated as the system CPU load divided by the number of CPU cores.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_load5
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 35fb0319c599403bbea0e616c9066e27
          name: 'Load average (15m avg)'
          type: DEPENDENT
          key: 'system.cpu.load.avg15[node_exporter]'
          value_type: FLOAT
          description: 'Calculated as the system CPU load divided by the number of CPU cores.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_load15
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 86de794832794f57ba428cca31031005
          name: 'CPU nice time'
          type: DEPENDENT
          key: 'system.cpu.nice[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time the CPU has spent running users'' processes that have been niced.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="nice"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: d7db65cfeaac4541bd98d06dc35f89e2
          name: 'Number of CPUs'
          type: DEPENDENT
          key: 'system.cpu.num[node_exporter]'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="idle"}'
            - type: JAVASCRIPT
              parameters:
                - 'return JSON.parse(value).length'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: cf3cd5840b91477d8e9254820896b978
          name: 'CPU softirq time'
          type: DEPENDENT
          key: 'system.cpu.softirq[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time the CPU has spent servicing software interrupts.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="softirq"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 2ee5885c4de646c0926f0c1a48890e68
          name: 'CPU steal time'
          type: DEPENDENT
          key: 'system.cpu.steal[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'The amount of "stolen" CPU from this virtual machine by the hypervisor for other tasks, such as running another virtual machine.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="steal"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: b873e0d178d144fca3597d617fc119e7
          name: 'Context switches per second'
          type: DEPENDENT
          key: 'system.cpu.switches[node_exporter]'
          value_type: FLOAT
          description: 'The combined rate at which all processors on the computer are switched from one thread to another.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"node_context_switches"}'
                - value
                - ''
            - type: CHANGE_PER_SECOND
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: e296be976c5944b19a7178304ed6140c
          name: 'CPU system time'
          type: DEPENDENT
          key: 'system.cpu.system[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time the CPU has spent running the kernel and its processes.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="system"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 832698e707d14bad8171ca71a2533350
          name: 'CPU user time'
          type: DEPENDENT
          key: 'system.cpu.user[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'Time the CPU has spent running users'' processes that are not niced.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_cpu(?:_seconds_total)?$",cpu=~".+",mode="user"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var valueArr = JSON.parse(value);
                  return valueArr.reduce(function(acc,obj){
                  	return acc + parseFloat(obj['value'])
                  },0)/valueArr.length;
            - type: CHANGE_PER_SECOND
            - type: MULTIPLIER
              parameters:
                - '100'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: cpu
        - uuid: 76f60c7e4f1a482198ff4f101020bbcc
          name: 'CPU utilization'
          type: DEPENDENT
          key: 'system.cpu.util[node_exporter]'
          value_type: FLOAT
          units: '%'
          description: 'CPU utilization expressed in %.'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - 'return (100 - value)'
          master_item:
            key: 'system.cpu.idle[node_exporter]'
          tags:
            - tag: component
              value: cpu
          triggers:
            - uuid: 4c924f8243a7431886a2d69368cb7142
              expression: 'min(/Linux by Prom/system.cpu.util[node_exporter],5m)>{$CPU.UTIL.CRIT}'
              name: 'High CPU utilization'
              event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
              opdata: 'Current utilization: {ITEM.LASTVALUE1}'
              priority: WARNING
              description: 'The CPU utilization is too high. The system might be slow to respond.'
              dependencies:
                - name: 'Load average is too high'
                  expression: |
                    min(/Linux by Prom/system.cpu.load.avg1[node_exporter],5m)/last(/Linux by Prom/system.cpu.num[node_exporter])>{$LOAD_AVG_PER_CPU.MAX.WARN}
                    and last(/Linux by Prom/system.cpu.load.avg5[node_exporter])>0
                    and last(/Linux by Prom/system.cpu.load.avg15[node_exporter])>0
              tags:
                - tag: scope
                  value: performance
        - uuid: c47995760ef3458eb6237e434ef4eef8
          name: 'System description'
          type: DEPENDENT
          key: 'system.descr[node_exporter]'
          value_type: CHAR
          description: 'Labeled system information as provided by the uname system call.'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - node_uname_info
            - type: JAVASCRIPT
              parameters:
                - |
                  var info = JSON.parse(value)[0];
                  return info.labels.sysname+' version: '+info.labels.release+' '+info.labels.version
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: system
        - uuid: 9fcb3dd70dc244f2b2ff86560b37ec7e
          name: 'System local time'
          type: DEPENDENT
          key: 'system.localtime[node_exporter]'
          value_type: FLOAT
          units: unixtime
          description: 'The local system time of the host.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"^node_time(?:_seconds)?$"}'
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: e91c10be1c4a4c3fadfe06aec6c1e4e4
              expression: 'fuzzytime(/Linux by Prom/system.localtime[node_exporter],{$SYSTEM.FUZZYTIME.MAX})=0'
              recovery_mode: RECOVERY_EXPRESSION
              recovery_expression: 'fuzzytime(/Linux by Prom/system.localtime[node_exporter],{$SYSTEM.FUZZYTIME.MIN})=1'
              name: 'System time is out of sync'
              event_name: 'System time is out of sync (diff with Zabbix server > {$SYSTEM.FUZZYTIME.MAX})'
              priority: WARNING
              description: 'The host''s system time is different from Zabbix server time.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: availability
                - tag: scope
                  value: performance
        - uuid: c70cfa2ad5754089935883c5b3172656
          name: 'System name'
          type: DEPENDENT
          key: 'system.name[node_exporter]'
          value_type: CHAR
          description: 'The host name of the system.'
          inventory_link: NAME
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_uname_info
                - label
                - nodename
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: e827e944568b46e284820630482317bd
              expression: 'last(/Linux by Prom/system.name[node_exporter],#1)<>last(/Linux by Prom/system.name[node_exporter],#2) and length(last(/Linux by Prom/system.name[node_exporter]))>0'
              name: 'System name has changed'
              event_name: 'System name has changed (new name: {ITEM.VALUE})'
              priority: INFO
              description: 'The name of the system has changed. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
                - tag: scope
                  value: security
        - uuid: ce4bb6c485cc4b739dce31b631634790
          name: 'Operating system architecture'
          type: DEPENDENT
          key: 'system.sw.arch[node_exporter]'
          value_type: CHAR
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - node_uname_info
                - label
                - machine
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: os
        - uuid: 11ff4e02245f4c2e9ce00e55c1a77b39
          name: 'Operating system'
          type: DEPENDENT
          key: 'system.sw.os[node_exporter]'
          value_type: CHAR
          inventory_link: OS
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: 'system.descr[node_exporter]'
          tags:
            - tag: component
              value: os
          triggers:
            - uuid: 00974d5b128c4b1db64ca100770fb11b
              expression: 'last(/Linux by Prom/system.sw.os[node_exporter],#1)<>last(/Linux by Prom/system.sw.os[node_exporter],#2) and length(last(/Linux by Prom/system.sw.os[node_exporter]))>0'
              name: 'Operating system description has changed'
              priority: INFO
              description: 'The description of the operating system has changed. Possible reasons are that the system has been updated or replaced. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              dependencies:
                - name: 'System name has changed'
                  expression: 'last(/Linux by Prom/system.name[node_exporter],#1)<>last(/Linux by Prom/system.name[node_exporter],#2) and length(last(/Linux by Prom/system.name[node_exporter]))>0'
              tags:
                - tag: scope
                  value: notice
        - uuid: ccc3c4d69fef412aa53c6a7320ef44fb
          name: 'Free swap space'
          type: DEPENDENT
          key: 'system.swap.free[node_exporter]'
          value_type: FLOAT
          units: B
          description: 'The free space of the swap volume/file expressed in bytes.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"node_memory_SwapFree"}'
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: memory
            - tag: component
              value: storage
        - uuid: 99feb76b7da04b00a0d191b92bf979a1
          name: 'Free swap space in %'
          type: CALCULATED
          key: 'system.swap.pfree[node_exporter]'
          value_type: FLOAT
          units: '%'
          params: 'last(//system.swap.free[node_exporter])/last(//system.swap.total[node_exporter])*100'
          description: 'The free space of the swap volume/file expressed in %.'
          tags:
            - tag: component
              value: memory
            - tag: component
              value: storage
        - uuid: d0c1ef0a679546d780df30a02a27df44
          name: 'Total swap space'
          type: DEPENDENT
          key: 'system.swap.total[node_exporter]'
          value_type: FLOAT
          units: B
          description: 'Total space of the swap volume/file expressed in bytes.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"node_memory_SwapTotal"}'
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: memory
            - tag: component
              value: storage
        - uuid: 7eeabdb6bf44483bab91faaab8bb24d5
          name: 'System uptime'
          type: DEPENDENT
          key: 'system.uptime[node_exporter]'
          trends: '0'
          units: uptime
          description: 'The system uptime expressed in the following format: "N days, hh:mm:ss".'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"^node_boot_time(?:_seconds)?$"}'
                - value
                - ''
            - type: JAVASCRIPT
              parameters:
                - 'return (Math.floor(Date.now()/1000)-Number(value));'
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: 83311a7c73c441d39d88fe0fc7b55af9
              expression: 'last(/Linux by Prom/system.uptime[node_exporter])<10m'
              name: '{HOST.NAME} has been restarted'
              event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
              priority: WARNING
              description: 'The device uptime is less than 10 minutes.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 70a75efafbc84cbebd1bb262ec797523
          name: 'Available memory'
          type: DEPENDENT
          key: 'vm.memory.available[node_exporter]'
          value_type: FLOAT
          units: B
          description: |
            The available memory:
            - in Linux - available = free + buffers + cache;
            - on other platforms calculation may vary.
            
            See also Appendixes in Zabbix Documentation about parameters of the `vm.memory.size` item.
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"node_memory_MemAvailable"}'
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: memory
        - uuid: e3ad296f16084e9caa923b449d8c725f
          name: 'Total memory'
          type: DEPENDENT
          key: 'vm.memory.total[node_exporter]'
          value_type: FLOAT
          units: B
          description: 'Total memory expressed in bytes.'
          preprocessing:
            - type: PROMETHEUS_PATTERN
              parameters:
                - '{__name__=~"node_memory_MemTotal"}'
                - value
                - ''
          master_item:
            key: node_exporter.get
          tags:
            - tag: component
              value: memory
        - uuid: 60c716c692fb482f9abffb0fc9ce4324
          name: 'Memory utilization'
          type: CALCULATED
          key: 'vm.memory.util[node_exporter]'
          value_type: FLOAT
          units: '%'
          params: '(last(//vm.memory.total[node_exporter])-last(//vm.memory.available[node_exporter]))/last(//vm.memory.total[node_exporter])*100'
          description: 'Percentage calculated as (total-available)/total*100.'
          tags:
            - tag: component
              value: memory
          triggers:
            - uuid: 72304b3a167e41ccbcdb75568c65294a
              expression: 'min(/Linux by Prom/vm.memory.util[node_exporter],5m)>{$MEMORY.UTIL.MAX}'
              name: 'High memory utilization'
              event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
              priority: AVERAGE
              description: 'The system is running out of free memory.'
              dependencies:
                - name: 'Lack of available memory'
                  expression: 'max(/Linux by Prom/vm.memory.available[node_exporter],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux by Prom/vm.memory.total[node_exporter])>0'
              tags:
                - tag: scope
                  value: capacity
                - tag: scope
                  value: performance
      discovery_rules:
        - uuid: 91531a7a68564860976096df6899fe88
          name: 'Network interface discovery'
          type: DEPENDENT
          key: 'net.if.discovery[node_exporter]'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#IFALIAS}'
                value: '{$NET.IF.IFALIAS.MATCHES}'
              - macro: '{#IFALIAS}'
                value: '{$NET.IF.IFALIAS.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
              - macro: '{#IFNAME}'
                value: '{$NET.IF.IFNAME.MATCHES}'
              - macro: '{#IFNAME}'
                value: '{$NET.IF.IFNAME.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
              - macro: '{#IFOPERSTATUS}'
                value: '{$NET.IF.IFOPERSTATUS.MATCHES}'
              - macro: '{#IFOPERSTATUS}'
                value: '{$NET.IF.IFOPERSTATUS.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
          description: 'Discovery of network interfaces. Requires node_exporter v0.18 and up.'
          item_prototypes:
            - uuid: ee28aff27b4f40eaa8e903ce3fab8555
              name: 'Interface {#IFNAME}({#IFALIAS}): Inbound packets discarded'
              type: DEPENDENT
              key: 'net.if.in.discards[node_exporter,"{#IFNAME}"]'
              value_type: FLOAT
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_receive_drop_total{device="{#IFNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
            - uuid: f6b39f743bb6438d876236ae651f68ee
              name: 'Interface {#IFNAME}({#IFALIAS}): Inbound packets with errors'
              type: DEPENDENT
              key: 'net.if.in.errors[node_exporter,"{#IFNAME}"]'
              value_type: FLOAT
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_receive_errs_total{device="{#IFNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
            - uuid: eea37c3779994ac5b35bb3b125429340
              name: 'Interface {#IFNAME}({#IFALIAS}): Bits received'
              type: DEPENDENT
              key: 'net.if.in[node_exporter,"{#IFNAME}"]'
              value_type: FLOAT
              units: bps
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_receive_bytes_total{device="{#IFNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
                - type: MULTIPLIER
                  parameters:
                    - '8'
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
            - uuid: aec995b7fe724823bdb41f134594b648
              name: 'Interface {#IFNAME}({#IFALIAS}): Outbound packets discarded'
              type: DEPENDENT
              key: 'net.if.out.discards[node_exporter,"{#IFNAME}"]'
              value_type: FLOAT
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_transmit_drop_total{device="{#IFNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
            - uuid: 4ffe74b94eb14a4ea61c0df790d0920f
              name: 'Interface {#IFNAME}({#IFALIAS}): Outbound packets with errors'
              type: DEPENDENT
              key: 'net.if.out.errors[node_exporter"{#IFNAME}"]'
              value_type: FLOAT
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_transmit_errs_total{device="{#IFNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
            - uuid: ddc4111fefec473e8d8b079f6eb50c05
              name: 'Interface {#IFNAME}({#IFALIAS}): Bits sent'
              type: DEPENDENT
              key: 'net.if.out[node_exporter,"{#IFNAME}"]'
              value_type: FLOAT
              units: bps
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_transmit_bytes_total{device="{#IFNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
                - type: MULTIPLIER
                  parameters:
                    - '8'
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
            - uuid: 51f9a39ad6d940ae914cd0a350d83dab
              name: 'Interface {#IFNAME}({#IFALIAS}): Speed'
              type: DEPENDENT
              key: 'net.if.speed[node_exporter,"{#IFNAME}"]'
              trends: '0'
              units: bps
              description: 'Sets value to "0" if metric is missing in `node_exporter` output.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_speed_bytes{device="{#IFNAME}"}'
                    - value
                    - ''
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
                - type: MULTIPLIER
                  parameters:
                    - '8'
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
            - uuid: 4097f76d86cd417db586c5973e1da90b
              name: 'Interface {#IFNAME}({#IFALIAS}): Operational status'
              type: DEPENDENT
              key: 'net.if.status[node_exporter,"{#IFNAME}"]'
              trends: '0'
              description: 'Reference: https://www.kernel.org/doc/Documentation/networking/operstates.txt'
              valuemap:
                name: ifOperStatus
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_info{device="{#IFNAME}"}'
                    - label
                    - operstate
                - type: JAVASCRIPT
                  parameters:
                    - |
                      var newvalue;
                      switch(value) {
                        case "unknown":
                      	newvalue = 0;
                      	break;
                        case "notpresent":
                      	newvalue = 1;
                      	break;
                        case "down":
                      	newvalue = 2;
                      	break;
                        case "lowerlayerdown":
                      	newvalue = 3;
                      	break;
                        case "testing":
                      	newvalue = 4;
                      	break;
                        case "dormant":
                      	newvalue = 5;
                      	break;
                        case "up":
                      	newvalue = 6;
                      	break;  default:
                      	newvalue = "Problem parsing interface operstate in JS";
                      }
                      return newvalue;
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
              trigger_prototypes:
                - uuid: e35b59dc09754451a721793831edc3d4
                  expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])=2 and (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#1)<>last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#2))'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: 'last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
                  name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: |
                    This trigger expression works as follows:
                    1. It can be triggered if the operations status is down.
                    2. `{$IFCONTROL:"{#IFNAME}"}=1` - a user can redefine context macro to value "0", marking this interface as not important. No new trigger will be fired if this interface is down.
                    3. `last(/TEMPLATE_NAME/METRIC,#1)<>last(/TEMPLATE_NAME/METRIC,#2)` - the trigger fires only if the operational status was up to (1) sometime before (so, do not fire for the 'eternal off' interfaces.)
                    
                    WARNING: if closed manually - it will not fire again on the next poll, because of .diff.
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: availability
            - uuid: ce9cfd9880c44aaea18cfa2ab2fdf0e1
              name: 'Interface {#IFNAME}({#IFALIAS}): Interface type'
              type: DEPENDENT
              key: 'net.if.type[node_exporter,"{#IFNAME}"]'
              trends: '0'
              description: 'node_network_protocol_type protocol_type value of /sys/class/net/<iface>.'
              valuemap:
                name: 'Linux::Interface protocol types'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_network_protocol_type{device="{#IFNAME}"}'
                    - value
                    - ''
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: network
                - tag: description
                  value: '{#IFALIAS}'
                - tag: interface
                  value: '{#IFNAME}'
          trigger_prototypes:
            - uuid: 96bbb9726ef149a5b97f96d54502593a
              expression: |
                change(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"])<0 and last(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"])>0
                and (
                last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=6 or
                last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=7 or
                last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=11 or
                last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=62 or
                last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=69 or
                last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=117
                )
                and
                (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])<>2)
              recovery_mode: RECOVERY_EXPRESSION
              recovery_expression: |
                (change(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"])>0 and last(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"],#2)>0) or
                (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])=2)
              name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
              opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
              priority: INFO
              description: 'This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              dependencies:
                - name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
                  expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])=2 and (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#1)<>last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#2))'
                  recovery_expression: 'last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
              tags:
                - tag: scope
                  value: performance
            - uuid: 08d5857e474042b5906288156c8c5d52
              expression: |
                change(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])<0 and last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])>0
                and
                (last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=6
                or last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])=1)
                and
                (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])<>2)
              recovery_mode: RECOVERY_EXPRESSION
              recovery_expression: |
                (change(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"])>0 and last(/Linux by Prom/net.if.type[node_exporter,"{#IFNAME}"],#2)>0) or
                (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])=2)
              name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
              opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
              priority: INFO
              description: 'This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              dependencies:
                - name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
                  expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])=2 and (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#1)<>last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#2))'
                  recovery_expression: 'last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
              tags:
                - tag: scope
                  value: performance
            - uuid: 11e2c8023463482da878cdad5bb7de76
              expression: |
                (avg(/Linux by Prom/net.if.in[node_exporter,"{#IFNAME}"],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"]) or
                avg(/Linux by Prom/net.if.out[node_exporter,"{#IFNAME}"],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"])) and
                last(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"])>0
              recovery_mode: RECOVERY_EXPRESSION
              recovery_expression: |
                avg(/Linux by Prom/net.if.in[node_exporter,"{#IFNAME}"],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"]) and
                avg(/Linux by Prom/net.if.out[node_exporter,"{#IFNAME}"],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux by Prom/net.if.speed[node_exporter,"{#IFNAME}"])
              name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
              event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
              opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
              priority: WARNING
              description: 'The utilization of the network interface is close to its estimated maximum bandwidth.'
              manual_close: 'YES'
              dependencies:
                - name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
                  expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])=2 and (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#1)<>last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#2))'
                  recovery_expression: 'last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
              tags:
                - tag: scope
                  value: performance
            - uuid: 6e8269b2260e42de97aec08043a768df
              expression: |
                min(/Linux by Prom/net.if.in.errors[node_exporter,"{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
                or min(/Linux by Prom/net.if.out.errors[node_exporter"{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
              recovery_mode: RECOVERY_EXPRESSION
              recovery_expression: |
                max(/Linux by Prom/net.if.in.errors[node_exporter,"{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
                and max(/Linux by Prom/net.if.out.errors[node_exporter"{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
              name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
              event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
              opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
              priority: WARNING
              description: 'It recovers when it is below 80% of the `{$IF.ERRORS.WARN:"{#IFNAME}"}` threshold.'
              manual_close: 'YES'
              dependencies:
                - name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
                  expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])=2 and (last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#1)<>last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"],#2))'
                  recovery_expression: 'last(/Linux by Prom/net.if.status[node_exporter,"{#IFNAME}"])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
              tags:
                - tag: scope
                  value: availability
                - tag: scope
                  value: performance
          graph_prototypes:
            - uuid: cf143a7bb6d548fc9d3b089dcbb47ccf
              name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'Linux by Prom'
                    key: 'net.if.in[node_exporter,"{#IFNAME}"]'
                - sortorder: '1'
                  drawtype: BOLD_LINE
                  color: F63100
                  item:
                    host: 'Linux by Prom'
                    key: 'net.if.out[node_exporter,"{#IFNAME}"]'
                - sortorder: '2'
                  color: 00611C
                  yaxisside: RIGHT
                  item:
                    host: 'Linux by Prom'
                    key: 'net.if.out.errors[node_exporter"{#IFNAME}"]'
                - sortorder: '3'
                  color: F7941D
                  yaxisside: RIGHT
                  item:
                    host: 'Linux by Prom'
                    key: 'net.if.in.errors[node_exporter,"{#IFNAME}"]'
                - sortorder: '4'
                  color: FC6EA3
                  yaxisside: RIGHT
                  item:
                    host: 'Linux by Prom'
                    key: 'net.if.out.discards[node_exporter,"{#IFNAME}"]'
                - sortorder: '5'
                  color: 6C59DC
                  yaxisside: RIGHT
                  item:
                    host: 'Linux by Prom'
                    key: 'net.if.in.discards[node_exporter,"{#IFNAME}"]'
          master_item:
            key: node_exporter.get
          lld_macro_paths:
            - lld_macro: '{#HELP}'
              path: $.help
            - lld_macro: '{#IFALIAS}'
              path: $.labels.ifalias
            - lld_macro: '{#IFNAME}'
              path: $.labels.device
            - lld_macro: '{#IFOPERSTATUS}'
              path: $.labels.operstate
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_network_info$"}'
        - uuid: 920f367e232945b8992d0f32e6f9324d
          name: 'Block devices discovery'
          type: DEPENDENT
          key: 'vfs.dev.discovery[node_exporter]'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#DEVNAME}'
                value: '{$VFS.DEV.DEVNAME.MATCHES}'
              - macro: '{#DEVNAME}'
                value: '{$VFS.DEV.DEVNAME.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
          item_prototypes:
            - uuid: 0a0949bcdf754fbe82e772ffbd69b5ba
              name: '{#DEVNAME}: Disk average queue size (avgqu-sz)'
              type: DEPENDENT
              key: 'vfs.dev.queue_size[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              description: 'The current average disk queue; the number of requests outstanding on the disk while the performance data is being collected.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_disk_io_time_weighted_seconds_total{device="{#DEVNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
            - uuid: 9d158ecffdaa43f6bd0ab867ca68620b
              name: '{#DEVNAME}: Disk read request avg waiting time (r_await)'
              type: CALCULATED
              key: 'vfs.dev.read.await[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              units: '!ms'
              params: '(last(//vfs.dev.read.time.rate[node_exporter,"{#DEVNAME}"])/(last(//vfs.dev.read.rate[node_exporter,"{#DEVNAME}"])+(last(//vfs.dev.read.rate[node_exporter,"{#DEVNAME}"])=0)))*1000*(last(//vfs.dev.read.rate[node_exporter,"{#DEVNAME}"]) > 0)'
              description: 'This formula contains two Boolean expressions that evaluates to 1 or 0 in order to set calculated metric to zero and to avoid division by zero exception.'
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
            - uuid: dcd6f61ffb2f491ba78845514654a8cf
              name: '{#DEVNAME}: Disk read rate'
              type: DEPENDENT
              key: 'vfs.dev.read.rate[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              units: '!r/s'
              description: 'r/s. The number (after merges) of read requests completed per second for the device.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_disk_reads_completed_total{device="{#DEVNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
            - uuid: 73940f30ea2b4b88b0047e54b773b747
              name: '{#DEVNAME}: Disk read time (rate)'
              type: DEPENDENT
              key: 'vfs.dev.read.time.rate[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              description: 'Rate of total read time counter. Used in `r_await` calculation.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_disk_read_time_seconds_total{device="{#DEVNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
            - uuid: d087a0525500450c9a307ff21f58482a
              name: '{#DEVNAME}: Disk utilization'
              type: DEPENDENT
              key: 'vfs.dev.util[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              units: '%'
              description: 'This item is the percentage of elapsed time during which the selected disk drive was busy while servicing read or write requests.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_disk_io_time_seconds_total{device="{#DEVNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
                - type: MULTIPLIER
                  parameters:
                    - '100'
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
            - uuid: 94203a49081047b6bc76cd66aecd55ce
              name: '{#DEVNAME}: Disk write request avg waiting time (w_await)'
              type: CALCULATED
              key: 'vfs.dev.write.await[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              units: '!ms'
              params: '(last(//vfs.dev.write.time.rate[node_exporter,"{#DEVNAME}"])/(last(//vfs.dev.write.rate[node_exporter,"{#DEVNAME}"])+(last(//vfs.dev.write.rate[node_exporter,"{#DEVNAME}"])=0)))*1000*(last(//vfs.dev.write.rate[node_exporter,"{#DEVNAME}"]) > 0)'
              description: 'This formula contains two Boolean expressions that evaluates to 1 or 0 in order to set calculated metric to zero and to avoid division by zero exception.'
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
            - uuid: 806ba0a56fab4b5094008c98bb817e2b
              name: '{#DEVNAME}: Disk write rate'
              type: DEPENDENT
              key: 'vfs.dev.write.rate[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              units: '!w/s'
              description: 'w/s. The number (after merges) of write requests completed per second for the device.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_disk_writes_completed_total{device="{#DEVNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
            - uuid: 601cc30457934b7f8f050b2cea13ccea
              name: '{#DEVNAME}: Disk write time (rate)'
              type: DEPENDENT
              key: 'vfs.dev.write.time.rate[node_exporter,"{#DEVNAME}"]'
              value_type: FLOAT
              description: 'Rate of total write time counter. Used in `w_await` calculation.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - 'node_disk_write_time_seconds_total{device="{#DEVNAME}"}'
                    - value
                    - ''
                - type: CHANGE_PER_SECOND
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: disk
                  value: '{#DEVNAME}'
          trigger_prototypes:
            - uuid: 412381f71bba441b955898839f81d51c
              expression: 'min(/Linux by Prom/vfs.dev.read.await[node_exporter,"{#DEVNAME}"],15m) > {$VFS.DEV.READ.AWAIT.WARN:"{#DEVNAME}"} or min(/Linux by Prom/vfs.dev.write.await[node_exporter,"{#DEVNAME}"],15m) > {$VFS.DEV.WRITE.AWAIT.WARN:"{#DEVNAME}"}'
              name: '{#DEVNAME}: Disk read/write request responses are too high'
              event_name: '{#DEVNAME}: Disk read/write request responses are too high (read > {$VFS.DEV.READ.AWAIT.WARN:"{#DEVNAME}"} ms for 15m or write > {$VFS.DEV.WRITE.AWAIT.WARN:"{#DEVNAME}"} ms for 15m)'
              priority: WARNING
              description: 'This trigger might indicate the disk `{#DEVNAME}` saturation.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: performance
          graph_prototypes:
            - uuid: 13a5a74a99734449b08075bbb25bb498
              name: '{#DEVNAME}: Disk average waiting time'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.dev.read.await[node_exporter,"{#DEVNAME}"]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.dev.write.await[node_exporter,"{#DEVNAME}"]'
            - uuid: bad3d3ba32534ef194a4837d666ddccb
              name: '{#DEVNAME}: Disk read/write rates'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.dev.read.rate[node_exporter,"{#DEVNAME}"]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.dev.write.rate[node_exporter,"{#DEVNAME}"]'
            - uuid: aa53b66adaac4e62863ea2dd59ba3ea1
              name: '{#DEVNAME}: Disk utilization and queue'
              graph_items:
                - color: 199C0D
                  yaxisside: RIGHT
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.dev.queue_size[node_exporter,"{#DEVNAME}"]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.dev.util[node_exporter,"{#DEVNAME}"]'
          master_item:
            key: node_exporter.get
          lld_macro_paths:
            - lld_macro: '{#DEVNAME}'
              path: $.labels.device
            - lld_macro: '{#HELP}'
              path: $.help
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - 'node_disk_io_now{device=~".+"}'
        - uuid: 85d047920c1342b992fa1905eb489a44
          name: 'Mounted filesystem discovery'
          type: DEPENDENT
          key: 'vfs.fs.discovery[node_exporter]'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#FSDEVICE}'
                value: '{$VFS.FS.FSDEVICE.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
              - macro: '{#FSNAME}'
                value: '{$VFS.FS.FSDEVICE.MATCHES}'
              - macro: '{#FSNAME}'
                value: '{$VFS.FS.FSNAME.MATCHES}'
              - macro: '{#FSNAME}'
                value: '{$VFS.FS.FSNAME.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
              - macro: '{#FSTYPE}'
                value: '{$VFS.FS.FSTYPE.MATCHES}'
              - macro: '{#FSTYPE}'
                value: '{$VFS.FS.FSTYPE.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
          description: 'Discovery of file systems of different types.'
          item_prototypes:
            - uuid: 3a3edb8bf5a74a63baa27c64d1a44493
              name: 'FS [{#FSNAME}]: Space: Available'
              type: DEPENDENT
              key: 'vfs.fs.free[node_exporter,"{#FSNAME}"]'
              value_type: FLOAT
              units: B
              description: 'Available storage space expressed in bytes.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - '{__name__=~"^node_filesystem_avail(?:_bytes)?$", mountpoint="{#FSNAME}"}'
                    - value
                    - ''
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: filesystem
                  value: '{#FSNAME}'
                - tag: fstype
                  value: '{#FSTYPE}'
            - uuid: ee1dad3677214561baafa6d930358ee0
              name: 'FS [{#FSNAME}]: Inodes: Free, in %'
              type: DEPENDENT
              key: 'vfs.fs.inode.pfree[node_exporter,"{#FSNAME}"]'
              value_type: FLOAT
              units: '%'
              description: 'Free metadata space expressed as a percentage.'
              preprocessing:
                - type: PROMETHEUS_TO_JSON
                  parameters:
                    - '{__name__=~"node_filesystem_files.*",mountpoint="{#FSNAME}"}'
                - type: JAVASCRIPT
                  parameters:
                    - |
                      var inode_free;
                      var inode_total;
                      
                      JSON.parse(value).forEach(function (metric) {
                      	if (metric['name'] == 'node_filesystem_files') {
                      		inode_total = parseFloat(metric['value']);
                      	} else if (metric['name'] == 'node_filesystem_files_free') {
                      		inode_free = parseFloat(metric['value']);
                      	}
                      });
                      
                      return (inode_free / inode_total) * 100;
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: filesystem
                  value: '{#FSNAME}'
                - tag: fstype
                  value: '{#FSTYPE}'
              trigger_prototypes:
                - uuid: 27cabcc9d9644ba6b7bd8c92a740e3cc
                  expression: 'min(/Linux by Prom/vfs.fs.inode.pfree[node_exporter,"{#FSNAME}"],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
                  name: 'FS [{#FSNAME}]: Running out of free inodes'
                  event_name: 'FS [{#FSNAME}]: Running out of free inodes (free < {$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}%)'
                  opdata: 'Free inodes: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'Disk writing may fail if index nodes are exhausted, leading to error messages like "No space left on device" or "Disk is full", despite available free space.'
                  tags:
                    - tag: scope
                      value: capacity
                    - tag: scope
                      value: performance
                - uuid: c639215f6dd94c71aebf97265a282a0d
                  expression: 'min(/Linux by Prom/vfs.fs.inode.pfree[node_exporter,"{#FSNAME}"],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}'
                  name: 'FS [{#FSNAME}]: Running out of free inodes'
                  event_name: 'FS [{#FSNAME}]: Running out of free inodes (free < {$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}%)'
                  opdata: 'Free inodes: {ITEM.LASTVALUE1}'
                  priority: WARNING
                  description: 'Disk writing may fail if index nodes are exhausted, leading to error messages like "No space left on device" or "Disk is full", despite available free space.'
                  dependencies:
                    - name: 'FS [{#FSNAME}]: Running out of free inodes'
                      expression: 'min(/Linux by Prom/vfs.fs.inode.pfree[node_exporter,"{#FSNAME}"],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
                  tags:
                    - tag: scope
                      value: capacity
                    - tag: scope
                      value: performance
            - uuid: 89afe41bb0d74c579a9cff8b036d30dc
              name: 'FS [{#FSNAME}]: Space: Used, in %'
              type: DEPENDENT
              key: 'vfs.fs.pused[node_exporter,"{#FSNAME}"]'
              value_type: FLOAT
              units: '%'
              description: 'Calculated as the percentage of currently used space compared to the maximum available space.'
              preprocessing:
                - type: PROMETHEUS_TO_JSON
                  parameters:
                    - '{__name__=~"^node_filesystem_(avail|free|size)(?:_bytes)?$",mountpoint="{#FSNAME}"}'
                - type: JAVASCRIPT
                  parameters:
                    - |
                      var available,
                      	free,
                      	total;
                      
                      JSON.parse(value).forEach(function(metric) {
                      	if (metric['name'] == 'node_filesystem_size_bytes'){
                      		total = parseFloat(metric['value']);
                      	} else if (metric['name'] == 'node_filesystem_free_bytes'){
                      		free = parseFloat(metric['value']);
                      	} else if (metric['name'] == 'node_filesystem_avail_bytes'){
                      		available = parseFloat(metric['value']);
                      	}
                      });
                      if ((total - free + available) <= 0){
                      	return 0;
                      } else {
                      	return (100 - 100 * available / (total - free + available));
                      }
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: filesystem
                  value: '{#FSNAME}'
                - tag: fstype
                  value: '{#FSTYPE}'
              trigger_prototypes:
                - uuid: d5687d7aa0484b389f0bd168d50ee1e6
                  expression: 'min(/Linux by Prom/vfs.fs.pused[node_exporter,"{#FSNAME}"],5m)>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}'
                  name: 'FS [{#FSNAME}]: Space is critically low'
                  event_name: 'FS [{#FSNAME}]: Space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%, total {{?last(//vfs.fs.total[node_exporter,"{#FSNAME}"])/1024/1024/1024}.fmtnum(1)}GB)'
                  opdata: 'Space used: {{ITEM.LASTVALUE1}.fmtnum(1)}%'
                  priority: AVERAGE
                  description: |
                    The storage space usage exceeds the '{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%' limit.
                    The trigger expression is based on the current used and maximum available spaces.
                    Event name represents the total volume space, which can differ from the maximum available space, depending on the filesystem type.
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: capacity
                - uuid: 8f765148cfd64d5ebda93f39d0b20e36
                  expression: 'min(/Linux by Prom/vfs.fs.pused[node_exporter,"{#FSNAME}"],5m)>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}'
                  name: 'FS [{#FSNAME}]: Space is low'
                  event_name: 'FS [{#FSNAME}]: Space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%, total {{?last(//vfs.fs.total[node_exporter,"{#FSNAME}"])/1024/1024/1024}.fmtnum(1)}GB)'
                  opdata: 'Space used: {{ITEM.LASTVALUE1}.fmtnum(1)}%'
                  priority: WARNING
                  description: |
                    The storage space usage exceeds the '{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%' limit.
                    The trigger expression is based on the current used and maximum available spaces.
                    Event name represents the total volume space, which can differ from the maximum available space, depending on the filesystem type.
                  manual_close: 'YES'
                  dependencies:
                    - name: 'FS [{#FSNAME}]: Space is critically low'
                      expression: 'min(/Linux by Prom/vfs.fs.pused[node_exporter,"{#FSNAME}"],5m)>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: capacity
            - uuid: acb3d42ae23b48cbacd0e99c27697798
              name: 'FS [{#FSNAME}]: Space: Total'
              type: DEPENDENT
              key: 'vfs.fs.total[node_exporter,"{#FSNAME}"]'
              value_type: FLOAT
              units: B
              description: 'Total space expressed in bytes.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - '{__name__=~"^node_filesystem_size(?:_bytes)?$", mountpoint="{#FSNAME}"}'
                    - value
                    - ''
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: filesystem
                  value: '{#FSNAME}'
                - tag: fstype
                  value: '{#FSTYPE}'
            - uuid: 89e559a7ff364dd78b638454896692c5
              name: 'FS [{#FSNAME}]: Space: Used'
              type: DEPENDENT
              key: 'vfs.fs.used[node_exporter,"{#FSNAME}"]'
              value_type: FLOAT
              units: B
              description: |
                Used storage expressed in bytes.
                Reserverd space is not counted in.
              preprocessing:
                - type: PROMETHEUS_TO_JSON
                  parameters:
                    - '{__name__=~"^node_filesystem_(free|size)(?:_bytes)?$",mountpoint="{#FSNAME}"}'
                - type: JAVASCRIPT
                  parameters:
                    - |
                      var free;
                      var total;
                      
                      JSON.parse(value).forEach(function(metric) {
                      	if (metric['name'] == 'node_filesystem_size_bytes'){
                      		total = parseFloat(metric['value']);
                      	} else if (metric['name'] == 'node_filesystem_free_bytes'){
                      		free = parseFloat(metric['value']);
                      	}
                      });
                      
                      return (total-free);
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: filesystem
                  value: '{#FSNAME}'
                - tag: fstype
                  value: '{#FSTYPE}'
            - uuid: 3946668d2bbf47ef85ae7fcea639c622
              name: 'FS [{#FSNAME}]: Filesystem is read-only'
              type: DEPENDENT
              key: 'vfs.fs.[node_exporter,"{#FSNAME}"]'
              description: 'The filesystem is mounted as read-only. It is available only for Zabbix agents 6.4 and higher.'
              preprocessing:
                - type: PROMETHEUS_PATTERN
                  parameters:
                    - '{__name__=~"^node_filesystem_readonly$", mountpoint="{#FSNAME}"}'
                    - value
                    - ''
              master_item:
                key: node_exporter.get
              tags:
                - tag: component
                  value: storage
                - tag: filesystem
                  value: '{#FSNAME}'
                - tag: fstype
                  value: '{#FSTYPE}'
              trigger_prototypes:
                - uuid: a17990454b7e4f96b659e61f426453c8
                  expression: 'last(/Linux by Prom/vfs.fs.[node_exporter,"{#FSNAME}"],#2)=0 and last(/Linux by Prom/vfs.fs.[node_exporter,"{#FSNAME}"])=1'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: 'last(/Linux by Prom/vfs.fs.[node_exporter,"{#FSNAME}"])=0'
                  name: 'FS [{#FSNAME}]: Filesystem has become read-only'
                  priority: AVERAGE
                  description: 'The filesystem has become read-only, possibly due to an I/O error. It is available only for Zabbix agents 6.4 and higher.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          graph_prototypes:
            - uuid: 4c6237d835a34d458de8cf2c108d1290
              name: 'FS [{#FSTYPE}({#FSNAME})]: Space usage graph, in % (relative to max available)'
              width: '600'
              height: '340'
              ymin_type_1: FIXED
              ymax_type_1: FIXED
              graph_items:
                - drawtype: FILLED_REGION
                  color: F63100
                  calc_fnc: LAST
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.fs.pused[node_exporter,"{#FSNAME}"]'
            - uuid: 1febfc95ae1945b3a620cc49264d0eae
              name: 'FS [{#FSTYPE}({#FSNAME})]: Space utilization chart (relative to total)'
              width: '600'
              height: '340'
              type: PIE
              show_3d: 'YES'
              graph_items:
                - color: '787878'
                  calc_fnc: LAST
                  type: GRAPH_SUM
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.fs.total[node_exporter,"{#FSNAME}"]'
                - sortorder: '1'
                  color: F63100
                  calc_fnc: LAST
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.fs.used[node_exporter,"{#FSNAME}"]'
                - sortorder: '2'
                  color: 199C09
                  calc_fnc: LAST
                  item:
                    host: 'Linux by Prom'
                    key: 'vfs.fs.free[node_exporter,"{#FSNAME}"]'
          master_item:
            key: node_exporter.get
          lld_macro_paths:
            - lld_macro: '{#FSDEVICE}'
              path: $.device
            - lld_macro: '{#FSNAME}'
              path: $.mountpoint
            - lld_macro: '{#FSTYPE}'
              path: $.fstype
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - '{__name__=~"^node_filesystem_size(?:_bytes)?$", mountpoint=~".+"}'
            - type: JAVASCRIPT
              parameters:
                - |
                  var filesystems = JSON.parse(value);
                  
                  result = filesystems.map(function (filesystem) {
                  	return {
                  		'mountpoint': filesystem.labels.mountpoint,
                  		'fstype': filesystem.labels.fstype,
                  		'device': filesystem.labels.device
                  	};
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
          overrides:
            - name: 'Skip metadata collection for dynamic FS'
              step: '1'
              filter:
                conditions:
                  - macro: '{#FSTYPE}'
                    value: ^(btrfs|zfs)$
              operations:
                - operator: LIKE
                  value: Inodes
                  discover: NO_DISCOVER
      tags:
        - tag: class
          value: os
        - tag: target
          value: linux
      macros:
        - macro: '{$CPU.UTIL.CRIT}'
          value: '90'
          description: 'Critical threshold of CPU utilization expressed in %.'
        - macro: '{$IF.ERRORS.WARN}'
          value: '2'
          description: 'Warning threshold of error packet rate. Can be used with interface name as context.'
        - macro: '{$IF.UTIL.MAX}'
          value: '90'
          description: 'Used as a threshold in the interface utilization trigger.'
        - macro: '{$IFCONTROL}'
          value: '1'
          description: 'Link status trigger will be fired only for interfaces where the context macro equals "1".'
        - macro: '{$KERNEL.MAXFILES.MIN}'
          value: '256'
        - macro: '{$LOAD_AVG_PER_CPU.MAX.WARN}'
          value: '1.5'
          description: 'Load per CPU considered sustainable. Tune if needed.'
        - macro: '{$MEMORY.AVAILABLE.MIN}'
          value: 20M
          description: 'Used as a threshold in the memory available trigger.'
        - macro: '{$MEMORY.UTIL.MAX}'
          value: '90'
          description: 'Used as a threshold in the memory utilization trigger.'
        - macro: '{$NET.IF.IFALIAS.MATCHES}'
          value: '^.*$'
          description: 'Used in network interface discovery rule filters.'
        - macro: '{$NET.IF.IFALIAS.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'Used in network interface discovery rule filters.'
        - macro: '{$NET.IF.IFNAME.MATCHES}'
          value: '^.*$'
          description: 'Used for network interface discovery. Can be overridden on the host or linked template level.'
        - macro: '{$NET.IF.IFNAME.NOT_MATCHES}'
          value: '(^Software Loopback Interface|^NULL[0-9.]*$|^[Ll]o[0-9.]*$|^[Ss]ystem$|^Nu[0-9.]*$|^veth[0-9A-z]+$|docker[0-9]+|br-[a-z0-9]{12})'
          description: 'Filters out `loopbacks`, `nulls`, docker `veth` links and `docker0` bridge by default.'
        - macro: '{$NET.IF.IFOPERSTATUS.MATCHES}'
          value: '^.*$'
          description: 'Used in network interface discovery rule filters.'
        - macro: '{$NET.IF.IFOPERSTATUS.NOT_MATCHES}'
          value: ^notpresent$
          description: 'Ignore `notpresent(1)`.'
        - macro: '{$NODE_EXPORTER_HOST}'
          value: '<SET NODE EXPORTER HOST>'
          description: 'The hostname or IP address of the node_exporter host.'
        - macro: '{$NODE_EXPORTER_PORT}'
          value: '9100'
          description: 'TCP Port node_exporter is listening on.'
        - macro: '{$SWAP.PFREE.MIN.WARN}'
          value: '50'
          description: 'Warning threshold of the minimum free swap.'
        - macro: '{$SYSTEM.FUZZYTIME.MAX}'
          value: 60s
          description: 'The upper threshold for difference of system time.'
        - macro: '{$SYSTEM.FUZZYTIME.MIN}'
          value: 10s
          description: 'The lower threshold for difference of system time. Used in recovery expression to avoid trigger flapping.'
        - macro: '{$VFS.DEV.DEVNAME.MATCHES}'
          value: .+
          description: 'Used in block device discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.DEV.DEVNAME.NOT_MATCHES}'
          value: '^(loop[0-9]*|sd[a-z][0-9]+|nbd[0-9]+|sr[0-9]+|fd[0-9]+|dm-[0-9]+|ram[0-9]+|ploop[a-z0-9]+|md[0-9]*|hcp[0-9]*|zram[0-9]*)'
          description: 'Used in block device discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.DEV.READ.AWAIT.WARN}'
          value: '20'
          description: 'Disk read average response time (in ms) before the trigger fires.'
        - macro: '{$VFS.DEV.WRITE.AWAIT.WARN}'
          value: '20'
          description: 'Disk write average response time (in ms) before the trigger fires.'
        - macro: '{$VFS.FS.FSDEVICE.MATCHES}'
          value: ^.+$
          description: 'Used in filesystem discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.FS.FSDEVICE.NOT_MATCHES}'
          value: ^\s$
          description: 'Used in filesystem discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.FS.FSNAME.MATCHES}'
          value: .+
          description: 'Used in filesystem discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.FS.FSNAME.NOT_MATCHES}'
          value: ^(/dev|/sys|/run|/proc|.+/shm$)
          description: 'Used in filesystem discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.FS.FSTYPE.MATCHES}'
          value: ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$
          description: 'Used in filesystem discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.FS.FSTYPE.NOT_MATCHES}'
          value: ^\s$
          description: 'Used in filesystem discovery. Can be overridden on the host or linked template level.'
        - macro: '{$VFS.FS.INODE.PFREE.MIN.CRIT}'
          value: '10'
          description: 'The critical threshold of the filesystem metadata utilization.'
        - macro: '{$VFS.FS.INODE.PFREE.MIN.WARN}'
          value: '20'
          description: 'The warning threshold of the filesystem metadata utilization.'
        - macro: '{$VFS.FS.PUSED.MAX.CRIT}'
          value: '90'
          description: 'The critical threshold of the filesystem utilization.'
        - macro: '{$VFS.FS.PUSED.MAX.WARN}'
          value: '80'
          description: 'The warning threshold of the filesystem utilization.'
      dashboards:
        - uuid: d0966792c5d04c4a92d9422114a09385
          name: Filesystems
          pages:
            - name: Overview
              widgets:
                - type: graphprototype
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '3'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'FS [{#FSTYPE}({#FSNAME})]: Space utilization chart (relative to total)'
                    - type: STRING
                      name: reference
                      value: AAAEB
                - type: graphprototype
                  'y': '5'
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'FS [{#FSTYPE}({#FSNAME})]: Space usage graph, in % (relative to max available)'
                    - type: STRING
                      name: reference
                      value: AAAEC
        - uuid: 19dac6b780aa49558bf4a3782ba4b3b6
          name: 'Network interfaces'
          pages:
            - widgets:
                - type: graphprototype
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
                    - type: STRING
                      name: reference
                      value: AAAAJ
        - uuid: 558606056f464970a7c544ba75d544f2
          name: 'System performance'
          pages:
            - widgets:
                - type: graph
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'Linux: System load'
                    - type: STRING
                      name: reference
                      value: AAAAA
                - type: graph
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'Linux: Memory usage'
                    - type: STRING
                      name: reference
                      value: AAAAC
                - type: graphprototype
                  'y': '10'
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '3'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'FS [{#FSTYPE}({#FSNAME})]: Space utilization chart (relative to total)'
                    - type: STRING
                      name: reference
                      value: AAAEA
                - type: graphprototype
                  'y': '15'
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: '{#DEVNAME}: Disk read/write rates'
                    - type: STRING
                      name: reference
                      value: AAAAF
                - type: graphprototype
                  'y': '20'
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: '{#DEVNAME}: Disk average waiting time'
                    - type: STRING
                      name: reference
                      value: AAAAG
                - type: graphprototype
                  'y': '25'
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: '{#DEVNAME}: Disk utilization and queue'
                    - type: STRING
                      name: reference
                      value: AAAAH
                - type: graphprototype
                  'y': '30'
                  width: '72'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
                    - type: STRING
                      name: reference
                      value: AAAAI
                - type: graph
                  x: '36'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'Linux: CPU usage'
                    - type: STRING
                      name: reference
                      value: AAAAB
                - type: graph
                  x: '36'
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'Linux by Prom'
                        name: 'Linux: Swap usage'
                    - type: STRING
                      name: reference
                      value: AAAAD
      valuemaps:
        - uuid: 4827063819f14d539f509552c84f5f94
          name: ifOperStatus
          mappings:
            - value: '0'
              newvalue: unknown
            - value: '1'
              newvalue: notpresent
            - value: '2'
              newvalue: down
            - value: '3'
              newvalue: lowerlayerdown
            - value: '4'
              newvalue: testing
            - value: '5'
              newvalue: dormant
            - value: '6'
              newvalue: up
        - uuid: 4d912f1ee95942038f306ddefb3a57b3
          name: 'Linux::Interface protocol types'
          mappings:
            - value: '0'
              newvalue: 'from KA9Q: NET/ROM pseudo'
            - value: '1'
              newvalue: Ethernet
            - value: '2'
              newvalue: 'Experimental Ethernet'
            - value: '3'
              newvalue: 'AX.25 Level 2'
            - value: '4'
              newvalue: 'PROnet token ring'
            - value: '5'
              newvalue: Chaosnet
            - value: '6'
              newvalue: 'IEEE 802.2 Ethernet/TR/TB'
            - value: '7'
              newvalue: ARCnet
            - value: '8'
              newvalue: APPLEtalk
            - value: '15'
              newvalue: 'Frame Relay DLCI'
            - value: '19'
              newvalue: ATM
            - value: '23'
              newvalue: 'Metricom STRIP (new IANA id)'
            - value: '24'
              newvalue: 'IEEE 1394 IPv4 - RFC 2734'
            - value: '27'
              newvalue: EUI-64
            - value: '32'
              newvalue: InfiniBand
            - value: '256'
              newvalue: ARPHRD_SLIP
            - value: '257'
              newvalue: ARPHRD_CSLIP
            - value: '258'
              newvalue: ARPHRD_SLIP6
            - value: '259'
              newvalue: ARPHRD_CSLIP6
            - value: '260'
              newvalue: 'Notional KISS type'
            - value: '264'
              newvalue: ARPHRD_ADAPT
            - value: '270'
              newvalue: ARPHRD_ROSE
            - value: '271'
              newvalue: 'CCITT X.25'
            - value: '272'
              newvalue: 'Boards with X.25 in firmware'
            - value: '280'
              newvalue: 'Controller Area Network'
            - value: '512'
              newvalue: ARPHRD_PPP
            - value: '513'
              newvalue: 'Cisco HDLC'
            - value: '516'
              newvalue: LAPB
            - value: '517'
              newvalue: 'Digital''s DDCMP protocol'
            - value: '518'
              newvalue: 'Raw HDLC'
            - value: '519'
              newvalue: 'Raw IP'
            - value: '768'
              newvalue: 'IPIP tunnel'
            - value: '769'
              newvalue: 'IP6IP6 tunnel'
            - value: '770'
              newvalue: 'Frame Relay Access Device'
            - value: '771'
              newvalue: 'SKIP vif'
            - value: '772'
              newvalue: 'Loopback device'
            - value: '773'
              newvalue: 'Localtalk device'
            - value: '774'
              newvalue: 'Fiber Distributed Data Interface'
            - value: '775'
              newvalue: 'AP1000 BIF'
            - value: '776'
              newvalue: 'sit0 device - IPv6-in-IPv4'
            - value: '777'
              newvalue: 'IP over DDP tunneller'
            - value: '778'
              newvalue: 'GRE over IP'
            - value: '779'
              newvalue: 'PIMSM register interface'
            - value: '780'
              newvalue: 'High Performance Parallel Interface'
            - value: '781'
              newvalue: 'Nexus 64Mbps Ash'
            - value: '782'
              newvalue: 'Acorn Econet'
            - value: '783'
              newvalue: Linux-IrDA
            - value: '784'
              newvalue: 'Point to point fibrechannel'
            - value: '785'
              newvalue: 'Fibrechannel arbitrated loop'
            - value: '786'
              newvalue: 'Fibrechannel public loop'
            - value: '787'
              newvalue: 'Fibrechannel fabric'
            - value: '800'
              newvalue: 'Magic type ident for TR'
            - value: '801'
              newvalue: 'IEEE 802.11'
            - value: '802'
              newvalue: 'IEEE 802.11 + Prism2 header'
            - value: '803'
              newvalue: 'IEEE 802.11 + radiotap header'
            - value: '804'
              newvalue: ARPHRD_IEEE802154
            - value: '805'
              newvalue: 'IEEE 802.15.4 network monitor'
            - value: '820'
              newvalue: 'PhoNet media type'
            - value: '821'
              newvalue: 'PhoNet pipe header'
            - value: '822'
              newvalue: 'CAIF media type'
            - value: '823'
              newvalue: 'GRE over IPv6'
            - value: '824'
              newvalue: 'Netlink header'
            - value: '825'
              newvalue: 'IPv6 over LoWPAN'
            - value: '826'
              newvalue: 'Vsock monitor header'
  triggers:
    - uuid: 16e6a4d340164dee9379a3fc0aac0576
      expression: 'max(/Linux by Prom/system.swap.pfree[node_exporter],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux by Prom/system.swap.total[node_exporter])>0'
      name: 'High swap space usage'
      event_name: 'High swap space usage (less than {$SWAP.PFREE.MIN.WARN}% free)'
      opdata: 'Free: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
      priority: WARNING
      description: 'If there is no swap configured, this trigger is ignored.'
      dependencies:
        - name: 'High memory utilization'
          expression: 'min(/Linux by Prom/vm.memory.util[node_exporter],5m)>{$MEMORY.UTIL.MAX}'
        - name: 'Lack of available memory'
          expression: 'max(/Linux by Prom/vm.memory.available[node_exporter],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux by Prom/vm.memory.total[node_exporter])>0'
      tags:
        - tag: scope
          value: capacity
    - uuid: f78ed17586964a46a9de0c4f183984f6
      expression: 'max(/Linux by Prom/vm.memory.available[node_exporter],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux by Prom/vm.memory.total[node_exporter])>0'
      name: 'Lack of available memory'
      event_name: 'Lack of available memory (<{$MEMORY.AVAILABLE.MIN} of {ITEM.VALUE2})'
      opdata: 'Available: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
      priority: AVERAGE
      tags:
        - tag: scope
          value: capacity
        - tag: scope
          value: performance
    - uuid: e5897641e5594bf6b7b18ae4e107bd50
      expression: |
        min(/Linux by Prom/system.cpu.load.avg1[node_exporter],5m)/last(/Linux by Prom/system.cpu.num[node_exporter])>{$LOAD_AVG_PER_CPU.MAX.WARN}
        and last(/Linux by Prom/system.cpu.load.avg5[node_exporter])>0
        and last(/Linux by Prom/system.cpu.load.avg15[node_exporter])>0
      name: 'Load average is too high'
      event_name: 'Load average is too high (per CPU load over {$LOAD_AVG_PER_CPU.MAX.WARN} for 5m)'
      opdata: 'Load averages(1m 5m 15m): ({ITEM.LASTVALUE1} {ITEM.LASTVALUE3} {ITEM.LASTVALUE4}), # of CPUs: {ITEM.LASTVALUE2}'
      priority: AVERAGE
      description: 'The load average per CPU is too high. The system may be slow to respond.'
      tags:
        - tag: scope
          value: capacity
        - tag: scope
          value: performance
    - uuid: 7effa63c9c994a6786279802aa7328ad
      expression: 'last(/Linux by Prom/fd.open[node_exporter])/last(/Linux by Prom/kernel.maxfiles[node_exporter])*100>80'
      name: 'Running out of file descriptors'
      event_name: 'Running out of file descriptors (less than < 20% free)'
      opdata: '{ITEM.LASTVALUE1} of {ITEM.LASTVALUE2} file descriptors are in use.'
      priority: WARNING
      tags:
        - tag: scope
          value: performance
  graphs:
    - uuid: bb8bb267b32b46bfa2a6277b65730396
      name: 'Linux: CPU jumps'
      graph_items:
        - color: 199C0D
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.switches[node_exporter]'
        - sortorder: '1'
          color: F63100
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.intr[node_exporter]'
    - uuid: 09ebf28dc8504ab2bfd07130d1f6ca91
      name: 'Linux: CPU usage'
      type: STACKED
      ymin_type_1: FIXED
      ymax_type_1: FIXED
      graph_items:
        - color: 199C0D
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.system[node_exporter]'
        - sortorder: '1'
          color: F63100
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.user[node_exporter]'
        - sortorder: '2'
          color: 00611C
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.nice[node_exporter]'
        - sortorder: '3'
          color: F7941D
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.iowait[node_exporter]'
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.steal[node_exporter]'
        - sortorder: '5'
          color: 6C59DC
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.interrupt[node_exporter]'
        - sortorder: '6'
          color: C7A72D
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.softirq[node_exporter]'
        - sortorder: '7'
          color: BA2A5D
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.guest[node_exporter]'
        - sortorder: '8'
          color: F230E0
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.guest_nice[node_exporter]'
    - uuid: 9cd184535b6b4fd5978a302bdedeac0b
      name: 'Linux: CPU utilization'
      ymin_type_1: FIXED
      ymax_type_1: FIXED
      graph_items:
        - drawtype: GRADIENT_LINE
          color: 199C0D
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.util[node_exporter]'
    - uuid: 1383a8b57e6743de946c8a43016ee2f7
      name: 'Linux: Memory usage'
      ymin_type_1: FIXED
      graph_items:
        - drawtype: BOLD_LINE
          color: 199C0D
          item:
            host: 'Linux by Prom'
            key: 'vm.memory.total[node_exporter]'
        - sortorder: '1'
          drawtype: GRADIENT_LINE
          color: F63100
          item:
            host: 'Linux by Prom'
            key: 'vm.memory.available[node_exporter]'
    - uuid: 81e79ef1219a4c48af1f740017bbde6a
      name: 'Linux: Memory utilization'
      ymin_type_1: FIXED
      ymax_type_1: FIXED
      graph_items:
        - drawtype: GRADIENT_LINE
          color: 199C0D
          item:
            host: 'Linux by Prom'
            key: 'vm.memory.util[node_exporter]'
    - uuid: 567684533d2442b286119c7d392e2bb7
      name: 'Linux: Swap usage'
      graph_items:
        - color: 199C0D
          item:
            host: 'Linux by Prom'
            key: 'system.swap.free[node_exporter]'
        - sortorder: '1'
          color: F63100
          item:
            host: 'Linux by Prom'
            key: 'system.swap.total[node_exporter]'
    - uuid: f9cbf136d01040ffa18753fb40d55f79
      name: 'Linux: System load'
      ymin_type_1: FIXED
      graph_items:
        - color: 199C0D
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.load.avg1[node_exporter]'
        - sortorder: '1'
          color: F63100
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.load.avg5[node_exporter]'
        - sortorder: '2'
          color: 00611C
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.load.avg15[node_exporter]'
        - sortorder: '3'
          color: F7941D
          yaxisside: RIGHT
          item:
            host: 'Linux by Prom'
            key: 'system.cpu.num[node_exporter]'
