7.4e960332b3f6c46a1956486d4f3f99fceTemplates/Server hardware7b6c6228b25f4586b42cd1bf37ff8034SMART by Zabbix agent 2SMART by Zabbix agent 2The template for monitoring S.M.A.R.T. attributes of physical disk that works without any external scripts. It collects metrics by Zabbix agent 2 version 5.0 and later with Smartmontools version 7.1 and later. Disk discovery LLD rule finds all HDD, SSD, NVMe disks with S.M.A.R.T. enabled. Attribute discovery LLD rule have pre-defined Vendor Specific Attributes for each disk, and will be discovered if attribute is present.
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/415662-discussion-thread-for-official-zabbix-smart-disk-monitoring
Generated by official Zabbix template tool "Templator" 2.0.0Zabbix7.0-0Templates/Server hardware4575af2717ec4bf78645edb84a966c84Disk discoverysmart.disk.discovery1hAND{#NAME}{$SMART.DISK.NAME.MATCHES}{#NAME}{$SMART.DISK.NAME.NOT_MATCHES}NOT_MATCHES_REGEX1dDISABLE_AFTER1hDiscovery SMART disks.643de316ae644f6d8fd92d1f03ae0360SMART [{#NAME}]: Bad_Block_RateDEPENDENTsmart.disk.attribute.bad_block_rate[{#NAME}]7dNO_DISCOVERPercentage of used reserve blocks divided by total reserve blocks.JSONPATH$.bad_block_rate.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}2a055383835247bc83745c84fdc5dea9SMART [{#NAME}]: Power_Cycle_CountDEPENDENTsmart.disk.attribute.power_cycle_count[{#NAME}]7dNO_DISCOVERThis attribute indicates the count of full hard disk power on/off cycles.JSONPATH$.power_cycle_count.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}e1fbae7fe66c453997d9aa6e6eb3b5cbSMART [{#NAME}]: Program_Fail_Count_ChipDEPENDENTsmart.disk.attribute.program_fail_count_chip[{#NAME}]7dNO_DISCOVERThe total number of flash program operation failures since the drive was deployed.JSONPATH$.program_fail_count_chip.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}abb098035cbd4c5b9e2d15c1e95d8e34SMART [{#NAME}]: Raw_Read_Error_RateDEPENDENTsmart.disk.attribute.raw_read_error_rate[{#NAME}]7dNO_DISCOVERStores data related to the rate of hardware read errors that occurred when reading data from a disk surface. The raw value has different structure for different vendors and is often not meaningful as a decimal number. For some drives, this number may increase during normal operation without necessarily signifying errors.JSONPATH$.raw_read_error_rate.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}5601bfa6a38940b6b8d695bf029f534cSMART [{#NAME}]: Reallocated_Sector_CtDEPENDENTsmart.disk.attribute.reallocated_sector_ct[{#NAME}]7dNO_DISCOVERDisk discovered attribute.JSONPATH$.reallocated_sector_ct.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}f538f4708280451eb30d20433d133012SMART [{#NAME}]: Reported_UncorrectDEPENDENTsmart.disk.attribute.reported_uncorrect[{#NAME}]7dNO_DISCOVERThe count of errors that could not be recovered using hardware ECC.JSONPATH$.reported_uncorrect.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}70ac7d6cdf29431cacf02fc716c8ab0cSMART [{#NAME}]: Seek_Error_RateDEPENDENTsmart.disk.attribute.seek_error_rate[{#NAME}]7dNO_DISCOVERRate of seek errors of the magnetic heads. If there is a partial failure in the mechanical positioning system, then seek errors will arise. Such a failure may be due to numerous factors, such as damage to a servo, or thermal widening of the hard disk. The raw value has different structure for different vendors and is often not meaningful as a decimal number. For some drives, this number may increase during normal operation without necessarily signifying errors.JSONPATH$.seek_error_rate.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}6e08c65d77ca4155b396c9615b2f45b3SMART [{#NAME}]: Spin_Up_TimeDEPENDENTsmart.disk.attribute.spin_up_time[{#NAME}]7dNO_DISCOVERAverage time of spindle spin up (from zero RPM to fully operational [milliseconds]).JSONPATH$.spin_up_time.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}e428eb3368e94dbc955f2bebf8feb202SMART [{#NAME}]: Start_Stop_CountDEPENDENTsmart.disk.attribute.start_stop_count[{#NAME}]7dNO_DISCOVERA tally of spindle start/stop cycles. The spindle turns on, and hence the count is increased, both when the hard disk is turned on after having before been turned entirely off (disconnected from power source) and when the hard disk returns from having previously been put to sleep mode.JSONPATH$.start_stop_count.valueDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentattributecomponentstoragediskname{#NAME}disktype{#DISKTYPE}c186f7ce1b8d4311997c84fd5c239819SMART [{#NAME}]: Critical warningDEPENDENTsmart.disk.critical_warning[{#NAME}]7dThis field indicates critical warnings for the state of the controller.JSONPATH$.critical_warningDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentstoragediskname{#NAME}disktype{#DISKTYPE}72f16a701cee4119b0b1865671fd448dSMART [{#NAME}]: Smartctl errorDEPENDENTsmart.disk.error[{#NAME}]7dTEXTThis metric will contain smartctl errors.JSONPATH$.errorDISCARD_UNCHANGED_HEARTBEAT1hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentstoragediskname{#NAME}disktype{#DISKTYPE}849a9d5c9b9d4b969a09ab5cf4629dedSMART [{#NAME}]: Exit statusDEPENDENTsmart.disk.es[{#NAME}]7dThe exit statuses of smartctl are defined by a bitmask but in decimal value. The eight different bits in the exit status have the following meanings for ATA disks; some of these values may also be returned for SCSI disks.
Bit 0: Command line did not parse.
Bit 1: Device open failed, device did not return an IDENTIFY DEVICE structure, or device is in a low-power mode (see '-n' option above).
Bit 2: Some SMART or other ATA command to the disk failed, or there was a checksum error in a SMART data structure (see '-b' option above).
Bit 3: SMART status check returned "DISK FAILING".
Bit 4: We found prefail Attributes <= threshold.
Bit 5: SMART status check returned "DISK OK" but we found that some (usage or prefail) Attributes have been <= threshold at some time in the past.
Bit 6: The device error log contains records of errors.
Bit 7: The device self-test log contains records of errors. [ATA only] Failed self-tests outdated by a newer successful extended self-test are ignored.JSONPATH$.exit_statusDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentstoragediskname{#NAME}disktype{#DISKTYPE}c51b609f267c45c3bcb4a3f5f40b6d35( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),8) = 8 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),8) = 8
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),8) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),8) )NONESMART [{#NAME}]: Check returned "DISK FAILING"HIGHSMART status check returned "DISK FAILING".YESscopenotice12ed61dfd27c4666883c4240a5726d06( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),1) = 1 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),1) = 1
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),1) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),1) )NONESMART [{#NAME}]: Command line did not parseHIGHCommand line did not parse.YESscopenotice9b960cb324774b3fa5e3d39aeb3141e2( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),2) = 2 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),2) = 2
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),2) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),2) )NONESMART [{#NAME}]: Device open failedHIGHDevice open failed, device did not return an IDENTIFY DEVICE structure, or device is in a low-power mode.YESscopenoticeccff1b75f69a47cdbb5a04c58d201a0f( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),64) = 64 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),64) = 64
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),64) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),64) )NONESMART [{#NAME}]: Error log contains recordsHIGHThe device error log contains records of errors.YESscopenotice69fb021abcc841b7b35cc93358ef085c( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),128) = 128 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),128) = 128
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),128) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),128) )NONESMART [{#NAME}]: Self-test log contains recordsHIGHThe device self-test log contains records of errors. [ATA only]
Failed self-tests outdated by a newer successful extended self-test are ignored.YESscopenotice4ad2fbb5b6e349f6852a489b99a2760d( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),32) = 32 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),32) = 32
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),32) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),32) )NONESMART [{#NAME}]: Some Attributes have been <= thresholdHIGHSMART status check returned "DISK OK" but we found that some (usage
or prefail) Attributes have been <= threshold at some time in the past.YESscopenotice592e647842d048e3985e65726cdc838c( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),4) = 4 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),4) = 4
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),4) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),4) )NONESMART [{#NAME}]: Some command to the disk failedHIGHSome SMART or other ATA command to the disk failed,
or there was a checksum error in a SMART data structure.YESscopenoticeec137781d51249c89d8891a35a596445( count(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2) = 1 and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),16) = 16 )
or ( bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),16) = 16
and bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}]),16) > bitand(last(/SMART by Zabbix agent 2/smart.disk.es[{#NAME}],#2),16) )NONESMART [{#NAME}]: Some prefail Attributes <= thresholdHIGHWe found prefail Attributes <= threshold.YESscopenotice805e1d6f91e741ac93e87bd7d62860d5SMART [{#NAME}]: Get disk attributessmart.disk.get[{#PATH},"{#RAIDTYPE}"]0TEXTcomponentrawcomponentstorage365f9642f2764116923bb3e014eefa22SMART [{#NAME}]: Power on hoursDEPENDENTsmart.disk.hours[{#NAME}]7dCount of hours in power-on state. The raw value of this attribute
shows total count of hours (or minutes, or seconds, depending on manufacturer)
in power-on state. "By default, the total expected lifetime of a hard disk
in perfect condition is defined as 5 years (running every day and night on
all days). This is equal to 1825 days in 24/7 mode or 43800 hours." On some
pre-2005 drives, this raw value may advance erratically and/or "wrap around"
(reset to zero periodically). https://en.wikipedia.org/wiki/S.M.A.R.T.#Known_ATA_S.M.A.R.T._attributesJSONPATH$.power_on_timeDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentstoragediskname{#NAME}disktype{#DISKTYPE}8478d6421fb044339e2118848ac6d56bSMART [{#NAME}]: Media errorsDEPENDENTsmart.disk.media_errors[{#NAME}]7dContains the number of occurrences where the controller detected
an unrecovered data integrity error. Errors such as uncorrectable ECC, CRC
checksum failure, or LBA tag mismatch are included in this field.JSONPATH$.media_errorsDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentstoragediskname{#NAME}disktype{#DISKTYPE}b6abf9b52c694600b63fce4a68fc0fbdSMART [{#NAME}]: Device modelDEPENDENTsmart.disk.model[{#NAME}]7dCHARJSONPATH$.model_nameDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentinventorydiskname{#NAME}disktype{#DISKTYPE}6ce46d274a694eac9700bd02a936f4beSMART [{#NAME}]: Percentage usedDEPENDENTsmart.disk.percentage_used[{#NAME}]7d%Contains a vendor specific estimate of the percentage of NVM subsystem
life used based on the actual usage and the manufacturer's prediction of NVM
life. A value of 100 indicates that the estimated endurance of the NVM in
the NVM subsystem has been consumed, but may not indicate an NVM subsystem
failure. The value is allowed to exceed 100. Percentages greater than 254
shall be represented as 255. This value shall be updated once per power-on
hour (when the controller is not in a sleep state).JSONPATH$.percentage_usedDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentstoragediskname{#NAME}disktype{#DISKTYPE}e2bc2b0e195446d7973037be8e41eb6flast(/SMART by Zabbix agent 2/smart.disk.percentage_used[{#NAME}])>90SMART [{#NAME}]: NVMe disk percentage using is over 90% of estimated enduranceAVERAGEscopenotice62f98419c8034f389a5be3755eac8938SMART [{#NAME}]: Serial numberDEPENDENTsmart.disk.sn[{#NAME}]7dCHARJSONPATH$.serial_numberDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componentinventorydiskname{#NAME}disktype{#DISKTYPE}7257c02f398f4338ace1eb3a07cb7362last(/SMART by Zabbix agent 2/smart.disk.sn[{#NAME}],#1)<>last(/SMART by Zabbix agent 2/smart.disk.sn[{#NAME}],#2) and length(last(/SMART by Zabbix agent 2/smart.disk.sn[{#NAME}]))>0SMART [{#NAME}]: Disk has been replacedSMART [{#NAME}]: Disk has been replaced (new serial number received)INFODevice serial number has changed. Acknowledge to close the problem manually.YESscopenotice2f5b054d7a644e029a195d17f525c191SMART [{#NAME}]: TemperatureDEPENDENTsmart.disk.temperature[{#NAME}]7d°CCurrent drive temperature.JSONPATH$.temperatureDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componenttemperaturediskname{#NAME}disktype{#DISKTYPE}cd09aebe3ca146119cdf5b977bf6b018avg(/SMART by Zabbix agent 2/smart.disk.temperature[{#NAME}],5m)>{$SMART.TEMPERATURE.MAX.CRIT}SMART [{#NAME}]: Average disk temperature is criticalSMART [{#NAME}]: Average disk temperature is critical (over {$SMART.TEMPERATURE.MAX.CRIT}°C for 5m)AVERAGEscopenoticeaaa5acb3196b481f894998c0ca5ea165avg(/SMART by Zabbix agent 2/smart.disk.temperature[{#NAME}],5m)>{$SMART.TEMPERATURE.MAX.WARN}SMART [{#NAME}]: Average disk temperature is too highSMART [{#NAME}]: Average disk temperature is too high (over {$SMART.TEMPERATURE.MAX.WARN}°C for 5m)WARNINGSMART [{#NAME}]: Average disk temperature is criticalavg(/SMART by Zabbix agent 2/smart.disk.temperature[{#NAME}],5m)>{$SMART.TEMPERATURE.MAX.CRIT}scopenotice434b338d88e041dd9b6a0b7aaa403076SMART [{#NAME}]: Self-test passedDEPENDENTsmart.disk.test[{#NAME}]7dCHARThe disk is passed the SMART self-test or not.JSONPATH$.self_test_passedDISCARD_UNCHANGED_HEARTBEAT6hsmart.disk.get[{#PATH},"{#RAIDTYPE}"]componenthealthdiskname{#NAME}disktype{#DISKTYPE}5fa97df4012e45279fb55724f617ef4alast(/SMART by Zabbix agent 2/smart.disk.test[{#NAME}])="false"SMART [{#NAME}]: Disk self-test is not passedHIGHscopenoticeSelf-test1{#DISKTYPE}nvmeLIKESelf-testNO_DISCOVERNot NVMe2{#DISKTYPE}nvmeNOT_MATCHES_REGEXREGEXPMedia|Percentage|CriticalNO_DISCOVERRaw_Read_Error_Rate3{#ATTRIBUTES}Raw_Read_Error_RateREGEXPRaw_Read_Error_RateDISCOVERSpin_Up_Time4{#ATTRIBUTES}Spin_Up_TimeREGEXPSpin_Up_TimeDISCOVERStart_Stop_Count5{#ATTRIBUTES}Start_Stop_CountREGEXPStart_Stop_CountDISCOVERPower_Cycle_Count6{#ATTRIBUTES}Power_Cycle_CountREGEXPPower_Cycle_CountDISCOVERReported_Uncorrect7{#ATTRIBUTES}Reported_UncorrectREGEXPReported_UncorrectDISCOVERSeek_Error_Rate8{#ATTRIBUTES}Seek_Error_RateREGEXPSeek_Error_RateDISCOVERBad_Block_Rate9{#ATTRIBUTES}Bad_Block_RateREGEXPBad_Block_RateDISCOVERProgram_Fail_Count_Chip10{#ATTRIBUTES}Program_Fail_Count_ChipREGEXPProgram_Fail_Count_ChipDISCOVERReallocated_Sector_Ct11{#ATTRIBUTES}Reallocated_Sector_CtREGEXPReallocated_Sector_CtDISCOVERclassstoragetargethddtargetssd{$SMART.DISK.NAME.MATCHES}^.*$This macro is used in the filter of attribute and disk discoveries. It can be overridden on the host or linked on the template level.{$SMART.DISK.NAME.NOT_MATCHES}CHANGE_IF_NEEDEDThis macro is used in the filter of attribute and disk discoveries. It can be overridden on the host or linked on the template level.{$SMART.TEMPERATURE.MAX.CRIT}65This macro is used for trigger expression. It can be overridden on the host or linked on the template level.{$SMART.TEMPERATURE.MAX.WARN}50This macro is used for trigger expression. It can be overridden on the host or linked on the template level.074166cdd4d54f7e89bd7488283ba5beSMART: OverviewTemperaturegraphprototype7220INTEGERcolumns2ITEM_PROTOTYPEitemidSMART by Zabbix agent 2smart.disk.temperature[{#NAME}]STRINGreferenceAABFBINTEGERrows5INTEGERsource_type3Power Ongraphprototype7220INTEGERcolumns2ITEM_PROTOTYPEitemidSMART by Zabbix agent 2smart.disk.hours[{#NAME}]STRINGreferenceAABFCINTEGERrows5INTEGERsource_type3