S.M.A.R.T
Dashboard S.M.A.R.T disk SAS, SATA, SSD monitoring
S.M.A.R.T Dashboard host mashine.
grafana->graphite->collectd
#/etc/collectd/collectd.conf
```
FQDNLookup false

TypesDB "/usr/share/collectd/types.db" "/etc/collectd/types.db"

Interval 60
LoadPlugin write_graphite
<Plugin write_graphite>
	<Node "<node>">
		Host "<host>"
		Port "<port>"
		Protocol "tcp"
		LogSendErrors true
		Prefix "<prefix>."
		Postfix ""
		StoreRates false
		AlwaysAppendDS false
		EscapeCharacter "_"
	</Node>
</Plugin>

LoadPlugin syslog
<Plugin syslog>
        LogLevel info
</Plugin>

LoadPlugin python
<Plugin python>
	ModulePath "/opt/collectd/python"

	Import "smart"
	<Module smart>
#		Verbose true
		Interval 28800
	</Module>
</Plugin>
```

#/opt/collectd/python/smart.py
```
---
import os
import collectd

class Smart(object):

    def __init__(self):
        self.plugin_name = 'smart'
        self.verbose_logging = False
        self.smartctl = '/usr/sbin/smartctl'
        self.interval = 28800
        self.devices = []

    def log_verbose(self, msg):
        if not self.verbose_logging:
            return
        collectd.info('%s plugin [verbose]: %s' % (self.plugin_name, msg))

    def store(self, key, val):
        val = collectd.Values(type='gauge', plugin=self.plugin_name, type_instance=key, values=[val])
        val.dispatch()
        self.log_verbose('Sending value: %s:%s' % (key, val))

    def getsmart_sas(self, cmd):
        self.log_verbose("cmd: %s" % cmd)
        key = []
        ret = {}
        ptr = os.popen(cmd, 'r')
        while 1:
            line = ptr.readline()
            if not line:
                break
            arr = line.split()
            if len(arr) > 12:
                sss = ' '.join(arr[0:12])
                if sss == 'Number of read and write commands whose size <= segment size =':
                    ret['commands_above_seg_size'] = arr[12]
                elif sss == 'Number of read and write commands whose size > segment size =':
                    ret['commands_less_seg_size'] = arr[12]
            elif len(arr) > 9:
                sss = ' '.join(arr[0:9])
                if sss == 'Blocks read from cache and sent to initiator =':
                    ret['blocks_read_from_cache_and_sent_to_initiator'] = arr[9]
            elif len(arr) > 8:
                sss = ' '.join(arr[0:9])
                if sss == 'fast | delayed rewrites corrected invocations [10^9 bytes] errors':
                    line = ptr.readline()
                    if not line:
                        break
                    arr = line.split()
                    if len(arr) > 7 and arr[0] == 'read:':
                        ret['read_corrected_errors'] = arr[4]
                        ret['read_gb_processed'] = arr[6]
                        ret['read_uncorrected_errors'] = arr[7]
                    line = ptr.readline()
                    if not line:
                        break
                    arr = line.split()
                    if len(arr) > 7 and arr[0] == 'write:':
                        ret['write_corrected_errors'] = arr[4]
                        ret['write_gb_processed'] = arr[6]
                        ret['write_uncorrected_errors'] = arr[7]
                    line = ptr.readline()
                    if not line:
                        break
                    arr = line.split()
                    if len(arr) > 7 and arr[0] == 'verify:':
                        ret['verify_corrected_errors'] = arr[4]
                        ret['verify_gb_processed'] = arr[6]
                        ret['verify_uncorrected_errors'] = arr[7]
            elif len(arr) > 5:
                sss = ' '.join(arr[0:5])
                if sss == 'number of hours powered up':
                    ret['power_on_hours'] = arr[6]
                elif sss == 'Elements in grown defect list:':
                    ret['grow_defect_list'] = arr[5]
                elif sss == 'Blocks sent to initiator =':
                    ret['blocks_sent_to_initiator'] = arr[5]
                elif sss == 'Blocks received from initiator =':
                    ret['blocks_received_from_initiator'] = arr[5]
                elif sss == 'Accumulated power on time, hours:minutes':
                    ret['power_on_hours'] = arr[5].split(':')[0]
            elif len(arr) > 3:
                sss = ' '.join(arr[0:3])
                if sss == 'Non-medium error count:':
                    ret['non_medium_error_count'] = arr[3]
                elif sss == 'Current Drive Temperature:':
                    ret['temperature_celsius'] = arr[3]
                elif sss == 'Accumulated start-stop cycles:':
                    ret['start_stop_cycles'] = arr[3]
                elif sss == 'Accumulated load-unload cycles:':
                    ret['load_unload_cycles'] = arr[3]
            elif len(arr) > 1:
                if arr[0] == 'Vendor:':
                    key.append('_'.join(arr[1:]))
                elif arr[0] == 'Product:':
                    key.append('_'.join(arr[1:]))
                elif arr[0] == 'Serial' and arr[1] == 'number:':
                    key.append('_'.join(arr[2:]))
        return ('_'.join(key).replace('.', '_').replace('(', '').replace(')', ''), ret)

    def getsmart_sata(self, cmd):
        self.log_verbose("cmd: %s" % cmd)
        key = []
        ret = {}
        ptr = os.popen(cmd, 'r')
        while 1:
            line = ptr.readline()
            if not line:
                break
            arr = line.split()
            if len(arr) > 9:
                name = arr[1]
                val = arr[3]
                raw = arr[9]
                if   name == 'Raw_Read_Error_Rate':
                    ret['raw_read_error_rate'] = raw[1+raw.find('/'):] if '/' in raw else raw
                elif name == 'Reallocated_Sector_Ct':
                    ret['reallocated_event_count'] = raw
                elif name == 'Power_On_Hours_and_Msec':
                    ret['power_on_hours'] = raw[0:raw.find('h')]
                elif name == 'Power_On_Hours':
                    ret['power_on_hours'] = raw
                elif name == 'Power_Cycle_Count':
                    ret['power_cycle_count'] = raw
                elif name == 'Runtime_Bad_Block':
                    ret['runtime_bad_block'] = raw
                elif name == 'Temperature_Celsius':
                    ret['temperature_celsius'] = raw[0:raw.find(' ')] if ' ' in raw else raw
                elif name == 'Hardware_ECC_Recovered':
                    ret['hardware_ecc_recovered'] = raw
                elif name == 'Offline_Uncorrectable':
                    ret['offline_uncorrectable'] = raw
                elif name == 'UDMA_CRC_Error_Count':
                    ret['udma_crc_error_count'] = raw
                elif name == 'Read_Soft_Error_Rate':
                    ret['read_soft_error_rate'] = raw
                elif name == 'Used_Rsvd_Blk_Cnt_Tot':
                    ret['used_rsvd_blk_tot'] = raw
                elif name == 'Unused_Rsvd_Blk_Cnt_Tot':
                    ret['unused_rsvd_blk_tot'] = raw
                elif name == 'Media_Wearout_Indicator':
                    ret['ssd_life_left'] = val
                elif name == 'Life_Curve_Status':
                    ret['ssd_life_left'] = val
                elif name == 'SSD_Life_Left':
                    ret['ssd_life_left'] = val
                elif name == 'Start_Stop_Count':
                    ret['start_stop_count'] = raw
                elif name == 'Seek_Error_Rate':
                    ret['seek_error_rate'] = raw
                elif name == 'Reported_Uncorrect':
                    ret['reported_uncorrect'] = raw
                elif name == 'Command_Timeout':
                    ret['command_timeout'] = raw
                elif name == 'G-Sense_Error_Rate':
                    ret['g-sense_error_rate'] = raw
                elif name == 'Load_Cycle_Count':
                    ret['load_cycle_count'] = raw
                elif name == 'Reallocated_Event_Count':
                    ret['reallocated_event_count'] = raw
                elif name == 'Current_Pending_Sector':
                    ret['current_pending_sector'] = raw
                elif name == 'Total_LBAs_Written':
                    # 512b(lba) -> 1Gb
                    ret['total_writes_gib'] = str(int(raw)/2097152)
                elif name == 'Total_LBAs_Read':
                    # 512b(lba) -> 1Gb
                    ret['total_reads_gib'] = str(int(raw)/2097152)
                elif name == 'Host_Writes_32MiB':
                    # 32Mb -> 1Gb
                    ret['total_writes_gib'] = str(int(raw)/32)
                elif name == 'Host_Reads_32MiB':
                    # 32Mb -> 1Gb
                    ret['total_reads_gib'] = str(int(raw)/32)
                elif name == 'Lifetime_Writes_GiB':
                    ret['total_writes_gib'] = raw
                elif name == 'Lifetime_Reads_GiB':
                    ret['total_reads_gib'] = raw
            elif len(arr) > 2:
                if arr[0] == 'Model' and arr[1] == 'Family:':
                    key.append('_'.join(arr[2:]).split('/')[0])
                elif arr[0] == 'Device' and arr[1] == 'Model:':
                    key.append('_'.join(arr[2:]))
                elif arr[0] == 'Serial' and arr[1] == 'Number:':
                    key.append('_'.join(arr[2:]))
        return ('_'.join(key).replace('.', '_').replace('(', '').replace(')', ''), ret)

    def read(self):
        ret = {}
        cmd = '%s --scan-open' % self.smartctl
        devices = []
        self.log_verbose('Scanning devices: %s' % cmd)
        ptr = os.popen(cmd, 'r')
        while 1:
            line = ptr.readline()
            if not line:
                break
            devices.append(line)
        for line in self.devices + devices:
            self.log_verbose('Get device info: %s' % line)
            arr = line.split()
            if len(arr) > 3 and arr[-1] == 'device' and arr[0] != '#' and arr[1] == '-d':
                # SCSI template: <DEV> -d <PARAM> ... SCSI device
                # /dev/bus/0 -d megaraid,3 # /dev/bus/0 [megaraid_disk_03], SCSI device
                if arr[-2] == 'SCSI':
                    cmd = '%s -a -l background -d %s %s' % (self.smartctl, arr[2], arr[0])
                    (key, values) = self.getsmart_sas(cmd)
                    self.save(key, values)
                # SATA, ACHI and OTHER template: <DEV> -d <PARAM> ... ATA device
                # /dev/bus/0 -d sat+megaraid,14 # /dev/bus/0 [megaraid_disk_14] [SAT], ATA device
                # /dev/sdg -d sat # /dev/sdg [SAT], ATA device
                elif arr[-2] == 'ATA':
                    cmd = '%s -iA -d %s %s' % (self.smartctl, arr[2], arr[0])
                    (key, values) = self.getsmart_sata(cmd)
                    self.save(key, values)
                else:
                    raise ValueError('%s plugin: Unknown Device: %s' % (self.plugin_name, arr))
        return ret

    def save(self, key, values):
        for name, value in values.items():
            self.store('%s__%s' % (key, name), value)

    def configure_callback(self, conf):
        for node in conf.children:
            vals = [str(v) for v in node.values]
            if node.key == 'Verbose':
                self.verbose_logging = (vals[0].lower() == 'true')
            elif node.key == 'Interval':
                self.interval = float(vals[0])
            elif node.key == 'Device':
                self.devices.append(vals[0])
            else:
                raise ValueError('%s plugin: Unknown config key: %s' % (self.plugin_name, node.key))
        collectd.register_read(self.read, self.interval)
        self.log_verbose('configured with interval=%s' % self.interval)


APPSMART = Smart()
collectd.register_config(APPSMART.configure_callback)
```
Dashboard S.M.A.R.T disk SAS, SATA, SSD monitoring
{
  "__inputs": [
    {
      "name": "DS_GRAPHITE",
      "label": "Graphite",
      "description": "graphite datasource",
      "type": "datasource",
      "pluginId": "graphite",
      "pluginName": "Graphite"
    },
    {
      "name": "VAR_PREFIX",
      "type": "constant",
      "label": "prefix",
      "value": "rco.collectd",
      "description": "prefix of collectd write_graphite plugin"
    }
  ],
  "__requires": [
    {
      "type": "grafana",
      "id": "grafana",
      "name": "Grafana",
      "version": "7.0.3"
    },
    {
      "type": "panel",
      "id": "graph",
      "name": "Graph",
      "version": ""
    },
    {
      "type": "datasource",
      "id": "graphite",
      "name": "Graphite",
      "version": "1.0.0"
    },
    {
      "type": "panel",
      "id": "table-old",
      "name": "Table (old)",
      "version": ""
    }
  ],
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  },
  "description": "Dashboard S.M.A.R.T disk SAS, SATA, SSD monitoring",
  "editable": true,
  "gnetId": 12520,
  "graphTooltip": 0,
  "id": null,
  "iteration": 1592917258327,
  "links": [],
  "panels": [
    {
      "collapsed": true,
      "datasource": "${DS_GRAPHITE}",
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 0
      },
      "id": 102,
      "panels": [
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "Количество прерванных операций в связи с HDD тайм-аут.",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 24,
            "x": 0,
            "y": 1
          },
          "hiddenSeries": false,
          "id": 8,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-*__command_timeout, '^.*\\.(.*)\\.smart\\.gauge-(.*)__command_timeout$', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Command Timeout",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "short",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 24,
            "x": 0,
            "y": 9
          },
          "hiddenSeries": false,
          "id": 2,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": null,
            "sortDesc": null,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__grow_defect_list, '^.*\\.(.*)\\.smart\\.gauge-(.*)__dev_bus_0__grow_defect_list$', '\\1 - \\2 (defect)')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "B",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__offline_uncorrectable, '^.*\\.(.*)\\.smart\\.gauge-(.*)__offline_uncorrectable$', '\\1 - \\2 (offline uncorr)')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "C",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__reported_uncorrect, '^.*\\.(.*)\\.smart\\.gauge-(.*)__reported_uncorrect$', '\\1 - \\2 (reported uncorr)')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "D",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__current_pending_sector, '^.*\\.(.*)\\.smart\\.gauge-(.*)__current_pending_sector$', '\\1 - \\2 (pending)')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "E",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__reallocated_event_count, '^.*\\.(.*)\\.smart\\.gauge-(.*)__reallocated_event_count$', '\\1 - \\2 (realloc events)')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "F",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__read_uncorrected_errors, '^.*\\.(.*)\\.smart\\.gauge-(.*)__read_uncorrected_errors$', '\\1 - \\2 (read uncorr)')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "G",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__write_uncorrected_errors, '^.*\\.(.*)\\.smart\\.gauge-(.*)__write_uncorrected_errors$', '\\1 - \\2 (write uncorr)')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "H",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__verify_uncorrected_errors, '^.*\\.(.*)\\.smart\\.gauge-(.*)__verify_uncorrected_errors$', '\\1 - \\2 (verify uncorr)')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Grow Defect List and Uncorrect Offline/Reports",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        }
      ],
      "title": "Problems",
      "type": "row"
    },
    {
      "collapsed": true,
      "datasource": "${DS_GRAPHITE}",
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 1
      },
      "id": 100,
      "panels": [
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 24,
            "x": 0,
            "y": 2
          },
          "hiddenSeries": false,
          "id": 96,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": false,
            "max": true,
            "min": true,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__ssd_life_left, '^.*\\.(.*?)\\.smart\\.gauge-(.*?)__ssd_life_left$', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "SSD Life Left",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "percent",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 24,
            "x": 0,
            "y": 10
          },
          "hiddenSeries": false,
          "id": 97,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": false,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sideWidth": null,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__total_reads_gib, '^.*\\.(.*?)\\.smart\\.gauge-(.*?)__total_reads_gib$', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Total Reads",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "gbytes",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 24,
            "x": 0,
            "y": 18
          },
          "hiddenSeries": false,
          "id": 98,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": false,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sideWidth": null,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "nullPointMode": "null",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__total_writes_gib, '^.*\\.(.*?)\\.smart\\.gauge-(.*?)__total_writes_gib$', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Total Writes",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "gbytes",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "columns": [
            {
              "text": "Current",
              "value": "current"
            }
          ],
          "datasource": "${DS_GRAPHITE}",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fontSize": "100%",
          "gridPos": {
            "h": 7,
            "w": 12,
            "x": 0,
            "y": 26
          },
          "id": 93,
          "pageSize": null,
          "scroll": true,
          "showHeader": true,
          "sort": {
            "col": 1,
            "desc": true
          },
          "styles": [
            {
              "alias": "",
              "align": "auto",
              "colorMode": null,
              "colors": [
                "rgba(245, 54, 54, 0.9)",
                "rgba(237, 129, 40, 0.89)",
                "rgba(50, 172, 45, 0.97)"
              ],
              "decimals": 1,
              "link": false,
              "pattern": "/.*/",
              "thresholds": [],
              "type": "number",
              "unit": "h"
            }
          ],
          "targets": [
            {
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__power_on_hours, '^.*\\.(.*?)\\.smart\\.gauge-(.*?)__power_on_hours', '\\2 (\\1)')",
              "textEditor": true
            }
          ],
          "timeFrom": null,
          "timeShift": null,
          "title": "Power on Hours",
          "transform": "timeseries_aggregations",
          "type": "table-old"
        }
      ],
      "title": "SSD",
      "type": "row"
    },
    {
      "collapsed": true,
      "datasource": "${DS_GRAPHITE}",
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 2
      },
      "id": 17,
      "panels": [
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "Частота ошибок при позиционировании блока магнитных головок.",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 7,
            "w": 24,
            "x": 0,
            "y": 3
          },
          "hiddenSeries": false,
          "id": 7,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub(nonNegativeDerivative($prefix.$vm.smart.gauge-${device}__seek_error_rate), '.*\\.(.*)\\.smart\\.gauge-(.*)__seek_error_rate\\)', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Seek Error Rate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "short",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "Частота ошибок при чтении данных с диска, происхождение которых обусловлено аппаратной частью диска.\nДля всех дисков Seagate, Samsung (семейства F1 и более новые) и Fujitsu 2,5″ это — число внутренних коррекций данных, проведённых до выдачи в интерфейс",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 7,
            "w": 24,
            "x": 0,
            "y": 10
          },
          "hiddenSeries": false,
          "id": 6,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub(nonNegativeDerivative($prefix.$vm.smart.gauge-${device}__raw_read_error_rate), '.*\\.(.*)\\.smart\\.gauge-(.*)__raw_read_error_rate\\)', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Raw Read Error Rate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "short",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "megaraid internal",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 7,
            "w": 24,
            "x": 0,
            "y": 17
          },
          "hiddenSeries": false,
          "id": 15,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": false,
            "hideEmpty": true,
            "hideZero": true,
            "max": true,
            "min": true,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__non_medium_error_count, '^.*\\.(.*)\\.smart\\.gauge-(.*)__non_medium_error_count$', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Non Medium Error Count",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "megaraid internal",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 7,
            "w": 24,
            "x": 0,
            "y": 24
          },
          "hiddenSeries": false,
          "id": 94,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": false,
            "hideEmpty": true,
            "hideZero": true,
            "max": true,
            "min": true,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__read_corrected_errors, '.*\\.(.*)\\.smart\\.gauge-(.*)__read_corrected_errors', '\\2 (\\1) read corrected')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "B",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__write_corrected_errors, '.*\\.(.*)\\.smart\\.gauge-(.*)__write_corrected_errors', '\\2 (\\1) write corrected')",
              "textEditor": true
            },
            {
              "hide": false,
              "refCount": 0,
              "refId": "C",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__verify_corrected_errors, '.*\\.(.*)\\.smart\\.gauge-(.*)__verify_corrected_errors', '\\2 (\\1) verify corrected')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "SAS Corrected Errors Count",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "Число ошибок при чтении, по вине программного обеспечения, которые не поддались исправлению. Все ошибки имеют не механическую природу и указывают лишь на неправильную разметку/взаимодействие с диском программ или операционной системы.",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 7,
            "w": 24,
            "x": 0,
            "y": 31
          },
          "hiddenSeries": false,
          "id": 11,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub(nonNegativeDerivative($prefix.$vm.smart.gauge-${device}__read_soft_error_rate), '.*\\.(.*)\\.smart\\.gauge-(.*)__read_soft_error_rate\\)', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Read Soft Error Rate",
          "tooltip": {
            "shared": false,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "Число ошибок, возникающих при передаче данных по внешнему интерфейсу в режиме UltraDMA.",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 8,
            "w": 24,
            "x": 0,
            "y": 38
          },
          "hiddenSeries": false,
          "id": 10,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__udma_crc_error_count, '.*\\.(.*)\\.smart\\.gauge-(.*)__udma_crc_error_count', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "UDMA CRC Error Count",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "short",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "Число коррекции ошибок аппаратной частью диска (чтение, позиционирование, передача по внешнему интерфейсу).",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 7,
            "w": 24,
            "x": 0,
            "y": 46
          },
          "hiddenSeries": false,
          "id": 14,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__hardware_ecc_recovered, '.*\\.(.*)\\.smart\\.gauge-(.*)__hardware_ecc_recovered', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Hardware ECC Recovered",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "${DS_GRAPHITE}",
          "decimals": 0,
          "description": "Количество ошибок, возникающих в результате ударных нагрузок. Атрибут хранит показания встроенного акселерометра, который фиксирует все удары, толчки, падения и даже неаккуратную установку диска в корпус компьютера.",
          "fieldConfig": {
            "defaults": {
              "custom": {}
            },
            "overrides": []
          },
          "fill": 1,
          "fillGradient": 0,
          "gridPos": {
            "h": 7,
            "w": 24,
            "x": 0,
            "y": 53
          },
          "hiddenSeries": false,
          "id": 12,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": true,
            "hideZero": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {
            "dataLinks": []
          },
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "hide": false,
              "refCount": 0,
              "refId": "A",
              "target": "aliasSub($prefix.$vm.smart.gauge-${device}__g-sense_error_rate, '^.*\\.(.*)\\.smart\\.gauge-(.*)__g-sense_error_rate$', '\\1 - \\2')",
              "textEditor": true
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "G-Sense Error Rate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "short",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": "0",
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": false
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        }
      ],
      "title": "Stats",
      "type": "row"
    }
  ],
  "refresh": false,
  "schemaVersion": 25,
  "style": "dark",
  "tags": [
    "health",
    "smart",
    "disk"
  ],
  "templating": {
    "list": [
      {
        "current": {
          "value": "${VAR_PREFIX}",
          "text": "${VAR_PREFIX}"
        },
        "hide": 2,
        "label": "prefix",
        "name": "prefix",
        "options": [
          {
            "value": "${VAR_PREFIX}",
            "text": "${VAR_PREFIX}"
          }
        ],
        "query": "${VAR_PREFIX}",
        "skipUrlSync": false,
        "type": "constant"
      },
      {
        "allValue": null,
        "current": {},
        "datasource": "${DS_GRAPHITE}",
        "definition": "$prefix.*",
        "hide": 0,
        "includeAll": true,
        "label": "vm",
        "multi": false,
        "name": "vm",
        "options": [],
        "query": "$prefix.*",
        "refresh": 1,
        "regex": "",
        "skipUrlSync": false,
        "sort": 0,
        "tagValuesQuery": "",
        "tags": [],
        "tagsQuery": "",
        "type": "query",
        "useTags": false
      },
      {
        "allValue": null,
        "current": {},
        "datasource": "${DS_GRAPHITE}",
        "definition": "$prefix.$vm.smart.*",
        "hide": 0,
        "includeAll": true,
        "label": "device",
        "multi": false,
        "name": "device",
        "options": [],
        "query": "$prefix.$vm.smart.*",
        "refresh": 1,
        "regex": "/gauge-(.*)__.*/",
        "skipUrlSync": false,
        "sort": 0,
        "tagValuesQuery": "",
        "tags": [],
        "tagsQuery": "",
        "type": "query",
        "useTags": false
      }
    ]
  },
  "time": {
    "from": "now-30d",
    "to": "now"
  },
  "timepicker": {
    "hidden": false,
    "refresh_intervals": [
      "8h",
      "1d"
    ],
    "time_options": [
      "5m",
      "15m",
      "1h",
      "6h",
      "12h",
      "24h",
      "2d",
      "7d",
      "30d"
    ]
  },
  "timezone": "",
  "title": "S.M.A.R.T",
  "uid": "smart",
  "version": 94
}