5.0
2021-09-23T09:16:55Z
Templates Users
Template SMARTMONTOOLS
Template SMARTMONTOOLS
#
# .VERSION
# 0.8
#
# .DESCRIPTION
# Author: Nikitin Maksim
# Github: https://github.com/nikimaxim/zbx-smartmonitor.git
# Note: Zabbix lld for smartctl
#
# .TESTING
# Smartmontools: 7.1 and later
#
Templates Users
SMART monitoring (smartctl)
-
Smartctl version
smartctl.version
1h
0
CHAR
SMART monitoring (smartctl)
{diff()}=1
Version of smartctl was changed on {HOST.NAME}
INFO
Smartctl storage discovery
storage.discovery
12h
{#STORAGE.SMART}
1
A
{#STORAGE.NAME}: Error сount
DEPENDENT
storage.error["{#STORAGE.CMD}"]
0
0
CHAR
HDD
SSD
NVME
SMART monitoring (smartctl)
JAVASCRIPT
if (value.search("No Errors Logged") != -1) {
return "No Errors Logged"
} else if (value.search("ATA Error Count:") != -1) {
return value.match(/(?:ATA Error Count:).+\b([0-9]+)/i)[1]
} else {
return "Not supported"
}
storage.get["{#STORAGE.CMD}"]
{str(No Errors Logged)}=0 and {str(Not supported)}=0
{#STORAGE.NAME}: SMART error status is not "No Errors Logged"
AVERAGE
YES
{#STORAGE.NAME}: Smartctl
storage.get["{#STORAGE.CMD}"]
1h;10m/1-7,08:00-21:00
30d
0
TEXT
SMART monitoring (smartctl)
JAVASCRIPT
return value.replace(/\s\(.+\)|\s\[.+\]|[\u00A0]/g, '') // Deleting data in brackets and spaces
{str("FAILING_NOW")}=1
{#STORAGE.NAME}: One or more SMART attributes are "FAILING_NOW"
AVERAGE
YES
{#STORAGE.NAME}: SMART test status is "FAILED"
{Template SMARTMONTOOLS:storage.health["{#STORAGE.CMD}"].str("FAILED!")}=1
{#STORAGE.NAME}: Test result
DEPENDENT
storage.health["{#STORAGE.CMD}"]
0
0
CHAR
HDD
SSD
SMART monitoring (smartctl)
REGEX
(?:SMART overall-health self-assessment test result:|SMART Health Status:) +\b([\S ]+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{str("FAILED!")}=1
{#STORAGE.NAME}: SMART test status is "FAILED"
AVERAGE
{#STORAGE.NAME}: Device model
DEPENDENT
storage.model["{#STORAGE.CMD}"]
0
0
CHAR
HDD
SSD
NVME
SMART monitoring (smartctl)
REGEX
(?:Vendor:|Product:|Device [Mm]odel:|Model [Nn]umber:).+ (.+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{#STORAGE.NAME}: Serial number
DEPENDENT
storage.sn["{#STORAGE.CMD}"]
0
0
CHAR
HDD
SSD
NVME
SMART monitoring (smartctl)
REGEX
(?:Serial [Nn]umber:).+ ([\d\w-]+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{diff()}=1
NONE
{#STORAGE.NAME}: Disk has been replaced (new serial number received)
INFO
YES
{#STORAGE.NAME}: ID 05 Reallocated sectors count
DEPENDENT
storage["{#STORAGE.CMD}", 05 Reallocated_Sector_Ct]
0
HDD
SSD
SMART monitoring (smartctl)
REGEX
(?:5 Reallocated|Elements in grown defect list:|5 Retired_Block_Count).+ ([0-9]+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{diff()}=1
RECOVERY_EXPRESSION
{last()}=0 or {delta(864000)}=0
{#STORAGE.NAME}: SMART reallocated sectors count has been registered
AVERAGE
YES
{#STORAGE.NAME}: SMART test status is "FAILED"
{Template SMARTMONTOOLS:storage.health["{#STORAGE.CMD}"].str("FAILED!")}=1
{#STORAGE.NAME}: ID 09 Power on hours
DEPENDENT
storage["{#STORAGE.CMD}", 09 Power_On_Hours]
0
s
HDD
SSD
NVME
SMART monitoring (smartctl)
REGEX
(?:9 Power_On_Hours|Power On Hours:|[Nn]umber of hours powered up|Accumulated power on time).+ ([0-9]+)
\1
CUSTOM_ERROR
Not supported
MULTIPLIER
3600
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{#STORAGE.NAME}: ID 10 Spin retry count
DEPENDENT
storage["{#STORAGE.CMD}", 10 Spin_Retry_Count]
0
HDD
SMART monitoring (smartctl)
REGEX
(?:10 Spin_Retry_Count).+ ([0-9]+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{delta(7d)}>0
{#STORAGE.NAME}: SMART spin retry count has been registered
AVERAGE
YES
{#STORAGE.NAME}: ID 190/194 Temperature
DEPENDENT
storage["{#STORAGE.CMD}", 190/194 Temperature_Celsius]
0
°С
HDD
SSD
NVME
SMART monitoring (smartctl)
REGEX
(?:190 Temperature|190 Airflow_Temperature|194 Temperature|Drive Temperature:|Temperature:).+ \w* (\d+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{avg(5m)}>{$TEMP_CRIT} and
{last()}<=100
RECOVERY_EXPRESSION
{avg(5m)}<{$TEMP_CRIT}-3
{#STORAGE.NAME}: Disk temperature is "CRITICAL"
AVERAGE
YES
{avg(5m)}>{$TEMP_WARN}
RECOVERY_EXPRESSION
{avg(5m)}<{$TEMP_WARN}-3
{#STORAGE.NAME}: Disk temperature is "WARNING"
WARNING
YES
{#STORAGE.NAME}: Disk temperature is "CRITICAL"
{Template SMARTMONTOOLS:storage["{#STORAGE.CMD}", 190/194 Temperature_Celsius].avg(5m)}>{$TEMP_CRIT} and
{Template SMARTMONTOOLS:storage["{#STORAGE.CMD}", 190/194 Temperature_Celsius].last()}<=100
{Template SMARTMONTOOLS:storage["{#STORAGE.CMD}", 190/194 Temperature_Celsius].avg(5m)}<{$TEMP_CRIT}-3
{#STORAGE.NAME}: ID 197 Current pending sector count
DEPENDENT
storage["{#STORAGE.CMD}", 197 Current_Pending_Sector]
0
HDD
SMART monitoring (smartctl)
REGEX
(?:197 Current_Pending_Sector|197\s+\w+_\w+).+ ([0-9]+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{delta(3d)}>0
{#STORAGE.NAME}: SMART current pending sector counter has been registered
WARNING
YES
{#STORAGE.NAME}: SMART reallocated sectors count has been registered
{Template SMARTMONTOOLS:storage["{#STORAGE.CMD}", 05 Reallocated_Sector_Ct].diff()}=1
{Template SMARTMONTOOLS:storage["{#STORAGE.CMD}", 05 Reallocated_Sector_Ct].last()}=0 or {Template SMARTMONTOOLS:storage["{#STORAGE.CMD}", 05 Reallocated_Sector_Ct].delta(864000)}=0
{#STORAGE.NAME}: SMART test status is "FAILED"
{Template SMARTMONTOOLS:storage.health["{#STORAGE.CMD}"].str("FAILED!")}=1
{#STORAGE.NAME}: ID 198 Uncorrectable errors count
DEPENDENT
storage["{#STORAGE.CMD}", 198 Offline_Uncorrectable]
0
HDD
SSD
SMART monitoring (smartctl)
REGEX
(?:Offline_Uncorrectable).+ ([0-9]+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{diff()}=1
{#STORAGE.NAME}: SMART uncorrectable sector count has been registered
AVERAGE
YES
{#STORAGE.NAME}: SMART test status is "FAILED"
{Template SMARTMONTOOLS:storage.health["{#STORAGE.CMD}"].str("FAILED!")}=1
{#STORAGE.NAME}: ID 199/218 CRC error count
DEPENDENT
storage["{#STORAGE.CMD}", 199/218 UDMA_CRC_Error]
0
HDD
SSD
NVME
SMART monitoring (smartctl)
REGEX
(?:199 UDMA_CRC_Error|199 CRC_Error_Count|Non-medium error count:|Media and Data Integrity Errors:|199 SATA_CRC_Error|218 CRC_Error_Count).+ ([0-9]+)
\1
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{last()}>100 and {delta(1d)}>0
{#STORAGE.NAME}: SMART UDMA CRC error count too high has been registered
AVERAGE
YES
{#STORAGE.NAME}: ID 231 SSD life left
DEPENDENT
storage["{#STORAGE.CMD}", 231 SSD_Life_Left]
0
%
SSD
NVME
SMART monitoring (smartctl)
REGEX
(?:231 SSD_Life_Left |Available Spare: |231\s+\w+_\w+).+ ([0-9]+)
\1
CUSTOM_ERROR
Not supported
IN_RANGE
0
100
CUSTOM_ERROR
Not supported
storage.get["{#STORAGE.CMD}"]
{last()}<=10
RECOVERY_EXPRESSION
{last()}>10
{#STORAGE.NAME}: SMART SSD life left
AVERAGE
YES
{#STORAGE.NAME}: Smartctl temperature
1A7C11
-
Template SMARTMONTOOLS
storage["{#STORAGE.CMD}", 190/194 Temperature_Celsius]
{$TEMP_CRIT}
65
{$TEMP_WARN}
55