zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: 7c2cb727f85b492d88cd56e17127c64d
      name: Templates/SAN
  templates:
    - uuid: 79267c69f54a4e59b4152aba4e8c4bd5
      template: 'NetApp AFF A700 by HTTP'
      name: 'NetApp AFF A700 by HTTP'
      description: |
        The template to monitor SAN NetApp AFF A700 cluster by Zabbix HTTP agent.
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/SAN
      items:
        - uuid: 95d822159f2a4c4084ad36b18cd11a1d
          name: 'Get chassis'
          type: HTTP_AGENT
          key: netapp.chassis.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/cluster/chassis?fields=id,state'
          tags:
            - tag: component
              value: raw
        - uuid: 49490a886b5f4e5c9e8cc121a6ffd713
          name: 'Get cluster'
          type: HTTP_AGENT
          key: netapp.cluster.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/cluster'
          tags:
            - tag: component
              value: raw
        - uuid: 2c98b9d6353a4b1f9c0a794681788c22
          name: 'Cluster location'
          type: DEPENDENT
          key: netapp.cluster.location
          value_type: CHAR
          description: 'The location of the cluster.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.location
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
        - uuid: a052583b18b44ed9b8df1c1eca375113
          name: 'Cluster name'
          type: DEPENDENT
          key: netapp.cluster.name
          value_type: CHAR
          description: 'The name of the cluster.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.name
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
        - uuid: 63c3ea4634024fb88841cee7e64c964b
          name: 'Cluster IOPS, other rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops.other.rate
          value_type: FLOAT
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.other
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 5f38f233c9c0446e8bb9e60229294cdf
          name: 'Cluster IOPS, read rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops.read.rate
          value_type: FLOAT
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric for read I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.read
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 8380db1dbf2a4c2e95eff184d3a61fde
          name: 'Cluster IOPS, total rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops.total.rate
          value_type: FLOAT
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric aggregated over all types of I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.total
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 65a4b938010045ef9735a7d9f6239ccd
          name: 'Cluster IOPS, write rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops.write.rate
          value_type: FLOAT
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric for write I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.write
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 77253d87ce8242afa45a3c79ab96a91e
          name: 'Cluster IOPS raw, other'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops_raw.other
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.other
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 14262390978b45729fa3ac593cf21a69
          name: 'Cluster IOPS raw, read'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops_raw.read
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric for read I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.read
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 7a0407b68348478f9bc56bf0629f59d2
          name: 'Cluster IOPS raw, total'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops_raw.total
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric aggregated over all types of I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.total
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 92640d6a2d044100a59c5d180d43fbce
          name: 'Cluster IOPS raw, write'
          type: DEPENDENT
          key: netapp.cluster.statistics.iops_raw.write
          units: '!iops'
          description: 'The number of I/O operations observed at the storage object. Performance metric for write I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.iops_raw.write
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: iops
        - uuid: 4bd4fe94e9a54fa2b8ab9bdf0475edff
          name: 'Cluster latency, other'
          type: CALCULATED
          key: netapp.cluster.statistics.latency.other
          value_type: FLOAT
          units: '!ms'
          params: |
            (last(//netapp.cluster.statistics.latency_raw.other) - last(//netapp.cluster.statistics.latency_raw.other,#2)) /
            (last(//netapp.cluster.statistics.iops_raw.other) - last(//netapp.cluster.statistics.iops_raw.other,#2) +
            (last(//netapp.cluster.statistics.iops_raw.other) - last(//netapp.cluster.statistics.iops_raw.other,#2) = 0) ) * 0.001
          description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: 4b89e603f9cf4b92a85293b1ad15c005
          name: 'Cluster latency, read'
          type: CALCULATED
          key: netapp.cluster.statistics.latency.read
          value_type: FLOAT
          units: '!ms'
          params: |
            (last(//netapp.cluster.statistics.latency_raw.read) - last(//netapp.cluster.statistics.latency_raw.read,#2)) /
            (last(//netapp.cluster.statistics.iops_raw.read) - last(//netapp.cluster.statistics.iops_raw.read,#2) +
            (last(//netapp.cluster.statistics.iops_raw.read) - last(//netapp.cluster.statistics.iops_raw.read,#2) = 0) ) * 0.001
          description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric for read I/O operations.'
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: 2c953f67a7484e389d11ac5ef6b06c44
          name: 'Cluster latency, total'
          type: CALCULATED
          key: netapp.cluster.statistics.latency.total
          value_type: FLOAT
          units: '!ms'
          params: |
            (last(//netapp.cluster.statistics.latency_raw.total) - last(//netapp.cluster.statistics.latency_raw.total,#2)) /
            (last(//netapp.cluster.statistics.iops_raw.total) - last(//netapp.cluster.statistics.iops_raw.total,#2) +
            (last(//netapp.cluster.statistics.iops_raw.total) - last(//netapp.cluster.statistics.iops_raw.total,#2) = 0) ) * 0.001
          description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric aggregated over all types of I/O operations.'
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: 543ba306d85e41c98d34dab39463dd87
          name: 'Cluster latency, write'
          type: CALCULATED
          key: netapp.cluster.statistics.latency.write
          value_type: FLOAT
          units: '!ms'
          params: |
            (last(//netapp.cluster.statistics.latency_raw.write) - last(//netapp.cluster.statistics.latency_raw.write,#2)) /
            (last(//netapp.cluster.statistics.iops_raw.write) - last(//netapp.cluster.statistics.iops_raw.write,#2) +
            (last(//netapp.cluster.statistics.iops_raw.write) - last(//netapp.cluster.statistics.iops_raw.write,#2) = 0) ) * 0.001
          description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric for write I/O operations.'
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: acd5b961c4d843589514771fa9a0aaa3
          name: 'Cluster latency raw, other'
          type: DEPENDENT
          key: netapp.cluster.statistics.latency_raw.other
          units: '!mcs'
          description: 'The raw latency in microseconds observed at the storage object. This can be divided by the raw IOPS value to calculate the average latency per I/O operation. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.latency_raw.other
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: 3e81e918028d412eaa2cb27718ae3b98
          name: 'Cluster latency raw, read'
          type: DEPENDENT
          key: netapp.cluster.statistics.latency_raw.read
          units: '!mcs'
          description: 'The raw latency in microseconds observed at the storage object. This can be divided by the raw IOPS value to calculate the average latency per I/O operation. Performance metric for read I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.latency_raw.read
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: 78253f625b7e468898f6dd48c9707ad3
          name: 'Cluster latency raw, total'
          type: DEPENDENT
          key: netapp.cluster.statistics.latency_raw.total
          units: '!mcs'
          description: 'The raw latency in microseconds observed at the storage object. This can be divided by the raw IOPS value to calculate the average latency per I/O operation. Performance metric aggregated over all types of I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.latency_raw.total
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: fb73702348d3468cad5312af772eaeb9
          name: 'Cluster latency raw, write'
          type: DEPENDENT
          key: netapp.cluster.statistics.latency_raw.write
          units: '!mcs'
          description: 'The raw latency in microseconds observed at the storage object. This can be divided by the raw IOPS value to calculate the average latency per I/O operation. Performance metric for write I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.latency_raw.write
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: latency
        - uuid: 61acb5f1435f4452a789c44bfd105da3
          name: 'Cluster throughput, other rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.throughput.other.rate
          value_type: FLOAT
          units: Bps
          description: 'Throughput bytes observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.throughput_raw.other
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: throughput
        - uuid: a1fad2e35b8f4c1da450b953d3952263
          name: 'Cluster throughput, read rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.throughput.read.rate
          value_type: FLOAT
          units: Bps
          description: 'Throughput bytes observed at the storage object. Performance metric for read I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.throughput_raw.read
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: throughput
        - uuid: e894ad01c2d74edfb8f954198979070c
          name: 'Cluster throughput, total rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.throughput.total.rate
          value_type: FLOAT
          units: Bps
          description: 'Throughput bytes observed at the storage object. Performance metric aggregated over all types of I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.throughput_raw.total
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: throughput
        - uuid: c06c118d3fbe48b78db12e43232d6d97
          name: 'Cluster throughput, write rate'
          type: DEPENDENT
          key: netapp.cluster.statistics.throughput.write.rate
          value_type: FLOAT
          units: Bps
          description: 'Throughput bytes observed at the storage object. Performance metric for write I/O operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.throughput_raw.write
            - type: CHANGE_PER_SECOND
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
            - tag: component
              value: throughput
        - uuid: 5029bccf54f542b1a2dc760067ddabe3
          name: 'Cluster status'
          type: DEPENDENT
          key: netapp.cluster.status
          value_type: CHAR
          description: 'The status of the cluster: ok, error, partial_no_data, partial_no_response, partial_other_error, negative_delta, backfilled_data, inconsistent_delta_time, inconsistent_old_data.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.statistics.status
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: cluster
          triggers:
            - uuid: c823a2eb325a4153871be705d7c24c72
              expression: '(last(/NetApp AFF A700 by HTTP/netapp.cluster.status)<>"ok")'
              name: 'Cluster status is abnormal'
              priority: AVERAGE
              description: 'Any errors associated with the sample. For example, if the aggregation of data over multiple nodes fails then any of the partial errors might be returned, “ok” on success, or “error” on any internal uncategorized failure. Whenever a sample collection is missed but done at a later time, it is back filled to the previous 15 second timestamp and tagged with "backfilled_data". “Inconsistent_ delta_time” is encountered when the time between two collections is not the same for all nodes. Therefore, the aggregated value might be over or under inflated. “Negative_delta” is returned when an expected monotonically increasing value has decreased in value. “Inconsistent_old_data” is returned when one or more nodes do not have the latest data.'
              tags:
                - tag: scope
                  value: availability
                - tag: scope
                  value: performance
        - uuid: cd56dc70e28f4a3382f2f1b08a4fa584
          name: 'Cluster software version'
          type: DEPENDENT
          key: netapp.cluster.version
          value_type: CHAR
          description: 'This returns the cluster version information. When the cluster has more than one node, the cluster version is equivalent to the lowest of generation, major, and minor versions on all nodes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.version.full
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
          master_item:
            key: netapp.cluster.get
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: 4a2936f068ed486f8c8a2cf2cfa7440b
              expression: 'last(/NetApp AFF A700 by HTTP/netapp.cluster.version,#1)<>last(/NetApp AFF A700 by HTTP/netapp.cluster.version,#2) and length(last(/NetApp AFF A700 by HTTP/netapp.cluster.version))>0'
              name: 'Version has changed'
              event_name: 'Version has changed (new version: {ITEM.VALUE})'
              priority: INFO
              description: 'The NetApp AFF A700 version has changed. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: c9bf91e0f23c4961aed8ee5b32ff7767
          name: 'Get disks'
          type: HTTP_AGENT
          key: netapp.disks.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/storage/disks?fields=state,node.name'
          tags:
            - tag: component
              value: raw
        - uuid: 54163ca73a8c40188048ef5d89ec4927
          name: 'Get FRUs'
          type: HTTP_AGENT
          key: netapp.frus.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function(chassis) {
                  	chassis.frus.forEach(function(frus) {
                  		frus.chassisId = chassis.id;
                  		result.push(frus);
                  	})
                  });
                  
                  return JSON.stringify(result);
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/cluster/chassis?fields=id,frus.id,frus.state'
          tags:
            - tag: component
              value: raw
        - uuid: c9b6ac2405af48c0899d1536662f752b
          name: 'Get LUNs'
          type: HTTP_AGENT
          key: netapp.luns.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/storage/luns?fields=name,svm.name,space.size,space.used,status.state,status.container_state'
          tags:
            - tag: component
              value: raw
        - uuid: 5c36efc545ba4dcbb0be84da5e8088cc
          name: 'Get nodes'
          type: HTTP_AGENT
          key: netapp.nodes.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/cluster/nodes?fields=*'
          tags:
            - tag: component
              value: raw
        - uuid: c677a3caf7a04710bc67b165b4152808
          name: 'Get ethernet ports'
          type: HTTP_AGENT
          key: netapp.ports.eth.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/network/ethernet/ports?fields=name,type,node.name,broadcast_domain.name,enabled,state,mtu,speed'
          tags:
            - tag: component
              value: raw
        - uuid: 2a6abfe87cc548bb81fcb217cde4f805
          name: 'Get FC ports'
          type: HTTP_AGENT
          key: netapp.ports.fc.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/network/fc/ports?fields=name,node.name,description,enabled,fabric.switch_port,state'
          tags:
            - tag: component
              value: raw
        - uuid: 7a813b7cb05d497fbf77bf11b01757dd
          name: 'Get SVMs'
          type: HTTP_AGENT
          key: netapp.svms.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/svm/svms?fields=name,state,comment'
          tags:
            - tag: component
              value: raw
        - uuid: fa7fa8daaaa640d494af38614ba12c2e
          name: 'Get volumes'
          type: HTTP_AGENT
          key: netapp.volumes.get
          history: '0'
          value_type: TEXT
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/storage/volumes?fields=name,comment,state,type,svm.name,space.size,space.available,space.used,statistics'
          tags:
            - tag: component
              value: raw
      discovery_rules:
        - uuid: c5265605c1b5440999b7c0dbff8ce328
          name: 'Chassis discovery'
          type: HTTP_AGENT
          key: netapp.chassis.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: 7e6b1e1d5b484080b8f31929a78e44e7
              name: '{#ID}: State'
              type: DEPENDENT
              key: 'netapp.chassis.state[{#ID}]'
              value_type: CHAR
              description: 'The chassis state: ok, error.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.id==''{#ID}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.chassis.get
              tags:
                - tag: chassis
                  value: '{#ID}'
                - tag: component
                  value: chassis
              trigger_prototypes:
                - uuid: 381eb797545d452a84d3dba43865bbed
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.chassis.state[{#ID}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.chassis.state[{#ID}],#2) and last(/NetApp AFF A700 by HTTP/netapp.chassis.state[{#ID}])="error")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.chassis.state[{#ID}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.chassis.state[{#ID}],#2) and last(/NetApp AFF A700 by HTTP/netapp.chassis.state[{#ID}])="ok")'
                  name: '{#ID}: Chassis has something errors'
                  priority: AVERAGE
                  description: 'Something is wrong with the chassis.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: performance
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/cluster/chassis?fields=id'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (chassis) {
                  	result.push({"{#ID}": chassis.id});
                  });
                  
                  return JSON.stringify(result);
        - uuid: e7c0955f88d342179b96f56e1f35afe2
          name: 'Disks discovery'
          type: HTTP_AGENT
          key: netapp.disks.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: f170a3d8e98048ce91bf10f1ebcd2611
              name: '{#DISKNAME}: State'
              type: DEPENDENT
              key: 'netapp.disk.state[{#NODENAME},{#DISKNAME}]'
              value_type: CHAR
              description: 'The state of the disk. Possible values: broken, copy, maintenance, partner, pending, present, reconstructing, removed, spare, unfail, zeroing'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#DISKNAME}''&&@.node.name==''{#NODENAME}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.disks.get
              tags:
                - tag: component
                  value: disk
                - tag: disk
                  value: '{#DISKNAME}'
                - tag: node
                  value: '{#NODENAME}'
              trigger_prototypes:
                - uuid: 72c1925f51c149eca27c7ddd1c81e44f
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.disk.state[{#NODENAME},{#DISKNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.disk.state[{#NODENAME},{#DISKNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.disk.state[{#NODENAME},{#DISKNAME}])<>"present")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.disk.state[{#NODENAME},{#DISKNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.disk.state[{#NODENAME},{#DISKNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.disk.state[{#NODENAME},{#DISKNAME}])="present")'
                  name: '{#DISKNAME}: Disk of the Node "{#NODENAME}" has state different from "present"'
                  priority: AVERAGE
                  description: 'Something is wrong with the disk.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: performance
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/storage/disks?fields=name,node.name'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (disk) {
                  	result.push({"{#DISKNAME}": disk.name, "{#NODENAME}": disk.node.name});
                  });
                  
                  return JSON.stringify(result);
        - uuid: 1ae3dea03a464096819de8a206b0780e
          name: 'FRUs discovery'
          type: DEPENDENT
          key: netapp.frus.discovery
          item_prototypes:
            - uuid: 643c9e0a8869464bacae0ff6161afe36
              name: '{#FRUID}: State'
              type: DEPENDENT
              key: 'netapp.chassis.fru.state[{#CHASSISID},{#FRUID}]'
              value_type: CHAR
              description: 'The FRU state: ok, error.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.id==''{#FRUID}''&&@.chassisId==''{#CHASSISID}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.frus.get
              tags:
                - tag: chassis
                  value: '{#CHASSISID}'
                - tag: component
                  value: fru
                - tag: fru
                  value: '{#FRUID}'
              trigger_prototypes:
                - uuid: a17cb2ea98b6415d9e22e7f591d80adb
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.chassis.fru.state[{#CHASSISID},{#FRUID}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.chassis.fru.state[{#CHASSISID},{#FRUID}],#2) and last(/NetApp AFF A700 by HTTP/netapp.chassis.fru.state[{#CHASSISID},{#FRUID}])="error")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.chassis.fru.state[{#CHASSISID},{#FRUID}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.chassis.fru.state[{#CHASSISID},{#FRUID}],#2) and last(/NetApp AFF A700 by HTTP/netapp.chassis.fru.state[{#CHASSISID},{#FRUID}])="ok")'
                  name: '{#FRUID}: FRU of the chassis "{#ID}" state is error'
                  priority: AVERAGE
                  description: 'Something is wrong with the FRU.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          master_item:
            key: netapp.frus.get
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).forEach(function (fru) {
                  	result.push({"{#CHASSISID}": fru.chassisId, "{#FRUID}": fru.id});
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: b75474be384f4d7fa0f625c4cebeef43
          name: 'LUNs discovery'
          type: HTTP_AGENT
          key: netapp.luns.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: 05dfdbc0cacb4f1fa458180e4b4fe35c
              name: '{#LUNNAME}: Space size'
              type: DEPENDENT
              key: 'netapp.lun.space.size[{#SVMNAME},{#LUNNAME}]'
              units: B
              description: 'The total provisioned size of the LUN.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.svm.name==''{#SVMNAME}''&&@.name==''{#LUNNAME}'')].space.size.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.luns.get
              tags:
                - tag: component
                  value: lun
                - tag: lun
                  value: '{#LUNNAME}'
                - tag: svm
                  value: '{#SVMNAME}'
            - uuid: e12b5d04f3264ee2b602d459fb64c6ee
              name: '{#LUNNAME}: Space used'
              type: DEPENDENT
              key: 'netapp.lun.space.used[{#SVMNAME},{#LUNNAME}]'
              units: B
              description: 'The amount of space consumed by the main data stream of the LUN.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.svm.name==''{#SVMNAME}''&&@.name==''{#LUNNAME}'')].space.used.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.luns.get
              tags:
                - tag: component
                  value: lun
                - tag: lun
                  value: '{#LUNNAME}'
                - tag: svm
                  value: '{#SVMNAME}'
            - uuid: 701fdb0345874ea39afc3362faa2f5a4
              name: '{#LUNNAME}: Container state'
              type: DEPENDENT
              key: 'netapp.lun.status.container_state[{#SVMNAME},{#LUNNAME}]'
              value_type: CHAR
              description: 'The state of the volume and aggregate that contain the LUN: online, aggregate_offline, volume_offline. LUNs are only available when their containers are available.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.svm.name==''{#SVMNAME}''&&@.name==''{#LUNNAME}'')].status.container_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.luns.get
              tags:
                - tag: component
                  value: lun
                - tag: lun
                  value: '{#LUNNAME}'
                - tag: svm
                  value: '{#SVMNAME}'
              trigger_prototypes:
                - uuid: 7a4e0a681edd4db6b701b131fea0e5e4
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.lun.status.container_state[{#SVMNAME},{#LUNNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.lun.status.container_state[{#SVMNAME},{#LUNNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.lun.status.container_state[{#SVMNAME},{#LUNNAME}])<>"online")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.lun.status.container_state[{#SVMNAME},{#LUNNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.lun.status.container_state[{#SVMNAME},{#LUNNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.lun.status.container_state[{#SVMNAME},{#LUNNAME}])="online")'
                  name: '{#LUNNAME}: LUN of the SVM "{#SVMNAME}" has abnormal container state'
                  priority: AVERAGE
                  description: 'LUNs are only available when their containers are available.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: performance
            - uuid: ae15b98b9de2472e8c56ddb2a13d7981
              name: '{#LUNNAME}: State'
              type: DEPENDENT
              key: 'netapp.lun.status.state[{#SVMNAME},{#LUNNAME}]'
              value_type: CHAR
              description: 'The state of the LUN. Normal states for a LUN are online and offline. Other states indicate errors. Possible values: foreign_lun_error, nvfail, offline, online, space_error.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.svm.name==''{#SVMNAME}''&&@.name==''{#LUNNAME}'')].status.state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.luns.get
              tags:
                - tag: component
                  value: lun
                - tag: lun
                  value: '{#LUNNAME}'
                - tag: svm
                  value: '{#SVMNAME}'
              trigger_prototypes:
                - uuid: 5b065dd69e654bee881ae60464a5c9fe
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.lun.status.state[{#SVMNAME},{#LUNNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.lun.status.state[{#SVMNAME},{#LUNNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.lun.status.state[{#SVMNAME},{#LUNNAME}])<>"online")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.lun.status.state[{#SVMNAME},{#LUNNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.lun.status.state[{#SVMNAME},{#LUNNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.lun.status.state[{#SVMNAME},{#LUNNAME}])="online")'
                  name: '{#LUNNAME}: LUN of the SVM "{#SVMNAME}" has abnormal state'
                  priority: AVERAGE
                  description: 'Normal states for a LUN are online and offline. Other states indicate errors.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: performance
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/storage/luns?fields=name,svm.name,space.size,space.used,status.state,status.container_state'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (lun) {
                  	result.push({"{#LUNNAME}": lun.name, "{#SVMNAME}": lun.svm.name});
                  });
                  
                  return JSON.stringify(result);
        - uuid: b914c4c37ba446eba7ecdc73a9692885
          name: 'Nodes discovery'
          type: HTTP_AGENT
          key: netapp.nodes.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: 23474d549a4c4e80b2e89c12a909dc0c
              name: '{#NODENAME}: Software version'
              type: DEPENDENT
              key: 'netapp.node.version[{#NODENAME}]'
              value_type: CHAR
              description: 'This returns the cluster version information. When the cluster has more than one node, the cluster version is equivalent to the lowest of generation, major, and minor versions on all nodes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#NODENAME}'')].version.full.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.nodes.get
              tags:
                - tag: component
                  value: node
                - tag: node
                  value: '{#NODENAME}'
              trigger_prototypes:
                - uuid: 34092a7ade784221ae50eb74a6fbcb5d
                  expression: 'last(/NetApp AFF A700 by HTTP/netapp.node.version[{#NODENAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.node.version[{#NODENAME}],#2) and length(last(/NetApp AFF A700 by HTTP/netapp.node.version[{#NODENAME}]))>0'
                  name: '{#NODENAME}: Version has changed'
                  event_name: '{#NODENAME}: Version has changed (new version: {ITEM.VALUE})'
                  priority: INFO
                  description: '{#NODENAME} version has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 416e2a3d707d4a5389c90566b588bf7f
              name: '{#NODENAME}: Controller over temperature'
              type: DEPENDENT
              key: 'netapp.nodes.controller.over_temperature[{#NODENAME}]'
              value_type: CHAR
              description: 'Specifies whether the hardware is currently operating outside of its recommended temperature range. The hardware shuts down if the temperature exceeds critical thresholds. Possible values: over, normal'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#NODENAME}'')].controller.over_temperature.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.nodes.get
              tags:
                - tag: component
                  value: node
                - tag: node
                  value: '{#NODENAME}'
              trigger_prototypes:
                - uuid: 4dbb3a9da15f45989b8fa4217f3f25c3
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.nodes.controller.over_temperature[{#NODENAME}])<>"normal")'
                  name: '{#NODENAME}: Node has over temperature'
                  priority: AVERAGE
                  description: 'The hardware shuts down if the temperature exceeds critical thresholds(item''s value is "over").'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
            - uuid: f554158202d347388304751c8bdf7515
              name: '{#NODENAME}: Location'
              type: DEPENDENT
              key: 'netapp.nodes.location[{#NODENAME}]'
              value_type: CHAR
              description: 'The location of the node.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#NODENAME}'')].location.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.nodes.get
              tags:
                - tag: component
                  value: node
                - tag: node
                  value: '{#NODENAME}'
            - uuid: be634e1ba1ea454fbc6c7c8224909187
              name: '{#NODENAME}: Membership'
              type: DEPENDENT
              key: 'netapp.nodes.membership[{#NODENAME}]'
              value_type: CHAR
              description: |
                Possible values:
                  available - If a node is available, this means it is detected on the internal cluster network and can be added to the cluster. Nodes that have a membership of “available” are not returned when a GET request is called when the cluster exists. A query on the “membership” property for available must be provided to scan for nodes on the cluster network. Nodes that have a membership of “available” are returned automatically before a cluster is created.
                  joining - Joining nodes are in the process of being added to the cluster. The node may be progressing through the steps to become a member or might have failed. The job to add the node or create the cluster provides details on the current progress of the node.
                  member - Nodes that are members have successfully joined the cluster.
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#NODENAME}'')].membership.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.nodes.get
              tags:
                - tag: component
                  value: node
                - tag: node
                  value: '{#NODENAME}'
            - uuid: 5b3b6fab8fe54f3585c1a270caad2b3e
              name: '{#NODENAME}: State'
              type: DEPENDENT
              key: 'netapp.nodes.state[{#NODENAME}]'
              value_type: CHAR
              description: |
                State of the node:
                up - Node is up and operational.
                booting - Node is booting up.
                down - Node has stopped or is dumping core.
                taken_over - Node has been taken over by its HA partner and is not yet waiting for giveback.
                waiting_for_giveback - Node has been taken over by its HA partner and is waiting for the HA partner to giveback disks.
                degraded - Node has one or more critical services offline.
                unknown - Node or its HA partner cannot be contacted and there is no information on the node's state.
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#NODENAME}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.nodes.get
              tags:
                - tag: component
                  value: node
                - tag: node
                  value: '{#NODENAME}'
              trigger_prototypes:
                - uuid: db8ff0f2cd294cc5952992a0d476e798
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.nodes.state[{#NODENAME}])<>"up")'
                  name: '{#NODENAME}: Node state is abnormal'
                  priority: AVERAGE
                  description: |
                    The state of the node is different from up:
                    booting - Node is booting up.
                    down - Node has stopped or is dumping core.
                    taken_over - Node has been taken over by its HA partner and is not yet waiting for giveback.
                    waiting_for_giveback - Node has been taken over by its HA partner and is waiting for the HA partner to giveback disks.
                    degraded - Node has one or more critical services offline.
                    unknown - Node or its HA partner cannot be contacted and there is no information on the node's state.
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
            - uuid: 56e0b6df4dbd456880c2481bec40b41e
              name: '{#NODENAME}: Uptime'
              type: DEPENDENT
              key: 'netapp.nodes.uptime[{#NODENAME}]'
              units: s
              description: 'The total time, in seconds, that the node has been up.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#NODENAME}'')].uptime.first()'
              master_item:
                key: netapp.nodes.get
              tags:
                - tag: component
                  value: node
                - tag: node
                  value: '{#NODENAME}'
              trigger_prototypes:
                - uuid: 61357dfdb08846c4935f62ba894b159a
                  expression: 'last(/NetApp AFF A700 by HTTP/netapp.nodes.uptime[{#NODENAME}])<10m'
                  name: '{#NODENAME}: Node has been restarted'
                  event_name: '{#NODENAME}: Node has been restarted (uptime < 10m)'
                  priority: INFO
                  description: 'Uptime is less than 10 minutes.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/cluster/nodes?fields=name'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (node) {
                  	result.push({"{#NODENAME}": node.name});
                  });
                  
                  return JSON.stringify(result);
        - uuid: 98ed5727ede8490b8479a2194b2c847a
          name: 'Ethernet ports discovery'
          type: HTTP_AGENT
          key: netapp.ports.ether.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: dda2086a96f844c7b5a8002549fe6bf5
              name: '{#ETHPORTNAME}: State'
              type: DEPENDENT
              key: 'netapp.port.eth.state[{#NODENAME},{#ETHPORTNAME}]'
              value_type: CHAR
              description: 'The operational state of the port. Possible values: up, down.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#ETHPORTNAME}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.ports.eth.get
              tags:
                - tag: component
                  value: interfaces
                - tag: interfaces
                  value: '{#ETHPORTNAME}'
                - tag: node
                  value: '{#NODENAME}'
              trigger_prototypes:
                - uuid: 0fa3a54b559349d58b616720ee33cdf5
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.port.eth.state[{#NODENAME},{#ETHPORTNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.port.eth.state[{#NODENAME},{#ETHPORTNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.port.eth.state[{#NODENAME},{#ETHPORTNAME}])="down")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.port.eth.state[{#NODENAME},{#ETHPORTNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.port.eth.state[{#NODENAME},{#ETHPORTNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.port.eth.state[{#NODENAME},{#ETHPORTNAME}])="up")'
                  name: '{#ETHPORTNAME}: Ethernet port of the Node "{#NODENAME}" is down'
                  priority: AVERAGE
                  description: 'Something is wrong with the ethernet port.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: availability
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/network/ethernet/ports?fields=name,state,node.name'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (port) {
                  	result.push({"{#NODENAME}": port.node.name, "{#ETHPORTNAME}": port.name, "{#ETHPORTSTATE}": port.state});
                  });
                  
                  return JSON.stringify(result);
        - uuid: bab3f935c2a04c89b0901f1c19d50558
          name: 'FC ports discovery'
          type: HTTP_AGENT
          key: netapp.ports.fc.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: b4358be015104524811f011ddf0fb1a1
              name: '{#FCPORTNAME}: Description'
              type: DEPENDENT
              key: 'netapp.port.fc.description[{#NODENAME},{#FCPORTNAME}]'
              value_type: CHAR
              description: 'A description of the FC port.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#FCPORTNAME}'')].description.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.ports.fc.get
              tags:
                - tag: component
                  value: fc-port
                - tag: fc-port
                  value: '{#FCPORTNAME}'
                - tag: node
                  value: '{#NODENAME}'
            - uuid: e939576d865041dd8f4af24bb7811117
              name: '{#FCPORTNAME}: State'
              type: DEPENDENT
              key: 'netapp.port.fc.state[{#NODENAME},{#FCPORTNAME}]'
              value_type: CHAR
              description: |
                The operational state of the FC port. Possible values:
                startup - The port is booting up.
                link_not_connected - The port has finished initialization, but a link with the fabric is not established.
                online - The port is initialized and a link with the fabric has been established.
                link_disconnected - The link was present at one point on this port but is currently not established.
                offlined_by_user - The port is administratively disabled.
                offlined_by_system - The port is set to offline by the system. This happens when the port encounters too many errors.
                node_offline - The state information for the port cannot be retrieved. The node is offline or inaccessible.
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#FCPORTNAME}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.ports.fc.get
              tags:
                - tag: component
                  value: fc-port
                - tag: fc-port
                  value: '{#FCPORTNAME}'
                - tag: node
                  value: '{#NODENAME}'
              trigger_prototypes:
                - uuid: a985c047b9834081bf21ae50836cef46
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.port.fc.state[{#NODENAME},{#FCPORTNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.port.fc.state[{#NODENAME},{#FCPORTNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.port.fc.state[{#NODENAME},{#FCPORTNAME}])<>"online")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.port.fc.state[{#NODENAME},{#FCPORTNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.port.fc.state[{#NODENAME},{#FCPORTNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.port.fc.state[{#NODENAME},{#FCPORTNAME}])="online")'
                  name: '{#FCPORTNAME}: FC port of the Node "{#NODENAME}" has state different from "online"'
                  priority: AVERAGE
                  description: 'Something is wrong with the FC port.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/network/fc/ports?fields=node.name,name,state'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (port) {
                  	result.push({"{#NODENAME}": port.node.name, "{#FCPORTNAME}": port.name, "{#FCPORTSTATE}": port.state});
                  });
                  
                  return JSON.stringify(result);
        - uuid: b2a5b50d7e3e4592ad9627ae85487554
          name: 'SVMs discovery'
          type: HTTP_AGENT
          key: netapp.svms.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: e7fab9c64c5348158418a02b1139eb68
              name: '{#SVMNAME}: Comment'
              type: DEPENDENT
              key: 'netapp.svm.comment[{#SVMNAME}]'
              value_type: CHAR
              description: 'The comment for the SVM.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#SVMNAME}'')].comment.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.svms.get
              tags:
                - tag: component
                  value: svm
                - tag: svm
                  value: '{#SVMNAME}'
            - uuid: 6534f78b5b6c4e61b8ee0ab05bcc6fa3
              name: '{#SVMNAME}: State'
              type: DEPENDENT
              key: 'netapp.svm.state[{#SVMNAME}]'
              value_type: CHAR
              description: 'SVM state: starting, running, stopping, stopped, deleting.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#SVMNAME}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.svms.get
              tags:
                - tag: component
                  value: svm
                - tag: svm
                  value: '{#SVMNAME}'
              trigger_prototypes:
                - uuid: 7c5695fd13a4489ca1c9772f1d3376a7
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.svm.state[{#SVMNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.svm.state[{#SVMNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.svm.state[{#SVMNAME}])<>"running")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.svm.state[{#SVMNAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.svm.state[{#SVMNAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.svm.state[{#SVMNAME}])="running")'
                  name: '{#SVMNAME}: SVM state is abnormal'
                  priority: AVERAGE
                  description: 'Something is wrong with the SVM.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/svm/svms?fields=name'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (svm) {
                  	result.push({"{#SVMNAME}": svm.name});
                  });
                  
                  return JSON.stringify(result);
        - uuid: 3d2001596c2642e7a6ee09d3ac7effb3
          name: 'Volumes discovery'
          type: HTTP_AGENT
          key: netapp.volumes.discovery
          delay: 1h
          authtype: BASIC
          username: '{$USERNAME}'
          password: '{$PASSWORD}'
          item_prototypes:
            - uuid: 7218a035d00b47faae1d47955de4f61f
              name: '{#VOLUMENAME}: Comment'
              type: DEPENDENT
              key: 'netapp.volume.comment[{#VOLUMENAME}]'
              value_type: CHAR
              description: 'A comment for the volume.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].comment.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 63c67432c4dd48f3a9b2736b1d8eda60
              name: '{#VOLUMENAME}: Available size'
              type: DEPENDENT
              key: 'netapp.volume.space_available[{#VOLUMENAME}]'
              units: B
              description: 'The available space, in bytes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].space.available.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: b17602cccbb84012b6cb8edd8bd80374
              name: '{#VOLUMENAME}: Space size'
              type: DEPENDENT
              key: 'netapp.volume.space_size[{#VOLUMENAME}]'
              units: B
              description: 'Total provisioned size. The default size is equal to the minimum size of 20MB, in bytes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].space.size.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 0166239c8d4a4e42ba2f9b3b530143a8
              name: '{#VOLUMENAME}: Used size'
              type: DEPENDENT
              key: 'netapp.volume.space_used[{#VOLUMENAME}]'
              units: B
              description: 'The virtual space used (includes volume reserves) before storage efficiency, in bytes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].space.used.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: fa2ae9b23fce43a49efa9c66369cce27
              name: '{#VOLUMENAME}: State'
              type: DEPENDENT
              key: 'netapp.volume.state[{#VOLUMENAME}]'
              value_type: CHAR
              description: 'Volume state. A volume can only be brought online if it is offline. Taking a volume offline removes its junction path. The ''mixed'' state applies to FlexGroup volumes only and cannot be specified as a target state. An ''error'' state implies that the volume is not in a state to serve data.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
              trigger_prototypes:
                - uuid: b00f339ed1a9450ba096cabababcf76e
                  expression: '(last(/NetApp AFF A700 by HTTP/netapp.volume.state[{#VOLUMENAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.volume.state[{#VOLUMENAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.volume.state[{#VOLUMENAME}])<>"online")'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: '(last(/NetApp AFF A700 by HTTP/netapp.volume.state[{#VOLUMENAME}],#1)<>last(/NetApp AFF A700 by HTTP/netapp.volume.state[{#VOLUMENAME}],#2) and last(/NetApp AFF A700 by HTTP/netapp.volume.state[{#VOLUMENAME}])="online")'
                  name: '{#VOLUMENAME}: Volume state is abnormal'
                  priority: AVERAGE
                  description: 'A volume can only be brought online if it is offline. Taking a volume offline removes its junction path. The ''mixed'' state applies to FlexGroup volumes only and cannot be specified as a target state. An ''error'' state implies that the volume is not in a state to serve data.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: performance
            - uuid: cb4cfb0ce84f405ebfbf2e4a64c12ca2
              name: '{#VOLUMENAME}: Volume IOPS, other rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops.other.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.other.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: ae3142dae1294a16a4cdd0ef153f7cfb
              name: '{#VOLUMENAME}: Volume IOPS, read rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops.read.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric for read I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.read.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: b767b6185c744ddc8061bef36d16581d
              name: '{#VOLUMENAME}: Volume IOPS, total rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops.total.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric aggregated over all types of I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.total.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: ffe8787aeaa2414e82a925ab0dbfb9aa
              name: '{#VOLUMENAME}: Volume IOPS, write rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops.write.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric for write I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.write.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 64a56ed125f249308d0f525aa0a3e56d
              name: '{#VOLUMENAME}: Volume IOPS raw, other'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops_raw.other[{#VOLUMENAME}]'
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.other.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 01ee6910b06e42e294e2c80229cc960e
              name: '{#VOLUMENAME}: Volume IOPS raw, read'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops_raw.read[{#VOLUMENAME}]'
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric for read I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.read.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 5964ea1edbb74fa4a7c04a79ef776ff3
              name: '{#VOLUMENAME}: Volume IOPS raw, total'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops_raw.total[{#VOLUMENAME}]'
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric aggregated over all types of I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.total.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 77329ceefeef490e98f7d23689765c87
              name: '{#VOLUMENAME}: Volume IOPS raw, write'
              type: DEPENDENT
              key: 'netapp.volume.statistics.iops_raw.write[{#VOLUMENAME}]'
              units: '!iops'
              description: 'The number of I/O operations observed at the storage object. Performance metric for write I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.iops_raw.write.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: iops
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: fc21c2c1ff87454ea9fc59af4d0d4693
              name: '{#VOLUMENAME}: Volume latency, other'
              type: CALCULATED
              key: 'netapp.volume.statistics.latency.other[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!ms'
              params: |
                (last(//netapp.volume.statistics.latency_raw.other[{#VOLUMENAME}]) - last(//netapp.volume.statistics.latency_raw.other[{#VOLUMENAME}],#2)) /
                (last(//netapp.volume.statistics.iops_raw.other[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.other[{#VOLUMENAME}],#2) +
                (last(//netapp.volume.statistics.iops_raw.other[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.other[{#VOLUMENAME}],#2) = 0) ) * 0.001
              description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 3e80e6c55bd0497f87d4f4e71f11f0aa
              name: '{#VOLUMENAME}: Volume latency, read'
              type: CALCULATED
              key: 'netapp.volume.statistics.latency.read[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!ms'
              params: |
                (last(//netapp.volume.statistics.latency_raw.read[{#VOLUMENAME}]) - last(//netapp.volume.statistics.latency_raw.read[{#VOLUMENAME}],#2)) /
                (last(//netapp.volume.statistics.iops_raw.read[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.read[{#VOLUMENAME}],#2) +
                (last(//netapp.volume.statistics.iops_raw.read[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.read[{#VOLUMENAME}],#2) = 0)) * 0.001
              description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric for read I/O operations.'
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: ff804a090b064bfeb60183d7d7d2abe1
              name: '{#VOLUMENAME}: Volume latency, total'
              type: CALCULATED
              key: 'netapp.volume.statistics.latency.total[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!ms'
              params: |
                (last(//netapp.volume.statistics.latency_raw.total[{#VOLUMENAME}]) - last(//netapp.volume.statistics.latency_raw.total[{#VOLUMENAME}],#2)) /
                (last(//netapp.volume.statistics.iops_raw.total[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.total[{#VOLUMENAME}],#2) +
                (last(//netapp.volume.statistics.iops_raw.total[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.total[{#VOLUMENAME}],#2) = 0) ) * 0.001
              description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric aggregated over all types of I/O operations.'
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: eb2b3a3c4807415a8a88d11b19ae7fe6
              name: '{#VOLUMENAME}: Volume latency, write'
              type: CALCULATED
              key: 'netapp.volume.statistics.latency.write[{#VOLUMENAME}]'
              value_type: FLOAT
              units: '!ms'
              params: |
                (last(//netapp.volume.statistics.latency_raw.write[{#VOLUMENAME}]) - last(//netapp.volume.statistics.latency_raw.write[{#VOLUMENAME}],#2)) /
                (last(//netapp.volume.statistics.iops_raw.write[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.write[{#VOLUMENAME}],#2) +
                (last(//netapp.volume.statistics.iops_raw.write[{#VOLUMENAME}]) - last(//netapp.volume.statistics.iops_raw.write[{#VOLUMENAME}],#2) = 0) ) * 0.001
              description: 'The average latency per I/O operation in milliseconds observed at the storage object. Performance metric for write I/O operations.'
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 4fdf1c23cad2453aa00710289fde1460
              name: '{#VOLUMENAME}: Volume latency raw, other'
              type: DEPENDENT
              key: 'netapp.volume.statistics.latency_raw.other[{#VOLUMENAME}]'
              units: '!mcs'
              description: 'The raw latency in microseconds observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.latency_raw.other.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 0923b8b2933e4b309a4b751eea06353a
              name: '{#VOLUMENAME}: Volume latency raw, read'
              type: DEPENDENT
              key: 'netapp.volume.statistics.latency_raw.read[{#VOLUMENAME}]'
              units: '!mcs'
              description: 'The raw latency in microseconds observed at the storage object. Performance metric for read I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.latency_raw.read.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 48479110a92b4b3094e72882ec9d4812
              name: '{#VOLUMENAME}: Volume latency raw, total'
              type: DEPENDENT
              key: 'netapp.volume.statistics.latency_raw.total[{#VOLUMENAME}]'
              units: '!mcs'
              description: 'The raw latency in microseconds observed at the storage object. Performance metric aggregated over all types of I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.latency_raw.total.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: a6c653c4a6164de9971b22e7a28c40d9
              name: '{#VOLUMENAME}: Volume latency raw, write'
              type: DEPENDENT
              key: 'netapp.volume.statistics.latency_raw.write[{#VOLUMENAME}]'
              units: '!mcs'
              description: 'The raw latency in microseconds observed at the storage object. Performance metric for write I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.latency_raw.write.first()'
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: latency
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: f23b393e033a4285b7f5b8742b0be669
              name: '{#VOLUMENAME}: Volume throughput, other rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.throughput.other.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: Bps
              description: 'Throughput bytes observed at the storage object. Performance metric for other I/O operations. Other I/O operations can be metadata operations, such as directory lookups and so on.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.throughput_raw.other.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: throughput
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: fcbef2bcc3004ba6b1f122f00419fc2c
              name: '{#VOLUMENAME}: Volume throughput, read rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.throughput.read.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: Bps
              description: 'Throughput bytes observed at the storage object. Performance metric for read I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.throughput_raw.read.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: throughput
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 9218d4e861244353bc779fc2dfd561b9
              name: '{#VOLUMENAME}: Volume throughput, total rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.throughput.total.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: Bps
              description: 'Throughput bytes observed at the storage object. Performance metric aggregated over all types of I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.throughput_raw.total.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: throughput
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 9d1cf308b4de4b88a632eee0b5a90267
              name: '{#VOLUMENAME}: Volume throughput, write rate'
              type: DEPENDENT
              key: 'netapp.volume.statistics.throughput.write.rate[{#VOLUMENAME}]'
              value_type: FLOAT
              units: Bps
              description: 'Throughput bytes observed at the storage object. Performance metric for write I/O operations.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].statistics.throughput_raw.write.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: throughput
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 1b48c3ecd33f4acd88b57f5c76c2892c
              name: '{#VOLUMENAME}: SVM name'
              type: DEPENDENT
              key: 'netapp.volume.svm_name[{#VOLUMENAME}]'
              value_type: CHAR
              description: 'The volume belongs this SVM.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].svm.name.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
            - uuid: 540405e59a93446cbbe71b05206a50be
              name: '{#VOLUMENAME}: Type'
              type: DEPENDENT
              key: 'netapp.volume.type[{#VOLUMENAME}]'
              value_type: CHAR
              description: |
                Type of the volume.
                rw - read-write volume.
                dp - data-protection volume.
                ls - load-sharing dp volume.
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.records[?(@.name==''{#VOLUMENAME}'')].type.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: netapp.volumes.get
              tags:
                - tag: component
                  value: volume
                - tag: volume
                  value: '{#VOLUMENAME}'
          graph_prototypes:
            - uuid: 5f9bc8697c9c4e22ab55781366fbb9c4
              name: '{#VOLUMENAME}: Volume latency'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'NetApp AFF A700 by HTTP'
                    key: 'netapp.volume.statistics.latency.other[{#VOLUMENAME}]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'NetApp AFF A700 by HTTP'
                    key: 'netapp.volume.statistics.latency.read[{#VOLUMENAME}]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'NetApp AFF A700 by HTTP'
                    key: 'netapp.volume.statistics.latency.write[{#VOLUMENAME}]'
                - sortorder: '3'
                  color: F7941D
                  item:
                    host: 'NetApp AFF A700 by HTTP'
                    key: 'netapp.volume.statistics.latency.total[{#VOLUMENAME}]'
            - uuid: 2d38bfca52f14cd1a16eafef531c2a05
              name: '{#VOLUMENAME}: Volume size'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'NetApp AFF A700 by HTTP'
                    key: 'netapp.volume.space_used[{#VOLUMENAME}]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'NetApp AFF A700 by HTTP'
                    key: 'netapp.volume.space_available[{#VOLUMENAME}]'
          timeout: '{$HTTP.AGENT.TIMEOUT}'
          url: '{$URL}/api/storage/volumes?fields=name'
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var result = [];
                  
                  JSON.parse(value).records.forEach(function (volume) {
                  	result.push({"{#VOLUMENAME}": volume.name});
                  });
                  
                  return JSON.stringify(result);
      tags:
        - tag: class
          value: network
        - tag: target
          value: netapp
        - tag: target
          value: netapp-aff-a700
      macros:
        - macro: '{$HTTP.AGENT.TIMEOUT}'
          value: 5s
          description: 'The HTTP agent timeout to wait for a response from AFF700.'
        - macro: '{$PASSWORD}'
          description: 'AFF700 user password.'
        - macro: '{$URL}'
          description: 'AFF700 cluster URL address.'
        - macro: '{$USERNAME}'
          description: 'AFF700 user name.'
  graphs:
    - uuid: 840b4c30198c48e1b161d1b2deee26c8
      name: 'NetApp AFF A700: Cluster IOPS'
      graph_items:
        - color: 199C0D
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.iops.other.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.iops.read.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.iops.write.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.iops.total.rate
    - uuid: 34c781f1f9e944ca8010118483470ad9
      name: 'NetApp AFF A700: Cluster latency'
      graph_items:
        - color: 199C0D
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.latency.other
        - sortorder: '1'
          color: F63100
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.latency.read
        - sortorder: '2'
          color: 00611C
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.latency.write
        - sortorder: '3'
          color: F7941D
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.latency.total
    - uuid: 8754fe099580424b84a4b51031a09fa1
      name: 'NetApp AFF A700: Cluster throughput'
      graph_items:
        - color: 199C0D
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.throughput.other.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.throughput.read.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.throughput.write.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'NetApp AFF A700 by HTTP'
            key: netapp.cluster.statistics.throughput.total.rate
